При автоматизации рабочего места кассира на базе конфигурации «1С:Управление торговлей 10.3» (обычные формы) часто возникает задача оформить взаимодействие с клиентом через дисплей покупателя (например, популярные модели Posiflex PD-2800 с драйверами АТОЛ). Клиенты ожидают увидеть надпись «Добро пожаловать!» при открытии нового чека или простое кассы, а после успешной оплаты — сообщение «Спасибо за покупку!».
Разберем, почему штатных настроек программы недостаточно и какими способами можно реализовать требуемое поведение оборудования.
Проанализируем архитектуру работы с торговым оборудованием в типовых решениях 1С:
Таким образом, для динамической смены приветствия и благодарности по таймеру необходима программная доработка модуля формы документа или рабочего места кассира.
Если требуется выводить надпись «Добро пожаловать!» только при старте оборудования и сбросе экрана, рассмотрим аппаратный вариант:
Этот текст будет автоматически отображаться при включении питания и очистке экрана. Однако для отображения фразы «Спасибо за покупку!» после проведения документа всё равно потребуется отправка команды из 1С.
Рассмотрим доработку типовой конфигурации. Основная логика вывода информации на экран покупателя сосредоточена в форме документа ЧекККМ (или специализированной форме РМК, если кассиры работают в режиме интерфейса кассира).
В модуле формы документа ЧекККМ найдем типовую процедуру отправки данных на дисплей:
Процедура ВывестиИнформациюНаДисплейПокупателя(Данные)
// Штатный вызов метода работы с торговым оборудованием
ПолучитьСерверТО().ВывестиИнформациюНаДисплейПокупателя(Данные);
КонецПроцедуры
Разберем по шагам, как выстроить сценарий показа сообщений:
ПриОткрытии формы документа или в процедуре очистки/создания нового чека вызовем передачу текста приветствия.Посмотрим на пример реализации данного алгоритма в модуле формы документа ЧекККМ:
// Процедура отображения стартового баннера
Процедура ВывестиПриветствие() Экспорт
ТекстПервойСтроки = " Добро пожаловать! ";
ТекстВторойСтроки = " Касса свободна ";
ДанныеДляДисплея = Новый Структура("Строка1, Строка2", ТекстПервойСтроки, ТекстВторойСтроки);
ВывестиИнформациюНаДисплейПокупателя(ДанныеДляДисплея);
КонецПроцедуры
// Процедура отображения благодарности после печати чека
Процедура ВывестиБлагодарность()
ТекстПервойСтроки = "Спасибо за покупку! ";
ТекстВторойСтроки = " Ждем Вас снова! ";
ДанныеДляДисплея = Новый Структура("Строка1, Строка2", ТекстПервойСтроки, ТекстВторойСтроки);
ВывестиИнформациюНаДисплейПокупателя(ДанныеДляДисплея);
// Подключаем однократный возврат к приветствию через 5 секунд
ПодключитьОбработчикОжидания("ВывестиПриветствие", 5, Истина);
КонецПроцедуры
Важное замечание: третий параметр метода ПодключитьОбработчикОжидания установлен в значение Истина (однократный вызов). Это исключает циклические постоянные обращения к оборудованию. Категорически не рекомендуется использовать синхронные задержки или холостые циклы ожидания в основном потоке, так как это заблокирует работу интерфейса кассира.
При выводе русских сообщений на экран дисплея покупателя проанализируем частые ошибки с кодировками: