Перевод старых нетиповых конфигураций на работу с современными контрольно-кассовыми аппаратами по требованиям 54-ФЗ — классическая задача, с которой сталкиваются разработчики при поддержке исторических систем. Ситуация часто осложняется тем, что база 1С:Управление торговлей 10.3 переписана настолько сильно, что стандартное обновление до актуальных релизов становится экономически нецелесообразным или требует сотен часов ручного объединения кода.
Проанализируем технические варианты решения этой проблемы, разберем возможные подводные камни законодательства и выберем оптимальную стратегию перехода на кассы с передачей данных с минимальными затратами ресурсов.
Самый быстрый и наименее инвазивный путь — использование специализированных внешних обработок обслуживания (ТО), созданных независимыми разработчиками для интеграции с популярными драйверами (в частности, АТОЛ и ШТРИХ-М).
Разберем особенности этого подхода:
УТ 10.3 содержали архаичный механизм торгового оборудования, где тип устройства жестко определялся как «Фискальный регистратор», а не «ККТ с передачей данных». Специализированные обработки обходят это ограничение: они регистрируются в системе как обычный фискальный регистратор, но внутри взаимодействуют с современными драйверами ККТ.ЧекККМ, ПриходныйКассовыйОрдер или ОплатаОтПокупателяПлатежнойКартой.Если готовые внешние обработки не подходят под архитектуру ваших доработок, реализуем прямое управление кассой из модуля документа или специального общего модуля. Современные драйверы производителей кассовой техники (например, драйвер АТОЛ версии 10) позволяют фискализировать чек целиком через передачу одной структуры в формате JSON.
Посмотрим на пример формирования и отправки чека через драйвер ККТ по COM-модели:
// Создаем экземпляр драйвера ККТ
ДрайверККТ = Новый COMОбъект("AddIn.Fptr10");
// Устанавливаем параметры соединения (канал, порт, скорость)
ДрайверККТ.setSingleSetting(ДрайверККТ.LIBFPTR_SETTING_MODEL, Строка(ДрайверККТ.LIBFPTR_MODEL_ATOL_AUTO));
ДрайверККТ.setSingleSetting(ДрайверККТ.LIBFPTR_SETTING_PORT, Строка(ДрайверККТ.LIBFPTR_PORT_COM));
ДрайверККТ.setSingleSetting(ДрайверККТ.LIBFPTR_SETTING_COM_FILE, "COM3");
ДрайверККТ.applySingleSettings();
Если ДрайверККТ.open() <> 0 Тогда
ВызватьИсключение "Ошибка подключения к ККТ: " + ДрайверККТ.errorDescription();
КонецЕсли;
// Отправляем задание на печать через JSON-структуру
СтрокаЗаданияJSON = СформироватьJSONЧека(СсылкаНаДокумент);
ДрайверККТ.setParam(ДрайверККТ.LIBFPTR_PARAM_JSON_DATA, СтрокаЗаданияJSON);
Если ДрайверККТ.processJson() <> 0 Тогда
ОшибкаОписания = ДрайверККТ.errorDescription();
ДрайверККТ.close();
ВызватьИсключение "Ошибка фискализации чека: " + ОшибкаОписания;
КонецЕсли;
ДрайверККТ.close();
Рассмотрим преимущества прямого вызова:
В терминальных средах (RDP) или при распределенной работе проброс COM-портов часто приводит к зависаниям драйверов. В таких случаях эффективным решением становится использование автономного сервиса печати чеков (локального веб-сервера на базе драйвера ККТ).
Разберем по шагам, как работает данная схема:
POST с телом документа в формате JSON.1С:Управление торговлей 10.3 модуль печати формирует стандартный объект HTTPЗапрос и отправляет его объектом HTTPСоединение на адрес кассового сервера.Компания 1С выпустила штатную поддержку требований 54-ФЗ для платформы обычных форм начиная с релиза УТ 10.3.40.1. В этот релиз и последующие версии были включены обновленные подсистемы торгового оборудования, механизмы работы с ККТ с передачей данных и новые форматы фискальных документов.
Проанализируем шаги обновления нетиповой конфигурации:
10.3.40.1 (или более свежий релиз линейки 10.3) с выбором режима объединения, сохраняя только критически важные доработки учетной политики и печатных форм.Какой бы путь интеграции мы ни выбрали, необходимо учитывать ряд обязательных требований:
УТ 10.3 отсутствуют реквизиты 54-ФЗ: признак способа расчета (предоплата, аванс, полный расчет), признак предмета расчета (товар, услуга), ИНН покупателя-юрлица и контактные данные для отправки электронного чека. Их необходимо либо жестко прописать по умолчанию в алгоритме печати, либо добавить минимальные реквизиты на экранные формы документов.УТ 10.3 работает под 32-разрядным клиентом 1С. Все COM-библиотеки внешних драйверов ККТ должны быть обязательно зарегистрированы в 32-битной подсистеме Windows (папка SysWOW64).1С:Розница), связанную с УТ через обмен данными.