Мотивация менеджеров в 1С:Управление торговлей 11




Принцип обмена данными из 1С с сайтом (на MySQL) и выдачи (публикации) этих данных по запросу.
PHP-Скрипт автоматической загрузки данных из файла данных в формате CSV в базу данных сайта работающего на WordPress.

В продолжение моей темы: 1С:Альфа-Авто Автосалон Автосервис: обмен с сайтом.
С помощью данного скрипта можно загружать в автоматическом режиме, по расписанию, данные сервисных книжек (ремонтов авто) из 1С:Альфа-Авто Автосалон Автосервис.
Также можно загружать данные в ручном режиме: для этого делается скрытая страница, где размещается специальная кнопка.
Комментарии размещенные внутри скрипта разъяснят логику и порядок действия.
Комментарии с "/////    echo" использовались для отладки.
Дополнительно создана таблица для журналирования результатов загрузки данных.
Скрипт включает в себя защиту от SQL инъекций (думаю безопасность соблюдена в полной мере).
В кратце:
1. Пишется скрипт, который запускает этот.
2. Создается регламентное задание в WordPress, по которому запускается скрипт из п.1. 
3. Этот скрипт осуществляет проверку на существование файла обмена в папке.
4. Если данные не новые, загрузка не производится.
5. Если данные новые, очищается таблица сервисных книжек.
6. Загружаются новые данные.

Собственно сам скрипт:

<?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='\

