При переходе на требования 54-ФЗ многие сталкиваются с ситуацией, когда доработанная конфигурация 1С:Розница 2.0 успешно работает с фискальными регистраторами «Штрих-М», но при попытке подключить оборудование «АТОЛ» стандартные механизмы отказываются работать. Полное обновление конфигурации до редакции 2.2 или 2.3 часто невозможно из-за масштабных доработок учетной системы. Разберем, почему возникает эта проблема и какие существуют способы интеграции ККТ АТОЛ в старую редакцию программы.
Проанализируем технические различия в реализации взаимодействия 1С с кассовым оборудованием разных производителей:
ККТ с передачей данных требуют передачи фискального документа единым пакетом в формате XML или JSON. В конфигурации «Розница 2.0» механизмы сборки таких пакетов и современные интерфейсы вызова драйвера в подсистеме БПО попросту отсутствуют.Рассмотрим наиболее надежный способ интеграции, сохраняющий стандартную архитектуру 1С. Вместо переписывания всей базы выполняется выборочное обновление подсистемы Библиотека подключаемого оборудования.
Разберем процесс по шагам:
ДрайверыОборудования, ПодключаемоеОборудование, а также связанные регистры сведений и перечисления (в частности, типы подключаемого оборудования, где присутствует значение для ККТ с передачей данных).ЧекККМ и обработке рабочего места кассира перенаправляем вызовы фискализации: передачу открытия смены, закрытия смены (Z-отчет) и печати чека направляем в обновленные методы нового общего модуля БПО.Если внесение изменений в структуру метаданных конфигурации нежелательно, можно вынести логику взаимодействия с кассой во внешнюю компоненту или обработку обслуживания торгового оборудования.
В этом случае логика работы строится следующим образом:
ЧекККМ.AddIn.Fptr10).Посмотрим на пример базовой инициализации драйвера АТОЛ через Native API / COM в коде 1С:
// Пример создания и проверки подключения к драйверу ККТ АТОЛ 10
Попытка
ДрайверККТ = Новый COMОбъект("AddIn.Fptr10");
Исключение
ВызватьИсключение "Не удалось инициализировать драйвер ККТ АТОЛ. Проверьте установку ДККТ 10.";
КонецПопытки;
ДрайверККТ.setSingleSetting(ДрайверККТ.LIBFPTR_SETTING_MODEL, Строка(ДрайверККТ.LIBFPTR_MODEL_ATOL_AUTO));
ДрайверККТ.setSingleSetting(ДрайверККТ.LIBFPTR_SETTING_PORT, Строка(ДрайверККТ.LIBFPTR_PORT_COM));
ДрайверККТ.setSingleSetting(ДрайверККТ.LIBFPTR_SETTING_COM_FILE, "COM3");
ДрайверККТ.setSingleSetting(ДрайверККТ.LIBFPTR_SETTING_BAUDRATE, Строка(ДрайверККТ.LIBFPTR_BAUDRATE_115200));
Если ДрайверККТ.applySingleSettings() <> 0 Тогда
ВызватьИсключение "Ошибка применения настроек: " + ДрайверККТ.errorDescription();
КонецЕсли;
ДрайверККТ.open();
Если Не ДрайверККТ.isOpened() Тогда
ВызватьИсключение "Не удалось подключиться к кассе: " + ДрайверККТ.errorDescription();
КонецЕсли;
Еще один практичный вариант для кастомизированных баз — настройка локального HTTP-сервиса фискализации. В 1С пишется простой экспорт структуры чека в формате JSON, который по протоколу HTTP отправляется на локальный веб-сервер, управляющий фискальным регистратором.
Преимущества данного подхода:
При реализации любого из выбранных вариантов важно учитывать обязательные правила работы кассового оборудования нового образца: