31 марта 2016

УТ 11 и принтер чеков

Приветствую! В этой статье я расскажу, как совсем небольшими доработками реализовать печать кассовых чеков на принтер чеков в 1С:Управление торговлей ред. 11.
Причем рассмотрим 2 варианта доработок:
  1. Печать на принтер чеков из Рабочего места кассира из УТ 11
  2. Печать на принтер чеков из документов ПКО и РКО (Приходные и расходные кассовые ордера)

Печать на принтер чеков из Рабочего места кассира


Есть такая проблема, что в 1С Управление торговлей 11 не работает принтер чеков. Хотя его можно добавить в интерфейсе Подключение и настройка оборудования.

Подключение и настройка оборудования

Но тем не менее в настройках Рабочего места кассира (РМК) нет возможности выбрать принтер чеков.

Настройка РМК

Давайте разберемся почему так и как это можно исправить?

Если отвечать на вопрос "Почему?", то скорее всего 1С просто сделала ограничение на работу с принтерами чеков в УТ 11. Но поскольку библиотека подключаемого оборудования общая потенциально такая возможность есть. И далее я расскажу, как совсем небольшими доработками обмануть 1С.

Начнем.

На самом деле отсутствие возможности выбора принтера чеков в окне Настройка РМК в том, что просто в параметры выбора реквизита ПодключаемоеОборудование не добавлена возможность выбрать принтер чеков. Это первое, что нужно исправить.
Сначала нужно включить возможность изменения для конфигурации, если она стоит на поддержки.

Включение возможности изменения

Далее включаем изменения в справочнике НастройкиРМК в табличной части КассыККМ - реквизит ПодключаемоеОборудование.
После этого необходимо в параметры выбора этого реквизита добавить возможность выбрать значение ПринтерЧеков.

Правим настройки РМК

Редактирование параметров выбора

После этих настроек появится возможность выбрать принтер чеков в настройках оборудования РМК.

Настройка РМК выбор принтера чеков

Вот и все, после этих настроек уже будет печать чека идти на принтер чеков. Так же будет работать обрезка бумаги.

Единственное замечание. Если у вас не включено в настройках несколько Касс ККМ, то придется снять с поддержки Форму элемента справочника Настройки РМК и отредактировать отбор в реквизите формы ПодключаемоеОборудование.

Настройки РМК форма элемента

Все по аналогии с реквизитом табличной части. Добавляем в отбор оборудование Принтер чеков.

Настрока принтера чеков в РМК


Вот так просто решается проблема с принтером чеков в 1С УТ 11. Дальше мы разберемся с шаблоном чека и процедурами подготовки чека для печати.

Где настраивается шаблон чека?

Дальше, что может потребоваться в работе это изменить текст вывода в чек. Если в 1С Розница есть возможность настроить макет чека ККМ, то в УТ 11 такой возможности нет. Формирование текста чека производится в коде 1С.

Сейчас я расскажу, где в коде можно изменить формирование чека.
Первое, где можно увидеть данные формирования текста чека это в форме документа ЧекККМ форма ФормаДокументаРМК. Функция ПараметрыЧека().
Приведу частично код:

  СтрокаТаблицыТоваров = Новый СписокЗначений();
  СтрокаТаблицыТоваров.Добавить(Строка(СтрокаТЧ.Номенклатура)); /  1 - Наименование
  СтрокаТаблицыТоваров.Добавить(СтрокаТЧ.Штрихкод);             /  2 - Штрихкод
  СтрокаТаблицыТоваров.Добавить("");                            /  3 - Артикул
  СтрокаТаблицыТоваров.Добавить(1);                             /  4 - Номер отдела
  СтрокаТаблицыТоваров.Добавить(СтрокаТЧ.Цена);                 /  5 - Цена за позицию без скидки
  СтрокаТаблицыТоваров.Добавить(СтрокаТЧ.КоличествоУпаковок);   /  6 - Количество
  СтрокаТаблицыТоваров.Добавить("");                            /  7 - Наименование скидки/наценки
  СтрокаТаблицыТоваров.Добавить(СуммаСкидки);                   /  8 - Сумма скидки/наценки
  СтрокаТаблицыТоваров.Добавить(ПроцентСкидки);                 /  9 - Процент скидки/наценки
  СтрокаТаблицыТоваров.Добавить(Сумма);                         / 10 - Сумма позиции со скидкой
  СтрокаТаблицыТоваров.Добавить(0);                             / 11 - Номер налога (1)
  СтрокаТаблицыТоваров.Добавить(СтрокаТЧ.СуммаНДС);             / 12 - Сумма налога (1)
  СтрокаТаблицыТоваров.Добавить(СтавкаНДС * 100);               / 13 - Процент налога (1)
  СтрокаТаблицыТоваров.Добавить(0);                             / 14 - Номер налога (2)
  СтрокаТаблицыТоваров.Добавить(0);                             / 15 - Сумма налога (2)
  СтрокаТаблицыТоваров.Добавить(0);                             / 16 - Процент налога (2)
  СтрокаТаблицыТоваров.Добавить("");                            / 17 - Наименование секции форматирования товарной строки
  СтрокаТаблицыТоваров.Добавить(ПараметрыАлкогольнойПродукции); / 18 - Параметры алкогольной продукции

