Товарный чек — внешняя печатная форма для Управление Торговлей 11, УНФ 1.2, Розница 2




Принцип обмена данными из 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='\

44 Comments

  1. Поручик

    Код обработки и её служебные функции пока не прокомментированы.

    Немного попозже сделаю нормальную статью по разработке печатных форм для УТ 11, так как сам ещё толком не разобрался. В частности непонятно, как заместить штатную форму подключаемой, как это сделано в УТ 10.3.

    Reply
  2. Воронкин

    А ВПФ товарный чек по УТ 10.3 есть? Поделитесь.

    Reply
  3. Поручик

    За деньги поделюсь.

    Reply
  4. Поручик

    + Добавлена форма для тестирования печатной формы с претензиями на универсальность (см. скриншот). В режиме предприятия открыть через меню Файл, выбрать какой-либо объект, кликнуть «Выполнить».

    —-

    Немного попозже сделаю униве

    Reply
  5. Воронкин

    За деньги поделюсь.

    ага щщас, все брошу…

    Reply
  6. Поручик

    Если такой умник, делай сам, чего раскудахтался.

    Reply
  7. Поручик

    Добавил форму для УНФ 1.2

    Reply
  8. Леонов Александр

    (1) Очень интересно. Хорошая вещь. Сразу многое стало понятно.

    Я так понимаю что и механизма «Параметры обработки» в УТ 11 пока не реализован?

    Reply
  9. Поручик

    (8) Здесь речь идёт даже не про УТ 11, а БСП, так механизм внешних печатных форм/обработок/отчетов это её функционал. Вот передаваемых параметров там нет.

    Reply
  10. Поручик

    Некоторые изменения в модуле обработки.

    В будущей УТ 11.0.6 (на момент написания поста доступной только как тестовая) изменились некоторые используемые процедуры и функции, часть добавлена, часть перемещена в другие общие модули.

    Модуль обработки переработан для универсальности.

    Reply
  11. Slim_87

    На УНФ релиза 1.3.1.4 не взлетает сообщает ошибку {ВнешняяОбработка.ТоварныйЧек.МодульОбъекта(56,12)}: Переменная не определена (ФормированиеПечатныхФорм) 😮 а я так надеялся

    Reply
  12. Поручик

    (11) Самому допилить религия не позволяет? Если сильно надо, могу за деньги сделать.

    Reply
  13. Slim_87

    Я просто предоставил инфу

    Reply
  14. Поручик

    >>> а я так надеялся

    , что забесплатно сделают и спасибо скажут.

    Reply
  15. sergey_irk

    На УНФ релиза 1.3.1.4 действительно выдает ошибку «ВнешняяОбработка.ТоварныйЧек.МодульОбъекта(56,12)»: Переменная не определена (ФормированиеПечатныхФорм)

    а так хотелось попробовать

    Reply
  16. Поручик

    (15) Знаю. Всё жду смелого человека, который бы решился профинансировать доработку. Всем жалко несчастные триста рублей, а мне жалко забесплатно тратить полчаса времени.

    Reply
  17. Поручик

    (15) А может не ту форму скачали? Там их две, если у вас зрение слабое.

    Reply
  18. fishca

    (17)на 1.3.2.5 твоя обработка падает с сообщением на скриншоте:

    Reply
  19. Поручик

    (18) Жду поста вида: скажи номер телефона, кину деньги, только доработай эту с.раную обработку.

    Reply
  20. Поручик

    Написано русским по белому: Тестировалась на релизе УТ 11.0.4.6, УТ 11.0.5.4, УТ 11.0.6.3, УНФ 1.2.1.

    Где тут слова про УНФ 1.3.2.5?

    Reply
  21. blackbabay

    Сколько и куда, чтобы можно было распечатать из «Реализации товаров и услуг»? И привинтить снизу стандартное гарантийное обязательство?

    Reply
  22. Поручик

    (22) Пишите в приват, там скажу. От вас точное название конфигурации, текст стандартного гарантийного обязательства

    Reply
  23. Поручик

    Добавлен вариант для УТ 11.0.7.8

    Reply
  24. Nika-cat

    Спасибо интересно а когда статью для печатных форм

    Reply
  25. Поручик

    (29) Забесплатно лень.

    Reply
  26. Olejkee

    хорошая обработка. лишней не будет

    Reply
  27. vertkov2010

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

    Reply
  28. Поручик

    (32) Это косяк не обработки, а БСП.

    Reply
  29. deadman66

    Протестировал кто-нибудь на УТ 11.0.7.8, в частности печать товарного чека из реализации товаров и услуг?

    Reply
  30. Поручик

    (34) Из реализации в любом случае работать не будет. И вообще разуй глаза и внимательно почитай описание, для чего эта ВПФ.

    Reply
  31. deadman66

    (35) упс, не заметил что для ккм. прочитал вот это:

    «blackbabay 10.10.11 19:17

    Сколько и куда, чтобы можно было распечатать из «Реализации товаров и услуг»? И привинтить снизу стандартное гарантийное обязательство?»

    и подумал что уже реализовано. Т.е. вопрос от blackbabay повис в воздухе или … ?))) (сколько и куда?)

    Reply
  32. Поручик

    (36) Напишите в приват, что нужно конкретно. Тому человеку я что-то ещё дорабатывал. Деньги предпочтительно на яндекс-кошелёк, если нет возможности, то на телефон.

    Reply
  33. deadman66

    (37) ок, кину ссылку заинтересованному человеку, пусть общается напрямую.

    Reply
  34. Поручик

    Нашёл на диске форму для Розницы 2 и решил вывалить до кучи.

    Reply
  35. Altek_nk

    Дважды пробывал скачать. Списалось каждый раз 1 стартмани, но ничего не загрузилось.

    Reply
  36. Поручик

    (42) Скачайте с моего сайта. Найдите в гугле по заголовку.

    Reply
  37. JoeLan

    для 11.2 будет работать?

    Reply
  38. Поручик

    (44) Данная печатная форма разработана как пример или шаблон внешней печатной формы для Управления торговлей, редакция 11.

    Reply
  39. ogre2007

    работает, написано очень качественно, респект

    Reply
  40. Поручик

    Интересно, кто-нибудь помнит, что при скачивании выдаётся сообщение, что все программы для личного использование и передача их другому является нарушением правил. А тут чел нагло говорит, что удалят строку и считает программу своей. И ещё жалуется, что разработчик ставит свою фамилию, вот же гад и из-за это не удаётся продать чужую обработку.

    Reply
  41. 1167

    Сергей, добрый день!

    У меня при установке, выдает ошибку:

    Reply
  42. Поручик

    (53) Товарный чек для УТ 11.epf — для Управление Торговлей 11.0.7.2 и ранее.

    Ещё вопросы есть?

    Reply
  43. 1167

    Так релиз Управление торговлей, редакция 11.2 (11.2.3.143) (http://v8.1c.ru/trade/)

    Copyright © ООО «1C-Софт», 2003-2016. Все права защищены

    (http://www.1c.ru)

    Reply
  44. linnikav89

    поставил обработку Без скидок Розница 2.2 , но скидки в чеки остались, подскажите как их удалить?

    Reply

Leave a Comment

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