1С УПРАВЛЕНИЕ ТОРГОВЛЕЙ И ИНТЕРНЕТ-МАГАЗИН БИТРИКС

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 все тоже самое.


Комментарии

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Спасибо, буду копать дальше.

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


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