В этой обработке формируются массивы входных параметров для драйвера оборудование. (Равна такая же процедура присутствует и в документе Чек ККМ на возврат).
Сам же шаблон чека формируется в общем модуле  МенеджерОборудованияКлиентПереопределяемый в функции СформироватьШаблонЧека(ВходныеПараметры, ДополнительныйТекст = Неопределено). Там находится следующий код:

 / Общие параметры чека
 ПараметрыЧека = Новый Структура();
 ПараметрыЧека.Вставить("ТипЧека"        , ТипыЧеков.Получить(ОбщиеПараметры[0]));
 ПараметрыЧека.Вставить("ФискальныйЧек"  , ОбщиеПараметры[1]);
 ПараметрыЧека.Вставить("ТекстШапки"     , ?(ОбщиеПараметры.Количество() > 7, ВРег(ОбщиеПараметры[6]), ""));
 ПараметрыЧека.Вставить("ТекстПодвала"   , ?(ОбщиеПараметры.Количество() > 8, ВРег(ОбщиеПараметры[7]), ""));
 ПараметрыЧека.Вставить("НомерЧека"      , ?(ОбщиеПараметры.Количество() > 10, ОбщиеПараметры[9], ""));
 ПараметрыЧека.Вставить("НомерКассы"     , ?(ОбщиеПараметры.Количество() > 11, ОбщиеПараметры[10], ""));
 ПараметрыЧека.Вставить("ДатаВремя"      , ?(ОбщиеПараметры.Количество() > 12, ВРег(ОбщиеПараметры[11]), ""));
 ПараметрыЧека.Вставить("ИмяКассира"     , ?(ОбщиеПараметры.Количество() > 13, ВРег(ОбщиеПараметры[12]), ""));
 ПараметрыЧека.Вставить("ОрганизацияНазвание", ?(ОбщиеПараметры.Количество() > 14, ВРег(ОбщиеПараметры[13]), ""));
 ПараметрыЧека.Вставить("ОрганизацияИНН"     , ?(ОбщиеПараметры.Количество() > 15, ОбщиеПараметры[14], ""));

Здесь 1С формирует структуру параметров из которой будет строится строка текста. Т.е. чек в итоге это просто одна длинная строка текста, которая формируется в этом же модуле в функции СформироватьТексНефискальногоЧека(ШиринаСтроки, ОбщиеПараметры, ПозицииЧека, ТаблицаОплат). Вот таким образом:

 
 / Сформировать шапку чека.
 Текст = Разделитель;
 Если ОбщиеПараметры.Свойство("ОрганизацияНазвание") И НЕ ПустаяСтрока(ОбщиеПараметры.ОрганизацияНазвание) Тогда
  Текст = Текст + МенеджерОборудованияКлиент.ВыстроитьПоля(ОбщиеПараметры.ОрганизацияНазвание, , ШиринаСтроки) + Символы.ПС;
 КонецЕсли;
 
 Если ОбщиеПараметры.Свойство("ТекстШапки") И НЕ ПустаяСтрока(ОбщиеПараметры.ТекстШапки) Тогда
  Текст = Текст + МенеджерОборудованияКлиент.ВыстроитьПоля(ОбщиеПараметры.ТекстШапки, , ШиринаСтроки) + Символы.ПС;
 КонецЕсли;
 
 НомерКассы = ?(ОбщиеПараметры.Свойство("НомерКассы") И НЕ ПустаяСтрока(ОбщиеПараметры.НомерКассы),
  НСтр("ru='КАССА'") + Символы.НПП + ОбщиеПараметры.НомерКассы, "");
 
 ОрганизацияИНН = ?(ОбщиеПараметры.Свойство("ОрганизацияИНН") И НЕ ПустаяСтрока(ОбщиеПараметры.ОрганизацияИНН),
  НСтр("ru='ИНН'") + Символы.НПП + ОбщиеПараметры.ОрганизацияИНН, "");
 
 Если Не ПустаяСтрока(НомерКассы) Или НЕ ПустаяСтрока(ОрганизацияИНН) Тогда
  Текст = Текст + МенеджерОборудованияКлиент.ВыстроитьПоля(НомерКассы, ОрганизацияИНН, ШиринаСтроки) + Символы.ПС;
 КонецЕсли;
 
 НомерЧека = ?(ОбщиеПараметры.Свойство("НомерЧека") И НЕ ПустаяСтрока(ОбщиеПараметры.НомерЧека),
  НСтр("ru='ЧЕК №'") + ОбщиеПараметры.НомерЧека, "");
 Если Не ПустаяСтрока(НомерЧека) Тогда
  Текст = Текст + МенеджерОборудованияКлиент.ВыстроитьПоля(ОбщиеПараметры.ТипЧека, НомерЧека, ШиринаСтроки) + Символы.ПС;
 Иначе
  Текст = Текст + МенеджерОборудованияКлиент.ПостроитьПоле(ОбщиеПараметры.ТипЧека, ШиринаСтроки) + Символы.ПС;
 КонецЕсли;


