<?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='\
А принтеры Zebra будут работать с этой библиотекой?
В версии 1.6 поддержки «прямой» печати на принтеры Zebra нет.
http://www.seagullscientific.com/aspx/free-windows-printer-drivers-for-label-printers.aspx
Сейчас в разработке версия 1.7 в которой будет добавлена поддержка «прямой» печати на Argox-203DT и расширены возможности печати этикеток через стандартную систему печати windows.
Пока тестировались все заявленные ранее термопринтеры с драйверами от Seagull.
Преимущество библиотеки в том, что можно установить размер материала для печати без настройки форм в параметрах принтера. Зачастую именно настройки форм этикеток и сбиваются в параметрах печати принтера. Если есть желание поучаствовать в тестировании, то могу выслать предварительную версию.
1С 7.7 ТиС 9.2 Принтер BZB-2 OC XP печатает через Thermal Print library
Расшарил принтер для доступа по сети.
Пытаюсь печатать с ноутбука OC WIN 7 64-bit используя метод «RAW», «\BZB-2»
принтер молчит.
Видимо необходимо обновить драйвер с поддержкой WIN7
Может есть тестовая версия? Готов протестировать.
9241747337@mail.ru
Метод печати «RAW» использует стандартный windows api для печати. Скорее всего проблема действительно с драйвером. Попробуйте на win7 подключить термопринтер как обычный сетевой принтер с использованием стандартного драйвера Epson LX 300 (либо 300+).
Ну и проверить работоспособность просто: задания печати должны появляться в очереди печати принтера.
Планируется выпуск версии 1.7 в которой будет добавлена поддержка «прямой» печати на Argox 203DT.
Также будут переработаны и улучшены методы печати на любой термопринтер имеющий windows драйвера.
В частности библиотека будет настраивать размер этикетки без настройки макетов в драйверах принтера.
Сейчас протестированы все текущие поддерживаемые принтеры с использованием драйверов от Seagull.
Возможно также появиться отдельно x64 версия, но это пока под вопросом
Также будут переработаны и улучшены методы печати на любой термопринтер имеющий windows драйвера.
Каким летом ожидается появление и ожидается ли вообще?
(6) b-real, Насчет лета информацию убрал дабы не дезинформировать общественность. Планы по развитию есть, но конкретных сроков указывать не буду, это не коммерческая разработка. Методы «прямой» печати на Argox 203DT реализованы, но это будет последний принтер для которого будет поддерживаться «прямая» печать. Дальнейшие планы: развитие методов формирования этикетки и печати через драйвера (без настройки форм печати и п.р.)
(7) Ну тогда ждемс…))
Кому интересно можете посмотреть мою похожую разработку!
http://infostart.ru/public/147535/
Сейчас все принтеры переводятся на USB. Как с помощью вашей обработки печатать на BZB-2 с USB интерфейсом. Использую вашу разработку 5 лет. Теперь приходится отказываться, т.к. не знаю как указать порт для вывода на печать. Возможно все просто подскажите.
Да все действительно просто и давно реализовано. Вы используете режим печати напрямую в порт, а есть режим печати через стандартный спулер печати windows.
Вот пример использования:
Синтаксис :
EZPrintLabel(CopyCount,DestinationType,Destination)
Назначение :
Выводит сформированную этикетку на термопринтер
Параметры :
CopyCount
Количество копий этикетки которое нужно напечатать.
DestinationType
Указывает каким способом вывести этикетку на печать.
Допустимые значения:
‘PORT’ — выводить в порт.
‘RAW’ — выводить на сетевой принтер через спулер.
‘FILE_APPEND’ — выводить в файл с дописыванием.
‘FILE_REWRITE’ — выводить в файл с переписыванием.
Destination
В зависимости от параметра DestinationType может быть либо числовым либо строковым значением. Если DestinationType задан как ‘PORT’, то это числовое значение с номером LPT порта (может быть любым при использовании маппинга портов), иначе это строка с именем файла или сетевого принтера (к примеру ‘\SERVERHP’ или ‘C:ezscript.dat’).
В документации и в примере это все описано. Можно использовать как стандартный драйвер для windows от производителя, либо драйвера Seagullhttp://www.bartenderbarcodesoftware.com/drivers/godex-windows-printer-drivers.aspx , либо стандартные драйвера windows для принтеров типа Epson LX-300
Этот метод печати даже более удобный и предпочтительный т.к. все задачи по организации очереди печати возложены на подсистему печати windows.
Довольно долго пользуюсь данной библиотекой. Проблемы начались с принтером BZB-2U (USB интерфейс). Из Q-label печатает отлично. Из 1С печать идет рывками по миллиметру, из-за чего падает скорость печать, видно что изображение состоит из множества горизонтальных полос, принтер издает ужасный звук при печати. При этом повторюсь при печати из программы QLabel — все отлично. Печатаю так:
Порт = «RAW»;
Принтер = «\192.168.2.43GodexBZB»;
LabelPrinter.EZPrintLabel(1,Порт,Принтер);
(12) koliaff, Мне пока не приходилось работать с модификацией BZB-2U, но если язык описания этикетки в нем такой же как и в BZB-2 (EZPL), то проверьте обработчик печати в настройках драйвера принтера. Должен использоваться winprint (RAW).
Обработчик печати указан верный. Может быть проблема в драйвере? Что еще можно проверить?
(14) koliaff, А какой драйвер используется для принтера ?
EZ_BZB_drivers_v2.0_vistaE_F_921.exe
Далее при установке пробовал BZB2 и EZ2. Самое интересное что и при печати через формирование макета штрих код не четкий получается.
Видимо отличается система команд у BZB-2U. Специалисты из scancode для этого принтера рекомендуют «BZB-2/BZB-2U/EZ-2/EZ-2S — компонента для печати этикеток из 1С 7.7 ТиС (V1.0.2.0)». А для LPT — шного была другая версия компоненты. Проверил, работает. Из минусов, не получилось запустить на 8-ке. Не достаточно функциональная.
http://infostart.ru/public/147535/#comm , но в ней также недостаточно функций.
Также хорошо работает эта обработка
Возможно в вашу обработку добавить систему команд этого принтера?
Здравствуйте . ни кто не сталкивался с проблемой печати пустых этикеток? Использую данную библиотеку , печатаю напрямую через LPT 1 . Но при печати выходят пустые этикетки. Притер исправен . тестовую страницу печатает.
Здравствуйте!
Подскажите пожалуйста как пользоваться данной библиотекой в 1с7.7. ТиС, и в программе Qlabel, принтер подключен через LPT1, марка принтера GODEX EZ-2S
(19) universal_kondopoga, Для EZ-2S библиотека не тестировалась. Когда я прекратил поддержку библиотеки этот принтер еще не производился. Библиотека является стандартным COM сервером. Все подробно описано в документации . Документация входит в дистрибутив.
Есть ли у кого Библиотека Thermal Print Library v 1.4?
Пробовал 1.6, у нас на 1С 7.7 работает некорректно.
Спасибо!