Печать на принтер чеков для УТ 3.0 (для Украины) при помощи доработки эмулятора ФР (также должно подойти для УТ 11)

И вот перешла торговля на новый интерфейс (не Такси, а просто на управляемые формы). Многие торговые организации хотят работать не с фискальными регистратором, а с обычным POS-принтером или принтером чеков (в простонародье — кухонником). Но не все так гладко, как раньше. Простым добавлением внешней обработки уже не решить вопрос. Надо дорабатывать. За основу был взят типовой драйвер «1С: Драйвер фискального регистратора (эмулятор)»

И вот перешла торговля на новый интерфейс (не Такси, а просто на управляемые формы). Многие торговые организации хотят работать не с фискальными регистратором, а с обычным POS-принтером или принтером чеков (в простонародье — кухонником). Но не все так гладко, как раньше. Простым добавлением внешней обработки уже не решить вопрос. Надо дорабатывать. За основу был взят типовой драйвер "1С: Драйвер фискального регистратора (эмулятор)"

Как многие знают, принтер чеков отображается в системе, как обычный принтер и не требует никаких специальных команд. В типовой конфигурации эмулятор сформированные строки чека просто выводит на экран.  Нам необходимо всю эту информацию вставить в макет и уже его печатать на принтер. За основу были взяты обработки для предыдущих версий торговли на обычных формах. 

Для воплощения задуманного Нам необходимо:

Доработать:

  • — ОбщийМодуль.ПодключаемоеОборудование1СФискальныйРегистраторЭмулятор
  • — ОбщаяФорма.ФормаНастройки1СФискальныйРегистраторЭмулятор
  • — Документ.ЧекККМ
  • — Документ.ЧекККМВозврат

Создать:

  • — ОбщийМодуль.ПодключаемоеОборудование1СФискальныйРегистраторЭмуляторСервер
  • — Обработка.ФискальныйРегистраторКассираПринтер

 Начну с новых объектов. Обработка нам нужна как хранение макета чека. В будущем я еще планирую в нее добавить печать копии чека на этот же принтер чеков(для ФР такое категорически противопоказанно, а нам-то ничего не мешает нарушить это правило Wink ). Я думаю, что с этим пунктом проблем не будет. Вот перечень реализуемых параметров:

  • — Организация
  • — Номер чека в текущей смене
  • — Номер смены или дата чека
  • — Наименование + Характеристика
  • — Количество
  • — Цена
  • — Скидка/Наценка
  • — Сумма
  • — Итого
  • — Оплачено
  • — Сдача
  • — В завистимости от типа чека — разные шапки и конец

Сам макет (корявенький и плывет, но для наглядности сойдет; лучше скачать макет из архива):

 

                                 
Пробел  
                                 
Шапка *Организация*
*Чек* *Смена*
Наименование
Кол-во Цена Скидка Сумма
                                 
ШапкаНаВозврат *Организация*
Чек на возврат
*Чек* *Смена*
Наименование
Кол-во Цена Скидка Сумма
                                 
Товары *Наименование*
 *Количество*  *Цена* *Скидка*   *Сумма*
                                 
Итого Итого:  *Сумма*
Оплачено:  *ОплаченоСумма*
Сдача:  *СдачаСумма*
                                 
КонецЧека Спасибо за покупку!
                                 
КонецЧекаНаВозврат Ждем Вас снова!

 

Не забываем выставить права для кассира на работу с этим объектом

 Далее — Общий модуль.  ПодключаемоеОборудование1СФискальныйРегистраторЭмулятор — клиентский модуль. В Нашем случе — необходимо выполнять ряд процедур и функций, которые не доступны НаКлиенте. По-этому создаем новый общий модуль  ПодключаемоеОборудование1СФискальныйРегистраторЭмуляторСервер, ставим ему параметры как на рисунке ниже

 Настройки общего модуля

 

 

Обратите внимание на пункт "Вызов сервера". Теперь можно отправить на сервер выполнение процедур и функций, не доступных на клиенте. На самом деле там будут только заполняться макет и получать некоторую информацию для чека. Вот текст модуля:

 

 ОбщийМодуль.ПодключаемоеОборудование1СФискальныйРегистраторЭмуляторСервер