26 Comments

  1. ser6702

    Мотивацию лучше строить в зависимости от принесенной прибыли, а не объема продаж

    http://infostart.ru/public/517122/

    Reply
  2. BudkoT

    (1) реклама — штука хорошая…но мотивировать обычно нужно по тем показателям, на которые влияет мотивируемый.

    Выручка — это то, что ПРЯМО создает продажник: он торгуется, «впаривая» цены, скидки, наценки, объемы. Он СОЗДАЕТ продажувыручку.

    Прибыль — понятие растяжимое. Зависит от метода расчета себестоимости, от таланта закупщиков, поставщиков, погоды, потерь на складе, метолда транспортировки товара от поставщику.

    Т.е. если товар закупер захочет доставлять самолетом из соседнего города, то мотивация менеджера упадет?))

    Более того: показатель мотивации должен быть доступен мотивирующемуся: понятен и прозрачен.

    Поэтому, насколько я понимаю, при создании показателей мотивации каждый рядовой продажник должен быть в курсе ценовой политики, себестоиомсти, транспортных расходов, источниках закупок и т.п.

    Вам не кажется, что сильно много информации для продажника? И что на анализ всего это уйдет сколько времени, что ему бедолаге и продавать некогда будет?:) Будет после каждой продажи сидеть и смотреть: а какой бонус он получил ,почему, зачем, и отчего так дорого последнюю партию закупила Висилиса Петровна?:)

    ЗЫ: зачастую легким движением руки в оптовых торговых фирамах мотиируют сотрудников именно от прибыли. Зачем, почему — непонятно. Видимо, для недалеких умов управляющего персонала так легче планировать свой личный барышь: заработали 20%, 3 отдали менеджерам, 17 себе.

    Ой-вей, а есть же еще же и дургие расходы! Эх, что же делать? Ой, а давайте все их распределим на себестоимсоть запасов (зарплата, доставка клиенту и прочее), и тогда наша «стройная» схема «20317» не будет разрушена!))))

    Reply
  3. ser6702

    Опыт показывает от прибыли.

    Например обязательно %менеджеру должен идти только с момента когда заказ даже оплпченный забрал покупатель. Иначе быть не может. Если жтоивам не ясно — что ж. Спорить нет смысла.

    Reply
  4. ser6702

    (2) у менеджера появляется интерес обзвонить клиента чтоб он забрал заказ оплаченный со склада как минимум например.

    Все иное это с моей стороны поли вылетели и проблема на стороне мишени

    Reply
  5. BudkoT

    (5)оплаченный заказ, забранный со склада — это не прибыль. Это выручка, по продажам, по которым погашена дебиторская задолженность.

    Валовая прибыль (по продажам) — это совсем иной показатель.

    Ладно, не вижу смысла спорить непрофессионалу по вопросам мотивации (это я) с таким же непрофессионалом по этим же вопросам (вы).

    С таким же успехом мы можем обсудить проблемы освоения космоса).

    Ориентироваться же на те показатели, которые применяют большинство «управленцев», которое вообще не профессионалы ни в чем — это моветон)

    Reply
  6. user619890_igorlint

    Очень нужная штука но не работает ))

    Reply
  7. ravencrow

    (7) Создайте группы настроек финансового учета.

    Они находятся в Меню — Все функции — Справочники — Группы настроек финансового учета.

    Созданная группа Сертификат должна быть выбрана вверху в поле Группы сертификатов.

    Да и галочки должны стоять в НСИ и администрирование — Финансовый результат и контроллинг — Финансовый результат (первые 4 галочки) и Целевые показатели (1 галочка).

    Reply
  8. user619890_igorlint

    (8)Ок понял. Если заработает

    цены не будет вашему отчету

    Reply
  9. user619890_igorlint

    (8) Не совсем понятно как заполнять целевые показатели. При заполнении пишет недопустимое значение параметра параметр 1

    Если Вы сможете мне помочь. Буду при много благодарен ( не безвозмездно )

    Спасибо

    Reply
  10. ravencrow

    (10) гифка

    Reply
  11. user619890_igorlint

    (11)Круто спасибо. Сегодня буду пробовать

    jav * ascript:void(0);

    Reply
  12. user657248_d-artko

    как установить это расширение ?

    Reply
  13. user657248_d-artko

    Разобрался с установкой, пытаюсь построить группы настроек финансового учета, с дополнительными сведениями, где прописываются проценты относительно плана продаж и тд по . Никак не могу разобраться! Помогите !

    Reply
  14. ravencrow

    (14) а что именно не получается? опишите подробнее.

    Reply
  15. user657248_d-artko

    (15) В Меню — «Все функции» — «Справочник» — «Товарные категории» указать «Группу фин. учета», в которой указываются проценты на зарплату. Группа фин. учета и есть зарплатная группа, которая будет отображаться в таблице. Предварительно номенклатура должна быть рассортирована по товарным категориям, если вы хотите создавать различные зарплатные группы.

    вот с этим не могу разобраться, существуют товарные категории, товар уже распределил по категориям, открываю категорию но в табличке нет выбора группы фин. учета( хотя их тоже создал) и в карточке группы фин учета не понимаю как добавить дополнительные сведения с процентами

    Reply
  16. ravencrow

    (16) Проставьте галочки в настройках как на скриншоте в (8).

    Reply
  17. Discontica

    В чем может быть ошибка?

    Reply
  18. Discontica

    Возможно, что-то с настройкой тов. категорий.

    Но галочки как на скриншоте в (8) — проставлены

    Reply
  19. ravencrow

    (18) не установлено значение «Процент по умолчанию» и «Процент за выполнение плана» в столбцах справа.

    Reply
  20. ravencrow

    (18) Выполните пункт 7 инструкции и затем выберите значение «Процент по умолчанию» и «Процент за выполнение плана» в столбцах справа.

    Reply
  21. Discontica

    Что-то не получается с этими настройками. Приложил скриншоты

    Reply
  22. ravencrow

    (22) Что то у вас не то в столбцах справа. Должны быть в поле «Процент по умолчанию» выбрано «Процент по умолчанию на зарплату». А в поле «Процент за выполнение плана» выбрано «Процент на зарплату за выполнение плана продаж».

    Reply
  23. Discontica

    заменил — все равно ругается(

    Reply
  24. ravencrow

    (24) Проценты проставил в свойствах «Процент на зарплату за выполнение плана продаж» и «Процент по умолчанию на зарплату» в Меню — Все функции — Справочники — Группы настроек финансового учета — Дополнительные сведения ???

    Reply
  25. user719109

    Здравствуйте, Возможно ли прикрутить Вашу обработку к УТ для Балтии ред.11.0. На данный момент у нас 1С:Предприятие 8.3 (8.3.12.1714)

    Спасибо

    Reply
  26. Discontica

    Добры день! Так и не смогу поставить отчет, хотя он нужен. Можете помочь в установке и настройке за доп. плату?

    можно подключиться по тим вивер. скайп e*d.d*a*y*b*o — только звездочки убрать

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *