<?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='\
Добрый день. А как эту библиотеку устанавливать/регистрировать?
(1) Добрый день. Устанавливать не нужно, при начале работы с ВК используйте метод
и далее по примеру
(1)Это NativeAPI компонента, можно добавить в макет, как это сделано в примере обработки.
Для тестирования можно взять из архива DLL и в функции ПодключитьВнешнююКомпоненту просто использовать путь к DLL
Скачал пример обработки, запустил. Она написала компонента зарегистрирована. Пытаюсь сгенерить EAN-13, выходит ошибка (в приложении)
Повторно откройте обработку.
(4)Для Типа ШК EAN 13 контрольный символ определится автоматически, поэтому его вносить не нужно
(4)Повторно откройте обработку.
А как в «GS1 DataBar Expanded Stacked» задать количество строк? Автоматом формируется 5, а требуется 2.
Скажите
1) Какая версия zint используется?
2) есть ли возможность задавать угол поворота
3) присоединяюсь к (8). Только в zint задается не количество строк, а количество колонок, на основании которого оно само разбивает по строкам. В общем — есть ли возможность задать остальные параметры доступные zint?
Добрый день, постараемся добавить нужные функции сегодня-завтра. Нам они не пригодились.
(9) Версия 2.4.2. Запрошенные функции добавил, Артем протестировал. Исправил пару мелких недочетов.
Спасибо большое!
(11) 2.4.2 немного старовата конечно, они там мучались с matrix code. Спасибо, потестирую.
(11) чет не то. У меня не читается сканером Expanded Stacked сформированный вашей ВК. Со стандартного zint — все нормально, с ВК — не хочет.
Параметры:
ВнешняяКомпонента.ТипШК(81);
ВнешняяКомпонента.Повернуть(0);
ВнешняяКомпонента.ШиринаШК(3);
СтрокаBase64 = ВнешняяКомпонента.ПолучитьШК(«[02]04604395000025[3103]001800[37]10[11]180511[17]180710[10]110518[21]1»);
(14) Проверьте штрихкод во вложении. Если все хорошо, то обновим публикацию и отправлю новую ВК.
(13)Как оказалось не только с Matrix code в версии 2.4.2 был косяк и с Expanded Stacked, обновил версию либы до 2.6.3. Артем ниже образец ШК прислал, должно быть все гут
(15) Да, штрихкод из вложения читается.
Скажите, такой вопрос: вы формируете картинку в формате bmp. Это технически сложно доработать, чтобы формировать ее в png? В идеале — настраиваемо конечно чтобы было. zint то так может (ключ —filetype).
Обоснование: попробуйте сформировать табличный документ например с 250 штрихкодами. Формат bmp долго обрабатывается (имею ввиду преобразование данных из строки base64 + вывод итогового табличного документа).
(18) Такой настройки нет и не будет
(18)zint данные в разном формате может писать только в файл. В буфере он хранит только bitmap
Обработка супер, библиотеку регить отдельно не нужно, все отлично. Только подскажите пож, как задать высоту самого ШК, а не высоту рисунка? а то получается, что рисунок большой, а сам ШК по высоте низкий и получается мелким в центре этикетки 58х60.
(21) в самой компоненте нет параметра высоты, но можно установить у рисунка свойство растянуть
Компонента, безусловно, полезная. Большое спасибо.
А есть ли возможность избавиться от скабрезностей в сообщениях?
Здравствуйте. При запуске пишет «Установка внешней компоненты не выполнена! В процессе установке произошла ошибка! Возможно, отсутсвует компонента для используемого клиентского приложения», подскажите в чем ошибка платформа 8.3.10
Система 64 битная, эта библиотека работает только в x86?
Компонента не выводит текст при выборе ТипаШК: 81 GS1 DataBar Expanded Stacked. Это фича, или баг?
(26) фича
(25) работает 64 битной системе, но не 64 битной платформе 1с
(27) А можно как-то поправить, очень ннадо!
(29) библиотека zint в этом типе шк не выводит текст
Здравствуйте. Она позволяет в штрихкод добавить fnc1 для GS1-128 (UCC.EAN-128), чтобы потом его можно было парсить?
Можно что-нибудь сделать с этим моментом «Сообщения об ошибках выводятся НЕ цензурно»?
(31)компонента сама вставляет символ FNC1 после нужных идентификаторов
(32) передам коллеге, исправит при возможности
(33)
При сканировании с ТСД-штрихкод распознаётся. Но, когда программно перебираю коды символов, код 29 не обнаруживается. По идее, он должен быть между тегами партии и серии. Согласно описанию gs1-128 он должен находится между тегами переменой длины. Но его там нет.
(35) пример кодируемого шк пришлите
(36) [01]46020140044540[11]180601[17]180716[21]123545678974460[10]2454
Если есть возможность, добавьте, пожалуйста, уровень коррекции ошибок для Micro QR/QR-кодов (Error Correction), и возможность изменить размер в пикселях («Adjust Size To»)
Заранее благодарен!
И +1 к (32)
..А если ещё сделаете возможной передачу в QR код числа, то будет совсем замечательно!
На текущий момент компонента абсолютно все символы выводит в одинаковой кодировке в Micro QR/QR?
В Zint, насколько мне известно, в одинаковых размеров код может влезть разное количество латинских символов и разрядов десятичных чисел. Очевидно, это и разные объёмы информации, и было бы неплохо, если бы компонента была достаточно гибка, чтобы определять тип входящих данных, и, соответственно, определять оптимальный способ их записи в код. Так ли это?
При QR-кодировании этот момент имеет достаточно весомое значение.
Метод «ПолучитьШК» почему-то выдает пустую строку(см.скрин)
ТипШК — 16 или 31
Что не так делаю?
(40)между 17 и 10 блоком должно быть 6 символов [17]180906 или вообще не должно быть
Добрый вечер, пытаюсь научиться писать ВК в темеhttps://forum.infostart.ru/forum15/topic202825/ .
Я так понимаю у вас реализация для винды. Для андроида будет работать или как можно скомпилировать для него?
(42) На андройде не сработает
(43) опыта такой компоненты у вас есть?
Доброго времени суток.
Не могли бы вы уточнить пример задания параметров для формирования Aztec ШК.
На данный момент при попытке сформировать такой ШК программа завершается в аварийном режиме (скорее всего, задаю некорректные параметры для 92-ого типа).
Заранее спасибо!
(45) Пришлите что кодируете
(46) Например, попробуйте простой текст из серии «Hello world».
Но основная задача — «вшивать» в такой ШК закодированные строки формата base64.
а в чем отличие от типовой в УТ?
(48) отличия в типах шк. Компонента писалась когда в типовой не было возможности формировать DataBarExpanded
(49) простите, немного отстал от современных конфигураций: а компонентой из типовой сейчас есть возможность формировать шк типа DataBarExpanded? Как?
(50)да. В конфигурациях ут11,бп3.0 и т.п.
(50)при помощи вк поставляемой в составе конфигурации. Можете поиском в конфигурации найти «databarexpandedstaked”. Если не ошибаюсь то типшк для компоненты равен 17
Нужно сгенерировать EAN 13 + 5 Пример прикреплен.
Какой номер передавать?
Скажите, пожалуйста, как в коде 89 ITF-14 изменить толщину рамки вокруг ШК? сейчас она судя по всему максимальная 9 пунктов, очень толстая
Обращаюсь к автору статьи, можно убрать из сообщений нецензурную лексику?
(55) какой тип шк нужен? Тип DatabarExpandedStacked уже умеет стандартная ВК из типовых конфигураций. Там нецензурщины нет 🙂
(56) «X5 Retail Group» (Торговая сеть Перекрёсток) требует на транспортные упаковки с товаром наносить штрих коды формата GS1-128 или GS1 DataBar Expanded Stacked. Это для снятия проблем идентификации товара в «Меркурии».
131 Composite Symbol with GS1-128 linear component
139 Composite Symbol with GS1 DataBar Expanded Stacked component
(56)Ни как не удаётся вытянуть DatabarExpandedStacked из типовой
(58)
возможно нужна более свежая версия типовой.
Для GS1-128 ТипКода = 2, для DatabarExpandedStacked ТипКода = 17.
Показать
(59)Благодарю, завтра попробую найти новую ВК.
(59)
КоличествоМиллиметровВПикселе = Эталон.Рисунки.Квадрат100Пикселей.Высота / 100;
ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить(«Ширина», Окр(Рисунок.Ширина / КоличествоМиллиметровВПикселе));
…
Удалось с первой попытки! Спасибо!
(55) Исходники не могу найти.
(62)Для моей задачи, выяснилось, что достаточно типового функционала.
Здравствуйте.
Подскажите пожалуйста, есть возможность сделать dll на 64-бит 1С? Спасибо.
(64)исходников нет. Изменении нет возможности
Здравствуйте. компонента будет работать на 1с 7.7?
(66) нет
(66)https://ocvita.ru/ocvita-barcode — точно не помню, но вроде эта работает в 7.7
(68) спасибо
При нажатии «Выввести» в обработке возникает ошибка. Хотя компонента зарагистрировалась до этого и обработку перезапускал.
Пользоваться нет возможности.
(70) запустите в толстом клиенте.
(71) открылась и заработала только в режиме «Толстый клиент (управляемое приложение)», просто в «Толстом клиенте» не открывается.
Спасибо.