Ну, а теперь — самое интересное. Что же Нам необходимо доработать? Начнем с настроек фискального регистратора. По сути, необходимо добавить на форму "ФормаНастройки1СФискальныйРегистраторЭмулятор" еще два реквизита и, затем, сохранять эти значения (чтоб они затем передавались в  "ПодключаемоеОборудование1СФискальныйРегистраторЭмулятор"):

  • — ПринтерДляПечати (тип:строка)
  • — ВыборПринтера (тип:булево)
Примечание: Далее я буду писать только функции/процедуры с добавленным/измененным кодом.
Измененный или добавленный код находится в блоке. Типовой код, который не нужен, но и не мешает, оставил.
Но Вы можете почистить от него модули.

В модуле формы добавляем строки:

  • — В процедуре "ПриСозданииНаСервере"
 

 ОбщаяФорма.ФормаНастройки1СФискальныйРегистраторЭмулятор

  •  — В процедуре "ЗаписатьИЗакрытьВыполнить"
 

 ОбщаяФорма.ФормаНастройки1СФискальныйРегистраторЭмулятор

Переходим к чекам. Необходимость доработки сводится к тому, что в случае с работой в режиме ФР, фискальный регистратор берет данные организации, номера чека, номера смены из своей памяти. В нашем случае — эту информацию необходимо черпать из БД. Следующая необходимость связана с тем, что в типовой на чек выводится только наименование номенклатуры. В моем случае была необходимость выводить характеристику. Для документа "ЧекККМ" редактируем модуль формы "ФормаДокументаМастер", а в документе "ЧекККМВозврат" — "ФормаДокумента". Изменения в обоих документах чека идентичны. По-этому привожу код только одного из них.

В функции "ПробитьЧекВыполнить"

 

 Документ.ЧекККМ.ФормаДокументаМастер / Документ.ЧекККМВозврат.ФормаДокумента

 Подготовку сделали. Осталось изменить основной модуль " ПодключаемоеОборудование1СФискальныйРегистраторЭмулятор".

— Функция "ПодключитьУстройство". Вот здесь добавляем Наши новые параметры настройки принтера (имя и признак печати)

 

 ОбщийМодуль.ПодключаемоеОборудование1СФискальныйРегистраторЭмулятор

— Функция "ПечатьЧека". Здесь вставляем в параметры подключения значения кассы ККМ, кассовой смены и организации. Так же отключим вывод на экран сформированного чека.

 

 ОбщийМодуль.ПодключаемоеОборудование1СФискальныйРегистраторЭмулятор

— Функция "ОткрытьЧек".

 

 ОбщийМодуль.ПодключаемоеОборудование1СФискальныйРегистраторЭмулятор