Что же во всем этом можно или нужно поправить?

Я правил следующее. Вывод в печатный чек номера чека, т.к. в процедуре номер чека всегда равен единицы и судя по всему формируется в фискальном регистраторе, а затем передается в 1С в поле НомерЧека. А нам же требуется выводить номер документа из 1С. Это же относится и к чеку на возврат.
И ещё один момент. При выборе чека на возврат (день в день) в списке пробитых чеков не отображаются номер чека, по этому в динамическом списке выбора необходимо поменять запрос и подменить поле НомерЧека на Номер.


Дополнение

Печать на принтер чеков из документов ПКО и РКО

Печать из Рабочего места кассира мы сделали, но также есть возможность и необходимость печать чеки из документа реализации, точнее из документов Приходный кассовый ордер (ПКО) и Расходный кассовый ордер (РКО). Это актуально для тех компаний, которые не используют РМК, пробивают чеки непосредственно из реализации товаров. Например, у них розничная продажа идет по заказам, или используются ордерные склады, или просто считают, что работать из документов реализации удобнее. При небольшом объеме продаж так работать можно. Но с увеличением количества документов оформляемых в день, я бы рекомендовал переходить на Чеки ККМ, т.к. документ Реализация товаров дает большую нагрузку на базу 1С.
Ну вернемся к доработке.
За печать из документов ПКО и РКО отвечает процедура ПечатьЧека() в модуле формы документа, которая вызывает процедуру ПечатьЧекаЗавершение(Результат, ДополнительныеПараметры). Её нам и нужно будет подкорректировать.
Но для начала нужно снять с поддержки форму документа ПКО. Для этого переходим в Конфигуратор, меню Конфигурация - Поддержка - Настройка поддержки.

Конфигуратор. Настройка поддержки

Далее находим документ Приходный кассовый ордер, раскрываем дрего объекта до форм. И снимаем с поддержки Форму документа.

ПКО Форма документа


После этого можно в модуле формы внести изменения в код 1С. Нам потребуется в процедуре Процедура ПечатьЧекаЗавершение(Результат, ДополнительныеПараметры) Экспорт изменить кусок кода вызывающего выбор и подключения оборудования из общего модуля МенеджерОборудованияКлиент.

Печать на Принтер чекво из ПКО

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

Ещё, если вдруг не хотите править формы документов, то можно изменить вызов обработчика оборудования непосредственно в модуле МенеджерОборудованияКлиент. Тогда изменения будет распространятся сразу на оба документа ПКО и РКО, а править код придется только в одном месте.
Для этого также как с документом снимем с поддержки общий модуль МенеджерОборудованияКлиент.

МодульМенеджеоОборудованиеКлиент

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

Тип оборудования принтер чеков

И этого будет вполне достаточно. Единственное это все таки общий модуль и к нему обращаются различные объекты конфигурации. Внеся доработки в процедуру общего модуля  можно изменить (поломать) работу других объектов 1С, которые используют торговое оборудование. Так что править вызов функции из документов ПКО и РКО более правильный способ, чем поправить общий модуль.


От автора:
Ну собственно и все. Теперь имея некоторый опыт в разработке на 1С вы можете доработать вывод чека на принтер чеков в 1С Торговля 11 версии и не только в Рабочем месте кассира, но и Печать на принтер чеков из документов ПКО и РКО. Статья написана на примере конфигурации УТ 11.2.3, но и для УТ 11.1 все тоже самое.


