<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='\
Вероятно потихоньку сюда перекочуют все бояны из области IT ?
-1
2 andrey995: Для тебя — «боян», а я вот первый раз на статью «наткнулся», мне она понравилась.
Вот только забыл тебя спросить — «боян» или нет. В следующий раз только с твоего великодушного согласия буду публиковать то, что мне понравиться. 😉
зы: Весь мир «крутится» вокруг тебя?
+1
Насчет почему трудно получить 100$ от ген.дира. В статье названы 2 причины.
но они не основные. основная причина — ген.дир ОТДАЕТ СВОИ ДЕНЬГИ. Поэтому — торгуйтесь и предлагайте свои улуги людям, которые распоряжаются ЧУЖИМИ ДЕНЬГАМИ — как пример — главбух.
2 Сhe Burashka: Спасибо за комментарий. Отчасти согласен. Хотя иногда бывает наоборот, невероятно, но факт.
На днях принес в одну коммерческое:
Директор (радостно): — Нормально, когда сделаете?!!
Главбух (завывающе): — А че как дорого???…
Но все равно они согласились 🙂
А не нужно с ней боротся, в этой борьбе будет один проигравший — ВЫ, гибкость, подвешенный язык, развод руководителя через гросс бухов, или более низкие инстанции и тд и тп, ну нехочет чел платить вам 100 бакинских в месяц да и фиг с ним.
2 Drock: На счет 100 бакинских в месяц, пожалуй, соглашусь. Сам сейчас так работаю. Не хотите — не надо.
Но вот когда речь идет о крупном проекте… Мне кажется, там в любом случае придется «бороться» с чьей либо психологией — слишком много разных людей Заказчика будет в этом участвовать. А стоящие «на верху» подобных организаций-заказчиков люди в основном все… хм… «сложные» 🙂 Некоторые из них «не могут» сразу говорить «да», им нужно, чтобы их убедили.
Хотя, наверное, я уже отклонился от темы статьи.
Молодец, хорошая статья, пускай будет в каталоге, а то затеряется в недрах интернета. +1
По теме статьи: может вообще отказаться от абонентского обслуживания. Пускай вызывают на часовой ставке.
2 support:
> Молодец, хорошая статья, пускай будет в каталоге, а то затеряется в недрах интернета. +1
За плюсик спасибо, а кстати, где он (плюсик)? ;)))
> может вообще отказаться от абонентского обслуживания. Пускай вызывают на часовой ставке.
Абонентское обслуживание дает некоторую стабильность: одной стороне — в затратах, другой стороне — в поступлениях.
Стабильность может быть и в вызовах. Все дело в количестве клиентов. Просто я хотел сказать, что здесь франч пытается обеспечить себе стабильность за счет клиента, а не счет организации своей деятельности.
Чтобы быть конкуретноспособным, необходимо не навязывать абонентское обслуживание клиенту, раз уж ему психологически это неприемлимо. Зачем с ним бороться, лучше с ним согласится. Но обеспечить прибытия специалиста по вызову в течении часа, по ставке 25$. Так и договорится. Руководитель понадеется на то, что вызывать не придется, а раз уж пришлось, то не жалуйся, как договорились, так и будет. В течении часа приезжает специалист. Берет 25$ за вызов и 25$ за каждый час работы. Клиент несколько раз повызывает, и сам спросит о скидках. А лучше ему дать дисконтную накопительную карту, чтобы чем больше вызывает, тем меньше для него час будет стоить. В следующий раз будет звонить только вам, т.к. у вас час для него дешевле, чем у других.
А абонентская плата, это торговля воздухом.
> А абонентская плата, это торговля воздухом.
Не согласен. Но нет времени приводить аргументы. Тем более, что они в любом случае будут субъективны, как с моей, так и Вашей стороны 😉
Если абонентское обслуживание случается регулярно — рано или поздно вашему спецу предложать поработать на фирму.
2 Сhe Burashka: > Если абонентское обслуживание случается регулярно — рано или поздно вашему спецу предложать поработать на фирму.
Причины:
1. Абонентское обслуживание стоит значительно больше месячной зарплаты специалиста (скажем, для нашей местности, 35000р в месяц и более).
2. Клиенту требуется постоянное наличие специалиста.
3. Клиент — полный идиот, и не может подсчитать затраты на содержание своего специалиста.
Если же имеется ввиду — просто поработать «налево», помимо фирмы, то это не зависит от абонентки. И при разовых вызовах поступают такие же предложения, но это уже дело контроля рабочего времени специалиста. Это уже совершенно другая глобальная тема. Единственное, что можно сказать, если спец захочет работать «налево», то он будет это делать. Контролировать специалиста абсолютно — не реально. Две меры предосторожности со стороны фирмы: хорошая зарплата, чтоб спец ценил свою работу, и немедленное увольнение в случае работы «налево».
Хорошая статья,покажу другану он работае во франче,манагером отдела сопровождения
Хорошая статья. Согласен полностью. Сам общался с подобными клиентами. К описанным категориям клиентов хочу добавить таких: «Нам срочно! Вы нам нам сделайте, а с оплатой решим потом, в рабочем порядке …» . Очень вредная категория, считающая себя «умней» всех, хотя легко нейтрализуемая.
(0) А вы знаете почему Вас покупают?
PS Опишите как бы Вы покупали себе крутой телевизор? Единой суммой? Арендной платой? Вы бы изучили интернет? Вы бы послушали друга? Вы бы произвели математические расчеты?
Причины: 1. Абонентское обслуживание стоит значительно больше месячной зарплаты специалиста (скажем, для нашей местности, 35000р в месяц и
У Вас ошибка. Получается, что «Абонентское обслуживание стоит 35000р в месяц» 🙂
Клиент: «Что надо сделать, чтобы наши компьютеры никогда не ломались?»
Техник: «Не включайте их и тогда они будут работать ВЕЧНО!»
😎
Уффф… какое счастье что я не работаю более во франче, а в конкретной фирме на своем месте 🙂 — ей богу устаешь от беготни по клиентам, а выплачивают тебе копейки:) — и при этом почему то директор франча реально считает себя правым выплотить только десятую часть (хорошо если десятую) от того что ты заработал для фирмы. Или ещё другой нюанс — если у тебя есть сертификат 1С то ЗП твоя раза в 4 выше — хм.. а зачем он мне нужен если опыта моего напрмеир хватает на 4-х сертифицированных, если клиент звонит и говарит пришлите мне пожалуйста того то — с другими мы работать не хотим — потому что проверили, помтоу что знают — сделаю все быстро и качественно… Впрочем это вообще другая история 🙂 что то нахлынули грустные воспоминания про работу во франче 🙂
Да, готов подписаться почти под каждым словом)
(18) но опыт работы во франче тоже чего то стоит.
2 Сhe Burashka: Спасибо за комментарий. Отчасти согласен. Хотя иногда бывает наоборот, невероятно, но факт.
На днях принес в одну коммерческое:
Директор (радостно): — Нормально, когда сделаете?!!
Главбух (завывающе): — А че как дорого???…
Но все равно они согласились
Главбух — выполняет функции финдиректора или бюджетного офицера!
Тема интересная. Чаще всего так и бывает в начале платить дорого, а как что случись то не вопрос все заплатим только сделайте.
теме +
з.ы.
правильно: Алгори́тм Ле́мпеля — Зи́ва — Ве́лча
Спасибо за отличную статью! Эмоционально, видимо была написана в период переговоров с одним из трудных клиентов.
Пойду народ, особенно, из тех кто пользуется архиваторами, поспрашиваю, что такое алгоритм Лемпеля-Зива-Уэлча, а то иш…