—  Функция "НапечататьФискальнуюСтроку". Печатаем только фискальные строки. Функцию "НапечататьНефискальнуюСтроку" не трогаем.

 

 ОбщийМодуль.ПодключаемоеОборудование1СФискальныйРегистраторЭмулятор

 —  Функция "ЗакрытьЧек".

 

 ОбщийМодуль.ПодключаемоеОборудование1СФискальныйРегистраторЭмулятор

 Вот и все! Теперь добвляем оборудование "Фискальный регистратор" и в поле "Обработчик драйвера" выбираем "1С: Фискальный регистратор (эмулятор)". А после настраиваем (указываем имя принтера для печати или ставим галочку "Выбор принтера".

 Настройка фискального регистратора

 

P.S.: Данный прием не актуален для Розницы 2.0. Там данное решение доступно "из коробки". Как — смотрим комментарии.

UPD 1: Если используется терминал, то печатную форму ровно как и функцию закрытия чека желательно доработать для того чтобы на печать выводить оплаты наличными и картой

UPD 2: Выявилась проблема при печати текстовых блоков. Например, когда происходит попытка распечатать слип-чек, то вылетает ошибка отсутствия в передаваемых параметрах кассы ККМ. Фиксится не сложно, но в моем случае такой необходимости нет.

UPD 3: Данный прием теряет свою актуальность для новых версий конфигурации.

45 Comments

  1. smirnoffs

    Для Украины очень актуально! Недавно сам купил пару принтеров чеков Bixolon, но завести их на УТ3.0 так и не получилось, все заточено под фискальники. Буду пробовать с вашим примером.

    Reply
  2. semario

    пример под управляемые формы еще не встречал, а здесь нашел) полезная штука! помогло при разработке своего «рмк».

    Reply
  3. arjuna

    этто точно пригодится.

    Reply
  4. BudkoT

    Вопрос: а зачем юзать чеки ККМ, открытия кассовых смен и т.п. — если НЕ ИСПОЛЬЗУЕТСЯ КАССОВЫЙ АППАРАТ?

    Т.е.:

    1. Кассовый аппарат не юзают.

    2. Используют не совсем простой механизм розничной торговли (по крайней мере сложнее чем просто документ реализации).

    3. Требуется доработка типовой конфигурации, изменение типовых объектов.

    Почему не сделать внешнюю ПФ на документ реализации и не париться?

    Reply
  5. karapuzzzz

    (4) BudkoT, отвечу:

    1. Ну и что? Да, кассовый аппарат, как фискальный регистратор не юзают, но при это используют чековый принтер для печати тех же чеков (хоть и не фискальных).

    2. Чем сложнее? Если речь идет об открытии и закрытии кассовой смены, то это вообще не сложно. В противовес — контроль ежедневной выручки, упрощенная форма документа и т.п. и еще много мелких плюшек. Основным моментом, обычно, служит автоматическая печать чека при проведении.

    3. Тут пусть решает каждый сам. Мне, например было проще доработать этот механизм, чем дорабатывать документ реализации, получая тот же функционал.

    Reply
  6. BudkoT

    Дык механизм розничной торговли специально заточен под фискальные нужды: механизмы запрета изменений и т.п.

    Если наряду с оптовой торговлей ведется такая, что требует печати вот таких чеков (подчеркиваю, не жесткого фискального контроля с выгрузками и возможными проверками, сертификациями кассовых аппаратов…), а просто печати произвольной ПФ при продаже, то зачем пользователей учить разным процессам, регламентируя по-разному проведение операций? (если по сути пользователи делают одну и ту же операцию, просто «заканчивая» ее печатью разных документов). И не скажи, создание ВНЕШНЕЙ ПФ и изменение конфигурации — это различные порядки доработок (пусть не по сложности, а по степени вмешательства в типовую конфигурацию). И если это не разовая работа (сделали и забыли — пусть клиент сам потом что хочет делает), то нужно сразу думать и о будущем обновлении и т.п.

    Reply
  7. karapuzzzz

    (6) BudkoT, думаю, Вы согласитесь, что, помимо работы с фискальным регистратором, документ «ЧекККМ» и все,что с ним связоно, имеют довольно много других отличий с документом «Реализация товаров и услуг». Так вот здесь и кроется ключ к ответу: почему именно он. Когда речь стоит о том, чтобы просто добавить возможность печатать в некотором виде реализацию на принтер чеков, то я полностью согласен в том, что лучше добавить внешнюю форму и не мучатся. Но, при этом, во многих случаях получается так, что использовать документ «ЧекККМ» удобнее по многим критериям (вот именно те отличия между документами и играют роль). На чашу весов падают:

    — на одну сторону: внешняя печатная форма + некоторые доработки документа «Реализация товаров и услуг» и др., которые добавят в него те самые «плюшки», которые уже есть в документе «ЧекККМ».

    — на другую сторону: доработать модуль фискального регистратора и пользоваться документом «ЧекККМ»

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

    Reply
  8. vahate

    этого фискального регистратора в рознице 2.0 нет. Datecs FP-T260. драйвером от атолл не поддерживается. руководство программиста — http://www.artsoft.ua/download/ArtSoftFP3141OLEDoc.rar .демка — http://www.artsoft.ua/download/ArtSoftFP3141OLE.rar — это работает с розницей 1.0. розница 1.0 для украины и для россии идентичны! розница 2.0 интересует как раз российская. интресовались драйвером от атол — он поддерживает некоторые украинские модели ФР но этот в список не входит. поэтому остановились на драйвере указанном выше. там обработка небольшая — как бы ее перенести в 2.0? ссылка на обработку — http://us.ua/1360391/

    файл — ArtSoft_DatecsFP3141T_v6.epf

    очень надо. оплату гарантируем ))).

    Reply
  9. DenisKin

    Спасибо за статью очень помогло. Единственное я не стал изменять объекты эмулятора, а сделал все новыми объектами(общие модуля, форма настройки, перечисления), для удобства обновления и макет чека запихнул в общие макеты. С УТ 3 до этого не сталкивался, поэтому было удивление от того, что нужно столько изменений вносить для подключения нового оборудования.

    Reply
  10. smirnoffs

    (5) не могли бы вы мне написать на smirnov@karkar.com.ua, с удовольствием бы вам заплатил за подключение принтеров чеков к УТ3.0.

    Reply
  11. Stasiko

    Работает отлично, спасибо большое за толковый функционал.

    Reply
  12. dgch

    Добрый день.

    Подскажите пожалуйста, как в функции «ПробитьЧекВыполнить» добавить Артикул номенклатуры, Шрихкод номенклатуры и шрихкод номера документы чека? Может кто подскажет…

    Спасибо.

    Reply
  13. karapuzzzz

    (12) dgch, А Вы код читали? Там же для этого есть место.

    СтрокаТаблицыТоваров.Добавить(«»);                          //  2 — Штрихкод
    СтрокаТаблицыТоваров.Добавить(«»);                          //  3 — Артикул

    Вместо «»»» вставляете СтрокаТЧ.Артикул и СтрокаТЧ.ШтрихКод.

    Для вставки ШК документа можете добавить 21-й параметр. Вот только как его получать — не знаю (я не знаю Вашей конфигурации)

    Дальше, в функции «ОткрытьЧек» надо добавить строку для печати штрих-кода документа (например)

    Значения.Вставить(«ШтрихКодДокумента», ПараметрыПодключения.ШтрихКодДокумента);

    К сожалению, конфигурации по рукой нет и ответить правильно и точно не могу. Но разобраться не сложно.

    Reply
  14. urktar

    Подскажите…

    Ктонить сталкивался с «Розница для Казахстана 2.0»?

    Там многое отсутствует (или во что то переименованно):

    Не могу найти:

    — ОбщийМодуль.ПодключаемоеОборудование1СФискальныйРегистраторЭмулятор

    — ОбщаяФорма.ФормаНастройки1СФискальныйРегистраторЭмулятор

    — Документ.ЧекККМ

    — Документ.ЧекККМВозврат

    Возможно их назвали по другому.

    Я пуско-наладчик и внедренец 1С, не программист, соответственно мне не все моменты понятны

    Reply
  15. karapuzzzz

    (14) urktar, Я не видел Вашей конфигурации, но могу предположить, что общие модули и формы могли быть переименованы. Тем не менее, ЧекККМ обязан присутствовать в списке.

    Хотя, я и про модули не уверен. Дело в том, что это некий стандарт написания типовых кофигураций на управляемых формах от 1С.

    Можете выложить список объектов конфигурации (Конфигурация — Отчет по конфигурации)? Очень интересно.

    Reply
  16. urktar

    (15)

    Вот отчет по конфигурации

    Reply
  17. karapuzzzz

    (16) urktar,

    Не могу найти:

    — ОбщийМодуль.ПодключаемоеОборудование1СФискальныйРегистраторЭмулятор

    — ОбщаяФорма.ФормаНастройки1СФискальныйРегистраторЭмулятор

    — Документ.ЧекККМ

    — Документ.ЧекККМВозврат

    1. Попробуй ОбщиеМодули.ПодключаемоеОборудованиеУниверсальныйДрайверКлиент

    2. Попробуй ОбщиеФормы.ФормаНастройкиУниверсальныйДрайвер

    3. Документ ЧекККМ у тебя есть.

    4. Вместо него используется тот же документ ЧекККМ. Для разделения используется ВидОперации.

    Судя по этому, без программиста не разобраться. Я не думаю, что структура модулей одинаковая, а различия только в названии.

    Reply
  18. urktar

    благодарю (17) за адекватный и качественный ответ.

    Чтожжж есть у меня на примете программист, придется его подключать.

    Reply
  19. kaiman_fedor_yandex

    Коллеги, добрый день.

    Если речь идет о рознице 2.0 …., вот тот здесь вы велосипед изобретаете

    1. Настраивается в оборудовании 1С Эмулятор (Фискальный регистратор)

    2. В настройках кассы ставите ЕНВД

    3. Товарный Чек для принтера документов

    Reply
  20. karapuzzzz

    (19) kaiman_fedor_yandex, для Розницы 2.0 это действительно велосипед. Но сабж писался под УТ 3.0 для Украины. А там, к сожалению, такого фокуса нет.

    Reply
  21. VintikComUa

    Для Розницы

    Исправлены ошибки:

    00001082: Нарушения стандарта наименования модулей. Модуль МенеджерОборудованияПереопределяемый переименован МенеджерОборудованияКлиентСерверПереопределяемый;

    Reply
  22. PYCTAM

    (14) urktar,

    Привет. Ну как решил проблему?

    Готов купить такую обработку для Казахстана

    Reply
  23. FreeArcher

    Кто пользовался данным методом, подскажите, отрезка бумаги работать будет? Не у видел по коду этого момента.

    Reply
  24. karapuzzzz

    (23) FreeArcher, есть принципиальная разница между фискальным регистратором и принтером чеков. Фискальный регистратор это устройство, принимающее определенные команды для регистрации торговых операций. У него есть отдельная команда на обрезку чека (или автоматическая обрезка после закрытия чека). А вот принтер чеков это просто принтер, которому на вход подается уже сформированный печатный макет. Никаких специфических команд принтеру не требуется. Если принтер поддерживает обрезку, то в его настройках устанавливается режим обрезки. Скорее всего, обрезка происходит после печати очередной страницы. Т.к. лента длинная, то окончание страницы это или конец всего документа или разрыв страницы. Т.е. после команды «ТабДок.Напечатать()» будет произведена печать макета и его автоматическая обрезка.

    Reply
  25. FreeArcher

    (24) Спасибо, что отозвался.

    Но как то не так получается. Для конкретики, принтер чеков Sam4s Ellix 50DB (Com/USB/Ethernet). В Рознице 2.0, он прекрасно подключается и работает через макет чека, как и фискальный регистратор с обрезкой бумаги.

    В УТ 11, так подключить его нельзя, в РМК просто нет возможности выбрать принтеры чеков. Сейчас я на него печатаю, через макет и ТабличныйДокумент. Обрезка не работает, и с разрывом страницы тоже.

    Я не могу понять, в какую сторону мне копать, чтобы научить принтер отрезать бумагу. Переписывать РМК, или может какие то драйвера другие надо (опыта с оборудованием мало у меня). Если знаешь, то направь в нужное русло, может смогу и сам разобраться.

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

    Reply
  26. karapuzzzz

    (25) FreeArcher, УТ 11 это российская конфигурация. УТ 3.0 (для которой писался сабж) — украинская. Если в УТ 11 есть какие-то нюансы, то я не в курсе. Что касаемо принтера, то он поддерживает несколько разных типов драйверов, попробуйте почитать на эту тему. Разные драйвера ведут себя по-разному (что не удивительно т.к. там заложены разные принципы работы и драйвер с принтером общаются разным набором команд).

    Reply
  27. sgristiuk

    karapuzzzz Здравствуйте! Есть ли возможность за одельную плату помочь в настройке данного процеса на рознице для Украины?

    Сам не прогромирую в 1С — но потребность в печати на вин принтер есть. Спосибо. support@kolos.in.ua

    Reply
  28. Olegsiol

    Добрый день! Есть вопрос к автору данной обработки. В архиве полная версия обработки? Внес представленный механизм в УТ 3.0 для Украины, печатает шапку и конец чека, а также часть секции итого (оплачено, сдача). Тестировал на чек.принтере UNS.TP 51.02U

    P.S. Разобрался. Всё работает.)) Подправил чуть МенеджерОборудованияПереопределяемый,ПодключаемоеОборудование1СФискальныйРегистраторЭмулятор, Документ ЧекККМ.ФормаДокументаМастер, Документ ЧекККМ Возврат.ФормаДокумента, ФискальныйРегистраторКассираПринтер.

    Автору благодарочка, за предоставленный код.

    Reply
  29. vitaliyonpu

    На 3.1 кто-то перекладывал? там функции в основном модуле ПодключаемоеОборудованиеУниверсальныйДрайверКлиент совсем другие по тексту

    Reply
  30. Posipaka

    (29) Я делал под 3.1.2.4 Да, там все по другому немного реализовано, но по логике можно разобраться.

    Reply
  31. user656374_ayup27

    Приветствую гуру. Хочу ввести печать чеков на вин-принтере Xprinter XP-360b. Единственная вразумительная статья эта. Но 90% кода не относится к конфигурации Розница 2.2.5.21. Мож у кого есть наработки в данном направлении?

    Reply
  32. kaiman_fedor_yandex

    ??? а что стоит подключить принтер и сделать то что описано в #19, это работает и в рознице 2.2

    Reply
  33. gely

    Ко пришлось доработать, так как змеилась конфигурация. Но се работает спасибо.

    Reply
  34. user763001

    Не получается прикрутить к УТ 3.1.5.1 🙁

    Reply
  35. shtepin

    в УТ 3.1.3.4 должно работать?

    Reply
  36. ketr

    а z-отчет или X-отчет будут печататься?

    Reply
  37. serglipovy

    Инвините, но не нашел в Рознице 2.0 для Украины такой настройки «Формировать нефискальные чеки» 🙁

    Reply
  38. izyum

    Эхх если бы на УТ 3.1 прикрутить.

    Reply
  39. 7OH

    (17) у вас УТ 3.1 ?

    У меня вот 3.1 и тоже не нахожу этих модулей ?

    У вас вышло ? буду признателен за советы

    Reply
  40. 7OH

    Судя по теме — на 3.1 или некто не смог или кто смог сюда больше не заглядывает.

    Reply
  41. karapuzzzz

    Для всех, кто пытается прикрутить к 3.1. Не вижу причины считать, что это возможно используя предоставленный здесь механизм. Вполне возможно, что такие танцы с бубном уже и не нужны и как в случае с Розницей достаточно использовать уже встроенный механизм. Сам я с 3.1 не сталкивался т.к. единственный мой клиент на УТ продолжает работать на версии 3.0

    Reply
  42. dan_dox

    (41) Вы имеете в виду в Рознице «товарный чек для принтера документа»? не получается использовать этот режим для автоматической печати на принтер. Необходимо подтверждение печати в окне предпросмотра. Как сделать автоматическую печать? нигде в Рознице 2.0 не нашел как задать параметр для печати без предпросмотра. Похоже ни один документ не использует этот режим

    Reply
  43. karapuzzzz

    (42) Нет, При печати чека через меню «Печать» происходит печать товарного чека, который является копией чека. Например, если клиент потерял свой чек. В этом случае мы имеем дело с обычным макетом документа и печатной формой. В случае с фискальным регистратором используется другой механизм. Для этого надо добавлять к рабочему мету торговое оборудование типа «Фискальный регистратор» и как драйвер выбирать «Эмулятор фискального регистратора».

    Reply
  44. dan_dox

    (43) пытался реализовать идею, в которой после отработки по фискальному эмулятору вызывалась бы печать на принтер по умолчанию (чековый принтер) шаблона чеков (товарный чек для принтера документов). Все получилось, открывается окно предпросмотра шаблона, а вот обойти предпросмотр для автопечати не получилось.

    Reply
  45. karapuzzzz

    (44) Конфигурация написана на БСП (библиотека стандартных подсистем). Надо смотреть её описание и настройки. Там должна быть возможность пускать на печать без предпросмотра.

    Reply

Leave a Comment

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