Комментарии

Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
31.07.2019 | Яша

Статья очень интересная. Попытался внедрить это в версии УТ 11.4.8.84 я не смог найти раздел (После этого можно в модуле формы внести изменения в код 1С. Нам потребуется в процедуре Процедура ПечатьЧекаЗавершение(Результат, ДополнительныеПараметры) Экспорт изменить кусок кода вызывающего выбор и подключения оборудования из общего модуля МенеджерОборудованияКлиент.) Подскажите как все выше написанное применить в данной версии.

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
03.08.2019 | Администратор

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

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
23.04.2016 | Наталья

Здравствуйте, подскажите, пожалуйста, мы планируем обновится с 11.1 на 11.2 и у нас несколько розничных магазинов, в которых есть принтеры чеков, то есть получается, что после обновления все принтеры чеков перестанут работать? и нужно будет корректировать конфигурацию?

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
25.04.2016 | Администратор

Наталья, а разве в УТ 11.1 принтеры чеков работали в РМК?

В УТ 11.2 принтеры чеков не работают только в рабочем месте кассира (РМК). А так через настройку оборудования возможность добавить принтер чеков есть.

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
07.05.2016 | Абылай

Здравствуйте, после добавления принтер чеков в ПодключаемоеОборудование, у меня так и не появилось возможности выбрать его в НастройкахРМК. Но я проделал описанные вами действия уже после того, как добавил в программу все основные настройки, может ли причина быть в этом? Версия УТ 11.2.3.95

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
07.05.2016 | Абылай

Кстати после добавления принтер чеков в ПодключаемоеОборудование и запуска Предприятия, мне выдало предупреждение "Конфигурация базы данных не соответствует сохраненной конфигурации. Продолжить?".

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
08.05.2016 | Абылай

И еще мой принтер чеков подключен через USB в то время как в ПодлючаемомОборудовании его можно подключить только через com порт. Возможно стоит подключить через com на компе ? В данный момент подключаю на ноуте

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
08.05.2016 | Администратор

Абылай, это не важно. Ставьте в настройках COM и кодировку CP866.
Но если есть возможность физически подключить через ком-порт, то так работать будет надежнее и не нужен драйвер для эмуляции ком-порта.

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
08.05.2016 | Абылай

Большое спасибо за ответ, но выставление в настройках COM1 так же не дало результатов, и в настройкахРМК до сих пор нет возможности добавить Принтер чеков. :(

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
08.05.2016 | Абылай

А этот драйвер для эмуляции COM порта, его нужно отдельно ставить?

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
09.05.2016 | Абылай

Огромное спасибо как Вы и посоветовали после внесения изменений нажал в конфигурации F7 и изменения вступили в силу.

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
09.05.2016 | Сергей

Здравствуйте, может, поможете мне, все настроил, как вы сказали, устройство подключаю TSC TDP-225 через USB. В выборе он появился, настроил на него, но при печати в очереди печати появляется документ и тут же пропадает, а сама печать не происходит.

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
09.05.2016 | Абылай

Панели управления >> Устройства и Принтеры >> Правой кнопкой мыши по вашему принтеру >> Свойства принтера >> Вкладка Порты. По выбирайте доступные USB порты ставя на них галочки, и переключаясь на вкладку Общие нажимаите Пробная печать. Возможно принтер неправильно настроен. Если распечатает, то настройки верные.

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
09.05.2016 | Администратор

Сергей, а с Word печатает?

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
09.05.2016 | Сергей

Да печатает нормально из всех программ, даже просто документы 1С выводит, а из рабочего места кассира не печатает.

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
09.05.2016 | Абылай

Возможно требуется подключить через Com порт?

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
09.05.2016 | Сергей

Нет возможности через COM порт его подсоединить, только USB, а вы через СOM подсоединили?

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
09.05.2016 | Абылай

Я нет тоже через USB, если честно еще не было возможности проверить работоспособность в 1с. Проверю отпишу

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
09.05.2016 | Абылай

Еще информация для размышления. В Платформе версии выше 8.3.7, скорее всего после внесения изменений в конфигурацию, или же просто всегда начинает каждые 5-10 минут появляться окошко "Проверка правомерности использования конфигурации" которую можно либо отложить либо принять для ввода логина и пароля.

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
09.05.2016 | Абылай

Проверил принтер! Все работает!

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть
09.05.2016 | Абылай

Принтер подключен через USB и прекрасно работает через Рабочее место кассира.

Комментировать
Подписаться на комментарии
Защита от автоматических сообщений
CAPTCHA
Введите слово на картинке
29
Закрыть


Возврат к списку