мета-данные страницы
  •  

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Последняя версия Следующая версия справа и слева
mobile_faq_customezpl [24.10.2022 13:07]
FeLDMaRShaL [Создание будущего шаблона бирки]
mobile_faq_customezpl [17.11.2023 13:34]
FeLDMaRShaL [Настройка кодировки при печати бирки]
Строка 11: Строка 11:
   * На вкладке "​Дополнительно",​ перетаскиваем в поле редактирования бирки элемент “Текст шрифтами принтера”. Переходим на вкладку "​Тип шрифта",​ выбираем "​Шрифт TrueType",​ указываем имя шрифта TA и приступаем к загрузке шрифта в память принтера   * На вкладке "​Дополнительно",​ перетаскиваем в поле редактирования бирки элемент “Текст шрифтами принтера”. Переходим на вкладку "​Тип шрифта",​ выбираем "​Шрифт TrueType",​ указываем имя шрифта TA и приступаем к загрузке шрифта в память принтера
 {{:​godex5.png?​nolink&​800|}} {{:​godex5.png?​nolink&​800|}}
-  * Для использования подходит любой моноширный шрифт, мы рекомендуем использовать шрифт CourierNew. После этого этапа предварительная настройка принтера заканчивается.+  * Для использования подходит любой моноширинный шрифт, мы рекомендуем использовать шрифт CourierNew. После этого этапа предварительная настройка принтера заканчивается.
 {{:​godex6.png?​nolink&​400|}} {{:​godex6.png?​nolink&​400|}}
   * Продвинутые пользователи могут использовать несколько шрифтов,​ например,​ шрифт LiberationMono-Bold - он более "​Жирный",​ и если требуется выделить на бирке элемент можно воспользоваться этим шрифтом. Все используемые шрифты должны иметь разные название,​ например,​ второй шрифт лучше назвать TB.   * Продвинутые пользователи могут использовать несколько шрифтов,​ например,​ шрифт LiberationMono-Bold - он более "​Жирный",​ и если требуется выделить на бирке элемент можно воспользоваться этим шрифтом. Все используемые шрифты должны иметь разные название,​ например,​ второй шрифт лучше назвать TB.
  
 ===== Создание будущего шаблона бирки ===== ===== Создание будущего шаблона бирки =====
