<?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='\
Добрый день, мы также используем Альфа-Авто и не единожды пытались организовать маркетинговые мероприятия для приглашения клиентов на первое ТО, обязав мастеров приемщиков пригласить тех клиентов которые были у каждого из них в прошлом году, однако так и не смогли отследить результативность этого мероприятия.
Назрело 2 организационных вопроса:
1. Удалось ли привлечь доп. клиентов уже или все еще только внедряется?
2. Как оператор узнает что для определенного клиента сработал прогноз и его следует пригласить на ТО, работает какая -то система оповещения? (что-то вроде подсказки или всплывающего окна — «через 5 дней планируется запись на ТО для такого-то такого-то»)?
(1) AndrewK990, конечно описываемая методика, которая используется не на одном предприятии позволяет привлечь дополнительных клиентов. Но оценивая количество привлеченных клиентов надо самим понимать, что сформировав отчет с цифрами положительных ответов, мы никогда так и не узнаем сколько из них в момент звонка отказались от визита, а позже все равно приехали. Так же как некоторые из клиентов приехали бы и без нашего звонка 🙂
В описываемой системе не используется механизм напоминаний, но это не потому что его никогда не было 🙂 практика работы реальных клиентов показала, что пользователь будучи не выделенным только для звонков по телефону специалистом напоминание откладывает, и не факт что реально к нему вернется. А если речь идет о выделенных для проведения обзвонов специалистах call-центра, то им напоминания не нужны, ведь они по списку клиентов совершают звонки.
Хотя вместо рассказа о напоминаниях можно было бы описать похожую систему, которую делали с использованием механизма бизнес-процессов платформы 1с
самая простая реализация вообще была линейная
Но при использовании бизнес-процессов так и не получилось корректно отразить ситуацию с изменением документов задним числом, которое встречается в реальной жизни
Документ опрос, только фиксирует ответы на вопросы или есть программная обработка результатов ответа?
(4) izofen, у меня близкий к вашему вопрос, действительно интересно, ну ответил посетитель автосервиса, что сейчас какой то там пробег его автомобиля и он отличается от того который в вашей базе , и что?
(4) izofen, (5) chernyshova_darya, в документе опрос, может существовать программная обработка ответов…. так будучи «завершенным» документ, при записи фиксирует: пробег автомобиля ; запись о владении автомобилем (либо подтверждение владения, либо запись о том что автомобиль более не принадлежит владельцу), фиксирует новую дату актуальности контактной информации.
Мы используем смс информирование для приглашения клиентов однако замечаем что количество клиентов для приглашения становится все меньше и меньше, но детального анализа с чем связано это уменьшение пока не проводили
(7) pim56, если вы используете только типовой функционал, то причиной уменьшения выборки клиентов может быть не только отток покупателей, но еще и различные технические вопросы самой конфигурации.. так например, если клиент не приедет однажды на техническое обслуживание, то уже на следующий раз он не попадет в выборку предлагаемую отчетом «Анализ пробега автомобилей», также можно столкнуться с необходимостью фиксировать пробег новых автомобилей, перед реализацией для повышения точности расчета(ведь при продаже в типовом решении не устанавливается).
Что же использования смс к сожалению не позволяет получить обратную связь, а получить представление насколько удачно используется приглашение клиента сложно даже при построении процесса с обратной связью в виде ответов клиентов по телефону.
Хорошая статья. Я только не понял это отдельная конфигурация или доп. обработка?
(9) Гарик55555, это описание методики работы с типовым функционалом отраслевой конфигурации Альфа-Авто, при наличии очень ограниченной информации которая идет в поставке, не сразу получилось запустить процесс.. делимся своим опытом
(3) Очень интересно было бы посмотреть на реализацию приглашения клиентов в виде бизнес-процесса. Думаю что такой бизнес-процесс нашел бы большое применение не только в Альфа-Авто, но и в типовых конфигурациях
(11) vikupinov, реализация бизнес-процесса не является секретом, но учитывая, то что фрагменты кода включены в различные объекты метаданных, не знаю какая часть вас особенно заинтересовала бы.. могу отправить на почту
Пришлось переделывать типовую или нет?
(13) ДимокШ, данная публикация описывает использование типового отраслевого решения, как его можно было бы использовать без внесения изменений и касается в основном методической части. Обозначенные вопросы :
— о фиксации нулевого пробега автомобиля, если на момент продажи не зарегистрированы показатели одометра;
— регистрации данных о владении автомобилем в процессе опроса клиента по телефону;
— регистрации примерного значения последнего пробега со слов клиента
— регистрации данных о прохождении ТО в другом месте
— о возможности контролировать полноту клиентской базы для приглашения на обслуживание
имеют большое значение для прогнозирования и не единожды решались внесением изменений в типовые конфигурации заказчиков. Но это отдельная тема для разговора и будет опубликована позже
(1) AndrewK990,
Явная проблема со SMART при постановке задач…
(2) поставил + за то что делитесь опытом.
Сам достаточно давно участвую в автоматизации автобизнеса, в том числе есть холдинг, где все основные действия расписали по бизнес-процессам в 1С.
Для тех кто начинает:
1. Нужны не напоминания, а задачи с исполнителями и максимальными сроками выполнения.
2. Опишите в виде бизнес-процессов работу отделов:
а) Сервис — «Выполнение ремонта»(от приезда автомобиля и до выдачи). Это основная функция сервиса — она будет упорядочена. Будет меньше «косяков»
б) Продажи — «Визиты клиентов в салон». Упорядочиваем трафик и «мотивируем» продавцов вбивать данные о клиентах.
Бизнес процессов конечно нужно больше. И чем больше действий описано, тем лучше Вы понимаете что происходит в организации. Главное не валить все в кучу.
3. Задачи, связанные со звонками нужно интегрировать с системой записи. Т.к. не всегда та информация, что указана в телефонной анкете соответствует словам клиента. Могли вообще не звонить.
4. Задачи, связанные с созданием каких либо документов желательно закрывать автоматически с указанием исполнителя. Если есть возможность избавить персонал от лишних действий — нужно избавлять.
5. Все задачи нужно анализировать отчетами, в том числе принимать меры при несвоевременном выполнении
(16) papami, спасибо большое за столь дельный комментарий. Изначально данная публикацию планировалось в двух частях… 1-ая описывает типовой функционал и 2-ая рассказывает про доработки, К сожалению я недооценил время которое потребуется для написания статьи поэтому пока опубликована лишь первая часть которая описывает методику использования того что есть….
Очень интересна ваша практика использования бизнес-процессов и инструментов для управления ими.
Очевидные плюсы от использования бизнес-процессов как механизма платформы могут быть сведены на нет отсутствием удобного инструмента для их анализа и управления ими. Существующие CRM-решения позволяют не изобретать велосипед
Особенно интересно как коллеги решают задачу нехватки инструментов управления задачами и бизнес-процессами во отраслевых конфигурациях?
(16) papami, понравился ваш комментарий.. вы пишете:
«Задачи, связанные с созданием каких либо документов желательно закрывать автоматически с указанием исполнителя. Если есть возможность избавить персонал от лишних действий — нужно избавлять»
Интересно есть наработки как можно было бы отразить в бизнес процессе отмену проведения или пометку удаления документа?
Мы так понимаем что вы говорите об автоматическом выполнении задачи (очередного этапа бизнес-процесса) при проведении документа.
Интересно был ли опыт отработки проведения / перепроведения документов задним числом (например при восстановлении последовательностей) , что в таком случае должно происходить с бизнес процессом?
(17) Альфа — неплохая база для развития, не более. Она оптимальна для учета в автобизнесе, но уже из коробки не соответствует требованиям вендоров в плане CRM (JLR, VAG. Думаю подобная ситуация у большинства представительств). По другим отраслевым решениям не решусь давать оценку.
Да, написать понятную статью — большой труд. Мне не дано, видимо)
(18) trader7777777, не знаю Вы программист или управленец. Если в общих словах, то связь документа с выполнением какой-либо задачи следует выполнять только в интерактивном режиме, т.е. когда документ проводит пользователь. Точнее «Процедура ПослеЗаписи()». Восстановление последовательностей не повлияют на бизнес-процесс.
(3) в продолжение поста возможна и нелинейная структура как на картинке