Групповое создание штрихкодов номенклатуры (только для УНФ)




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

25 Comments

  1. topline

    пишет ошибку «Метод объекта не обнаружен (ПолучитьштрихКодПоКоду)

    Reply
  2. Erofeevgv

    (3)Какая версия программы?

    Reply
  3. topline

    Управление нашей фирмой, редакция 1.6 (1.6.14.86)

    Reply
  4. Erofeevgv

    (5) Проверю. Может метод переименовали

    Reply
  5. topline

    (6)а как скоро?

    Reply
  6. satan.dionis

    Григорий здравствуйте !

    выдает ошибку, может чего упустил ?

    Reply
  7. Erofeevgv

    (8) В последних версиях изменились некоторые типовые функции.

    Выложил другую обработку.

    Reply
  8. Erofeevgv

    (7) если еще актуально….

    В последних версиях изменились некоторые типовые функции.

    Выложил другую обработку.

    Reply
  9. user1019092

    Здравствуйте!

    Версия1С:УНФ 8. Полиграфия 2 (1.6.14.89)

    Обработка не работает.

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

    Reply
  10. Erofeevgv

    (11) Добрый день.

    У вас отраслевое решение. Видимо часть функций из Типовой УНФ отсутствуют или изменены.

    Боюсь я вам тут ничем не помогу. Можно было бы сделать обработку специально для этой конфигурации — но у меня нет дистрибутива этой программы.

    Reply
  11. user1019092

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

    Reply
  12. Erofeevgv

    (13) В личку написал

    Reply
  13. Erofeevgv

    (13) Наверное возможно. На этот вопрос пусть отвечают Модераторы. Я готов вернуть потраченное

    Reply
  14. user897885

    Управление нашей фирмой, редакция 1.6 (1.6.14.96), скачал обработку для редакции 14.86. Не корректно работает с характеристиками. При заполнении номенклатуры многократно дублирует товар по количеству характеристик, имеющиеся штрихкоды указывает вообще не от своих характеристик. Создавать новые ШК даже не рискнул.

    Reply
  15. Erofeevgv

    (16) Посмотрю на днях, отпишусь

    Reply
  16. user897885

    Сколько дней должно пройти, чтобы я уже стал волноваться?

    Reply
  17. Erofeevgv

    (18) Поправлено

    Reply
  18. user897885

    Спасибо! А вы можете сделать обработку, которая будет создавать штрихкоды не только EAN-13, при перемещении товаров между поставщиками-покупателями-оптовиками широко используется баркод Code-128, но 1с его упорно игнорирует и я не смог найти на просторах интернета Обработки по созданию (генерации) штрихкодов «не EAN-13»? Было бы не жалко купить такую обработку. Подобные вопросы встречаются, а ответов нет.

    Reply
  19. Erofeevgv

    (20) Хорошая идея.

    Пока ничего не могу сказать. Если время появиться — попробую сделать.

    Reply
  20. user897885

    Я извиняюсь, надо было написать сразу, НО, теперь обработка перестала видеть штрихкоды товара без характеристик и упорно заполняет таблицу таким товаром при условии отбора, что вывести надо товар без штрихкода.

    Reply
  21. Erofeevgv

    (22) Поправлено. Действительно был косяк

    Reply
  22. user723797

    Привет, подскажи у нас УНФ 1.6.16.204 будет ли работать твоя обработка, если нет то какую другую нужно использовать ?

    Reply
  23. Erofeevgv

    (24) Надо проверять. Пока не могу сказать. По идее не должно. Из всей линейки релизов УНФ версии 1.6 только 1 раз пришлось видоизменять обработку, потому что изменили структуру регистра. Но это бывает крайне редко. Можешь скачать проверить. Если будет ошибка — бесплатно исправлю и вышлю на почту.

    Reply
  24. user1229409

    она будет работать в 1С Fresh ?

    Reply
  25. Erofeevgv

    (26) Да, изначально она под фрэш и разрабатывалась.

    Ее нужно подключать, затем она проходит аудит у специалистов фрэша.

    После этого она станет доступна.

    Reply

Leave a Comment

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