-  * На предыдущем этапе мы настроили все необходимые параметры нашей бирки (используемого принтера,​ указав тип носителя,​ наличие автоматического отрезщика и т.п.). Теперь необходимо задать размер бирки и тип используемой бумаги. Для этого на вкладке "​Основной"​ нажимаем кнопку "​Новая"​ и настраиваем "​Размер носителя"​ и "​Тип бумаги"​+  * На предыдущем этапе мы настроили все необходимые параметры нашей бирки (используемого принтера,​ указав тип носителя,​ наличие автоматического обрезщика и т.п.). Теперь необходимо задать размер бирки и тип используемой бумаги. Для этого на вкладке "​Основной"​ нажимаем кнопку "​Новая"​ и настраиваем "​Размер носителя"​ и "​Тип бумаги"​. В примере мы будем настраивать бирку размером 58*30 без отступов на непрерывной чековой ленте без разрыва. 
 +{{:​godex7.png?​nolink&​800|}}\\ 
 +{{:​godex8.png?​nolink&​400|}} 
 +  * Если на текущем этапе экспортировать бирку в формат EZPL то увидим наш шаблон для печати. В этом шаблоне указаны все необходимые параметры (тип печати,​ обрезчик,​ размер бумаги,​ отступы,​ кол-во бирок и т.д.) которые мы настроили до этого момента через GUI программы 
 +{{:​godex9.png?​nolink&​800|}} 
 +  * Теперь необходимо определиться какую информацию об услуге будем выводить на бирке. В нашем примере мы будем отображать:​ название склада приёма,​ даты приёма/​выдачи,​ номер бирки, штрихкод бирки, имя клиента,​ номер заказа и название услуги. 
 +  * Помещаем в область печати настроенный шрифт с текстом "​1234567890123..."​ что бы гарантированно мы зашли за видимую область печати бирки (в будущем мы будем считать сколько символов помещается в одну одну строчку выбранным размером шрифта. 
 +{{:​godex10.png?​nolink&​800|}} 
 +  * Изменяем размер шрифта которым мы будем печатать. Например,​ в пример мы будем печатать название склада мелким шрифтом размером всего 8 у.е. 
 +{{:​godex11.png?​nolink&​400|}} 
 +  * Дальше аналогичным образом добавляем все необходимые строчки нашей бирки с нужными размерами таким образом что бы все красиво разместилось и влезло. Смотреть промежуточный результат можно после нажатия на кнопку "​Экспортировать"​ 
 +{{:​godex12.png?​nolink&​800|}} 
 +  * ШК на бирку добавляется немного иначе. Чаще всего мы используем ШК Barcode128 (например,​ 280000000000002320). Его можно добавить штатными средствами. Для того что бы сэкономить место можно отключить печать символов самого ШК. Для этого на вкладке “Понятный читаемый стиль” отключаем заголовок.  
 +{{:​godex13.png?​nolink&​800|}}\\ 
 +{{:​godex14.png?​nolink&​400|}} 
 +  * Для того что бы проверить наш шаблон необходимо печатаем получившуюся бирку. Если мы используем автоматический обрезчик он также должен сработать. 
 +{{:​godex15.png?​nolink&​800|}} 
 +  * В итоге из принтера должно показаться нечто похожее на наш макет. На нашей бирке мы использовали 3 размера шрифта:​ 8, 10 и 16. Теперь необходимо посчитать сколько символов каждого размера у нас получилось. В нашем примере получились следующие цифры: для размера 8 у нас вышло 27 символов,​ для размера 10 у нас вышло 22 символа а для размера 16 всего 14 символов. На этом создание шаблона для нашей бирки подошло к концу. 
 +{{:​godex16.jpg?​nolink&​800|}} 
 + 
 +===== Создание процедуры по генерации бирки используя заранее подготовленный шаблон ===== 
 +  * Запускаем программу IBExpert и проводим скрипт по созданию/​изменению процедуры генерации EZPL шаблона нашей будущей бирки. Входным параметром процедуры всегда будет внутренний номер услуги. Запросом необходимо вытащить из базы данных информацию которую мы в будущем планируем отображать на бирке. 
 +<code sql> 
 +CREATE OR ALTER procedure SP_GET_CUSTOM_EZPL_LABEL ( 
 +    DOS_ID D_ID_INT64) 
 +returns ( 
 +    EZPL_TEXT D_BLOB) 
 +as 
 +declare variable SCLAD_KREDIT_NAME D_STR_100;​ 
 +declare variable DATE_BEG D_STR_50; 
 +declare variable DATE_END D_STR_12; 
 +declare variable BARCODE_READ D_STR_25; 
 +declare variable BARCODE D_STR_25; 
 +declare variable DOC_NUM D_STR_50; 
 +declare variable CLIENT_NAME D_STR_100;​ 
 +declare variable TOVAR_NAME D_STR_500;​ 
 +begin 
 + 
 +  select 
 +    s.name, 
 +    lpad(extract(day from d.doc_date),​ 2, '​0'​) || '​.'​ || lpad(extract(month from d.doc_date),​ 2, '​0'​),​ 
 +    lpad(extract(day from dor.date_out),​ 2, '​0'​) || '​.'​ || lpad(extract(month from dor.date_out),​ 2, '​0'​),​ 
 +    dos.barcode_read,​ 
 +    dos.barcode,​ 
 +    c.name, 
 +    d.doc_num,​ 
 +    tt.name as tovar_name 
 +  from doc_order_services dos 
 +  left join docs_order dor on dor.id = dos.doc_order_id 
 +  left join docs d on d.doc_id = dor.doc_id 
 +  left join tovars_tbl tt on tt.TOVAR_ID = dos.tovar_id 
 +  left join contragents c on c.contr_id = d.contragent_id 
 +  left join sclads s on s.id = dor.sclad_kredit_id 
 +  where dos.id = :dos_id 
 +  into :​sclad_kredit_name,​ :date_beg, :date_end, :​barcode_read,​ :barcode, :​client_name,​ :doc_num, :​tovar_name;​ 
 + 
 +  select res from sp_ezpl_print_string(:​sclad_kredit_name,​ 27, 1) into :​sclad_kredit_name;​ 
 +  select res from sp_ezpl_print_string(:​date_beg||' ​   '​||:​date_end,​ 22, 1) into :​date_beg;​ 
 +  select res from sp_ezpl_print_string(:​barcode_read,​ 14, 1) into :​barcode_read;​ 
 +  select res from sp_ezpl_print_string(:​client_name,​ 27, 1) into :​client_name;​ 
 +  select res from sp_ezpl_print_string(:​doc_num,​ 22, 1) into :doc_num; 
 +  select res from sp_ezpl_print_string(:​tovar_name,​ 22, 0) into :​tovar_name;​ 
 + 
 +  ezpl_text = '';​ 
 + 
 +  suspend; 
 +end 
 +</​code>​ 
 +  * В переменную ezpl_text вставляем наш результат экспорта бирки на предыдущем этапе 
 +{{:​godex17.png?​nolink&​800|}} 
 +  * Меняем наш текст ("​1234567890123..."​) на реальный текст, который будет отображаться. Все фразы выводимые на бирке мы проводим через процедуру sp_ezpl_print_string. Данная процедура добавляет необходимое кол-во пробелов вначале печатаемого текста в зависимости от типа выравнивания и кол-во символов помещаемых в строке. Первый параметр данной процедуры - собственно желаемая фраза, второй - кол0во символов в строке (в примере мы печатаем склад приёма самым мелким шрифтов,​ у которого помещается 27 символов в одну строчку),​ третий - тип выравнивания (0 - выровнять по левому краю, 1 - выровнять по центру,​ 2 - выровнять по правому краю) 
 +<code sql> 
 +select res from sp_ezpl_print_string(:​sclad_kredit_name,​ 27, 1) into :​sclad_kredit_name;​ 
 +</​code>​ 
 +{{:​godex18.png?​nolink&​800|}} 
 +  * Сохраняем получившуюся процедуру и проводим ее в модуле Agbis Updater.exe что бы репликация разнесла данную процедуру по всем другим репликационным базам. 
 + 
 +===== Проверка созданного шаблона и бирки ===== 
 +  * В IBExpert открываем таблицу DOC_ORDER_SERVICES,​ копируем внутренний номер услуги и выполняем запрос к базе данных 
 +<code sql>​select * from sp_get_custom_ezpl_label(:​dos_id)</​code>​ 
 +  * Результат выполнения процедуры вставляем в новую бирку (что бы не затереть по ошибке наш созданный шаблон).Импортируем EZPL команду в визуальную бирку. Производим печать нашей бирки. Если результат устраивает то приступаем к настройке Meta, если результат требует корректировки то возвращаемся к правке EZPL шаблона после чего модифицируем нашу процедуру sp_get_custom_ezpl_label 
 +{{:​godex20.jpg?​nolink&​800|}} 
 + 
 +===== Редактирование локальной настройки для модуля Агбис Приёмка===== 
 +  * В нужном комплекте локальных настроек изменяем "​Тип квитанции"​ на "Godex EZPL Custom"​ 
 +{{:​godex21.png?​nolink&​800|}} 
 + 
 +=====Настройка кодировки при печати бирки===== 
 +По умолчанию на принтере Godex установлена кодировка **cp1251**. Если требуется начать работать с другой кодировкой,​ то в процедуру необходимо добавить специальную команду которая выставить значение кодировки:​ ^XSET,​CODEPAGE,​14 
 + 
 +===== Примеры готовых процедур для бирок ===== 
 +  * Бирка 1 <code sql>​CREATE OR ALTER procedure SP_GET_CUSTOM_EZPL_LABEL ( 
 +    DOS_ID D_ID_INT64) 
 +returns ( 
 +    EZPL_TEXT D_BLOB) 
 +as 
 +declare variable SCLAD_KREDIT_NAME D_STR_100;​ 
 +declare variable DATE_BEG D_STR_50; 
 +declare variable DATE_END D_STR_12; 
 +declare variable BARCODE_READ D_STR_25; 
 +declare variable BARCODE D_STR_25; 
 +declare variable DOC_NUM D_STR_50; 
 +declare variable CLIENT_NAME D_STR_100;​ 
 +declare variable TOVAR_NAME D_STR_500;​ 
 +begin 
 + 
 +/* 
 +    Бирка для печати на Godex на бесконечной чековой ленте без отрезщика и без разделителя бирок 
 +    Бирка размером 58*30 (ширина ленты 58 мм, высота бирки 30 мм) 
 +    На бирке выводится инфомрация:​ 
 +      * Склад приема (1 строка) 
 +      * Дата начала обработки/​дата конца обработки (2 строка) 
 +      * Номер бирки (3 строка) 
 +      * ШК бирки (4 строка) 
 +      * Имя клиента (5 строка) 
 +      * Номер заказа (6 строка) 
 +      * Название услуги ( 7 строка) 
 +*/ 
 + 
 +  select 
 +    s.name, 
 +    lpad(extract(day from d.doc_date),​ 2, '​0'​) || '​.'​ || lpad(extract(month from d.doc_date),​ 2, '​0'​),​ 
 +    lpad(extract(day from dor.date_out),​ 2, '​0'​) || '​.'​ || lpad(extract(month from dor.date_out),​ 2, '​0'​),​ 
 +    dos.barcode_read,​ 
 +    dos.barcode,​ 
 +    c.name, 
 +    d.doc_num,​ 
 +    tt.name as tovar_name 
 +  from doc_order_services dos 
 +  left join docs_order dor on dor.id = dos.doc_order_id 
 +  left join docs d on d.doc_id = dor.doc_id 
 +  left join tovars_tbl tt on tt.TOVAR_ID = dos.tovar_id 
 +  left join contragents c on c.contr_id = d.contragent_id 
 +  left join sclads s on s.id = dor.sclad_kredit_id 
 +  where dos.id = :dos_id 
 +  into :​sclad_kredit_name,​ :date_beg, :date_end, :​barcode_read,​ :barcode, :​client_name,​ :doc_num, :​tovar_name;​ 
 + 
 +  select res from sp_ezpl_print_string(:​sclad_kredit_name,​ 27, 1) into :​sclad_kredit_name;​ 
 +  select res from sp_ezpl_print_string(:​date_beg||' ​   '​||:​date_end,​ 22, 1) into :​date_beg;​ 
 +  select res from sp_ezpl_print_string(:​barcode_read,​ 14, 1) into :​barcode_read;​ 
 +  select res from sp_ezpl_print_string(:​client_name,​ 27, 1) into :​client_name;​ 
 +  select res from sp_ezpl_print_string(:​doc_num,​ 22, 1) into :doc_num; 
 +  select res from sp_ezpl_print_string(:​tovar_name,​ 22, 0) into :​tovar_name;​ 
 + 
 +  ezpl_text = '​^Q30,​0,​0 
 +^W58 
 +^H8 
 +^P1 
 +^S4 
 +^AD 
 +^C1 
 +^R0 
 +~Q+0 
 +^O0 
 +^D0 
 +^E18 
 +~R255 
 +^L 
 +Dy2-me-dd 
 +Th:m:s 
 +Dy2-me-dd 
 +Th:m:s 
 +ATA,​0,​0,​23,​23,​0,​0,​A,​0,'​||sclad_kredit_name||'​ 
 +ATA,​0,​27,​28,​28,​0,​0,​A,​0,'​||date_beg||'​ 
 +ATA,​0,​59,​45,​45,​0,​0,​A,​0,'​||barcode_read||'​ 
 +BQ,​98,​110,​2,​6,​39,​0,​0,'​||barcode||'​ 
 +ATA,​0,​149,​23,​23,​0,​0,​A,​0,'​||client_name||'​ 
 +ATA,​0,​176,​28,​28,​0,​0,​A,​0,'​||doc_num||'​ 
 +ATA,​0,​208,​28,​28,​0,​0,​A,​0,'​||tovar_name||'​ 
 +
 +'; 
 + 
 +  suspend; 
 +end</​code>​ 
 +{{:​godex20.jpg?​nolink&​800|}}