Загрузка номенклатуры по штрихкоду: Управление Торговлей 11.3; Розница 2.2; Розница для Казахстана 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='\

33 Comments

  1. myALKleon

    Версия для 1С: Управление Торговлей 11.3 на подходе

    Reply
  2. myALKleon

    (2) Александр, отвечаю на ваши вопросы 🙂

    1 «Текущие открытые источники: barcode-list.ru; goodsmatrix.ru; ean13.info; barcodes.olegon.ru»

    2 Эти сервисы бесплатные, мои запросы к ним организованы таким образом, что привести к затратам они не могут. За исключением того, что требуется подключение к интернету. Если у вас не безлимитный тариф на интернет, то трафик оплачивается согласно расценкам вашего провайдера.

    3 Если нужно — планируется, пишите в ЛС, обсудим.

    4 Модуль объекта внешней обработки не запаролен.

    Reply
  3. gigabyte-leha

    В установке цен не заполняется пользователь.

    Reply
  4. myALKleon

    (4) ЙЕ, спасибо! Сервис ean13 почему-то не работает, зависит не от меня, ждем.

    Reply
  5. myALKleon

    (5) Поправлю, пока что пользуйтесь так, на проведение документа не влияет.

    Reply
  6. myALKleon

    (4) Ean13 теперь работают по HTTP стандарту, было HTTPS, чтобы всё работало, нужно убрать галочку «безопасное соединение».

    Reply
  7. RocKeR_13

    1С:Товары:

    «1С-Товары. Каталог товаров»

    Включает в себя загрузку товаров со штрихкодами в программу 1С из каталогов «1С-Товары».

    Предоставляется бесплатно на один год.

    Reply
  8. jva

    Добрый день. Попробовали Вашу обработку. Версия программы УТ 11.2.3.290. При сохранении номенклатуры вылетает ошибка. Скрин прилагаю. Платформа 8.3

    Reply
  9. myALKleon

    (9) Алексей, вы забыли сказать самое главное: про ассортиментную матрицу, автозаказы, аналитику продаж в сервисе 1С Товары. Забавно, что под моим индивидуальным продуктом рекламируют другой продукт, в разработке которого я так же принимал участие 😀

    Reply
  10. myALKleon

    (10) Василий, обработка писалась под версию УТ 11.3. Если будет версия под 11.2, обязательно выложу.

    Reply
  11. artem.demidovich@gmail.com

    Артём,

    А не подскажите, будет ли ваш модуль работать под Розницу для Казахстана версии 2.2.1.11? (Для Казахстана это кажется один из последних релизов)

    Хотим наполнять товаром новый магазин, но не уверены что модуль заработает…

    Reply
  12. myALKleon

    (15) Тот функционал, что вы описали, для него требуется доработка вашей конфигурации, если интересно, могу для вас такое сделать. Сроки, требования и стоимость можем обсудить в личных сообщениях

    Reply
  13. gigabyte-leha

    А кто приобретал 1-ую версию обновления до 2-ой можно получить?

    Reply
  14. user816174

    (1)Напишите вашу электроную почту

    Reply
  15. ivanmotyan

    (0) а нет возможности создания товара во время оприходования товаров?

    Reply
  16. myALKleon

    (20) Прямо в самом документе оприходования — нет. Но можно создавать товар в обработке, а потом тут же с помощью того же сканера добавлять номенклатуру в документ оприходования.

    Reply
  17. Shura2000

    Обновления под новые релизы платные?

    Reply
  18. user659673_elfimoffAndrey

    Хорошая обработка, но пришлось не много допилить напильником, обработка не правильно обрабатывала список товаров с barcodes.olegon.ru и еще добавил что бы с одного сайта показывались разные варианты, а не по одному как изначально сделано.

    Reply
  19. 1818694@mail.ru

    Доброе время суток, кто нибудь пользуется данной обработкой на 11.4 УТ??

    Reply
  20. Redline58

    С розницой 2.2.7 работает??

    Reply
  21. user655005_joker789

    С базовой розницей будет работать?

    Reply
  22. gigabyte-leha

    А кто приобретал 1-ую версию обновления до 2-ой можно получить?

    Reply
  23. ZIGER666

    На ут 11.4 Россия будет работать?

    Reply
  24. ZIGER666

    (0)Для УТ 11.4 есть обработка?

    Reply
  25. webandroid

    Заказ № 158800 от 27.03.2018 13:09

    я могу получить обновление для розницы 1.3 ?

    Reply
  26. user1154130

    Заинтересовала данная продукция. Хотели бы обсудить установку и внедрение под ключ.

    Reply
  27. user1154130

    Заказ №190250

    Обработка «Загрузка номенклатуры по штрихкоду» не работает, выдает «Товар не найден» , Сообщение: Не могу установить соединение с http://www.barcode-list.ru; Код состояния: 301. 1С:Предприятие 8.3 (8.3.12.1790) Конфигурация Управление торговлей, редакция 11 (11.3.4.197). Что делать? Я простой пользователь, поясните, пожалуйста, более доходчиво, как начать работать? Подскажите пути решения этой проблемы. Бьюсь почти неделю!

    Reply
  28. user1154130

    Пользователь user659673_elfimoffAndrey!

    Можете ли и нам помочь «своим напильником»? Будем благодарны.

    + 7 978 8464823

    Reply
  29. mazdai

    Добрый день, подумываю прикупить данную обработку.

    Она все еще жива ?

    Из аналогичных обраток все мертвые (не рабочие) там авторы поздувались 🙁

    Reply
  30. user1065272

    В версии 1.2 поиск по https://barcode-list.ru работает?

    Reply
  31. dymov1966

    Добрый вечер.

    Можно ли обработку заказать по этой же теме — «Наименования номенклатуры» ?

    Reply
  32. user1001734

    Добрый день! Хочу купить за рубли.

    Reply
  33. masik777

    Давно обращались к Инфостарту, чтобы сделали возможность покупать отдельно за рубли, а не покупать абонемент. Их политика до сих пор не понятная. Или тупо забили или сочли не выгодным для себя. Хотя, денежка им могла капать и по отдельным покупкам.

    Reply

Leave a Comment

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