Рассмотрим распространенную и весьма болезненную для многих розничных сетей проблему: интеграцию онлайн-кассы, соответствующей требованиям 54-ФЗ, с устаревшей и сильно доработанной конфигурацией 1С:Розница 2.1 (например, релиза 2.1.8.14 выпуска 2015 года). Ситуация часто осложняется тем, что в системе развернуты и активно функционируют нетиповые механизмы обмена в распределенной информационной базе (РИБ) и обмены с 1С:Управление торговлей. Прямое обновление конфигурации до актуальных версий (например, до линейки 2.3 или 3.0) грозит полной потерей кастомизации, длительным простоем магазинов и колоссальными затратами на программирование. Выясним, как решить этот вопрос с минимальными рисками и финансовыми вложениями.
Проанализируем техническую сторону вопроса. В релизах 2015 года используется устаревшая версия встроенной подсистемы БПО (Библиотека подключаемого оборудования). На тот момент законодательство не требовало онлайн-передачи чеков в ОФД, работы с маркировкой товаров в системе «Честный ЗНАК» и поддержки современных форматов фискальных данных (ФФД 1.05 и ФФД 1.2).
Попытка подключить современную онлайн-кассу (например, АТОЛ 25Ф или ШТРИХ-М-01Ф) через старый встроенный драйвер приведет к ряду критических ошибок:
РМК).Поэтому стандартный механизм подключения оборудования здесь бессилен, и нам потребуются альтернативные обходные пути.
Это наиболее практичный и малозатратный путь для систем с высокой степенью кастомизации. Вместо того чтобы переписывать всю конфигурацию или обновлять БПО (что крайне трудоемко и может нарушить логику обменов), мы можем внедрить специализированную внешнюю обработку обслуживания ККТ.
Разберем этот процесс по шагам:
БПО. Такие обработки обращаются напрямую к современным API драйверов производителей касс (например, к драйверу АТОЛ ДТО 10.х или Штрих-М 5.х), минуя устаревшие механизмы платформы.ПодключаемоеОборудованиеРТ.Посмотрим на пример кода, реализующий прямую инициализацию драйвера АТОЛ 10-й версии в обход стандартной БПО:
// Пример инициализации драйвера нового поколения АТОЛ ДТО 10 в обход БПО
Попытка
ДрайверККТ = Новый COMОбъект("Atol.AtolDeviceSingle54");
ДрайверККТ.setSingleSetting("Model", "67"); // Код модели кассы
ДрайверККТ.setSingleSetting("Port", "3"); // Способ подключения (USB/COM)
ДрайверККТ.applySingleSettings();
ДрайверККТ.open();
Если ДрайверККТ.isOpened() Тогда
Сообщить("Связь с ККТ успешно установлена.");
Иначе
ВызватьИсключение "Не удалось открыть порт ККТ!";
КонецЕсли;
Исключение
Сообщить("Ошибка инициализации драйвера: " + ОписаниеОшибки());
КонецПопытки;
Если в вашем магазине планируется или уже ведется продажа маркированных товаров (что требует строгого соблюдения ФФД 1.2 с онлайн-проверкой кодов маркировки прямо на кассе перед пробитием), то даже внешняя обработка может не спасти ситуацию. Сама логика РМК в 1С:Розница 2.1 физически не умеет корректно обрабатывать сессии с серверами маркировки. В этом случае мы рекомендуем применить архитектурный паттерн разделения систем:
1С:Розница 2.1 для ведения складского учета, ценообразования, работы с РИБ и выгрузки в 1С:Управление торговлей. Здесь ничего менять не нужно, вся бизнес-логика остается в безопасности.1С:РМК, 1С:Касса или профессиональный кассовый софт сторонних разработчиков (например, Frontol 6). Эти программы обновляются разработчиками регулярно и поддерживают абсолютно все требования 54-ФЗ и маркировки «из коробки».1С:Розница 2.1 на кассы выгружается каталог товаров со штрихкодами и ценами, а в конце смены с касс загружаются готовые файлы с результатами продаж, на основании которых в 1С создаются документы ОтчетОРозничныхПродажах.Этот подход полностью исключает риски поломки базы данных при регулярных изменениях в кассовом законодательстве и гарантирует 100% соответствие требованиям налоговой службы.
Если вы твердо решили оставить кассовую зону внутри старой Розницы, но не хотите использовать платные сторонние обработки, можно рассмотреть вариант ручной интеграции более свежих модулей БПО в вашу нетиповую конфигурацию.
Рассмотрим этот процесс подробнее:
1С:Розница 2.3 (или чистую БПО актуальной версии) и перенести основные объекты метаданных, связанные с подключаемым оборудованием: общие модули МенеджерОборудованияКлиентСервер, МенеджерОборудованияВызовСервера, а также соответствующие справочники и регистры.ФФД 1.05 (такие как признак предмета расчета, ставка НДС и т.д.).Посмотрим на пример заполнения структуры маркированного товара в XML чека при ручной доработке модуля формирования чека:
// Пример добавления маркированного кода в XML чека при ручной доработке БПО
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку();
ЗаписьXML.ЗаписатьНачалоЭлемента("FiscalString");
ЗаписьXML.ЗаписатьАтрибут("Name", ТекущаяСтрока.Номенклатура.Наименование);
ЗаписьXML.ЗаписатьАтрибут("Quantity", Формат(ТекущаяСтрока.Количество, "ЧДЦ=3; ЧГ=0"));
ЗаписьXML.ЗаписатьАтрибут("PriceWithDiscount", Формат(ТекущаяСтрока.Цена, "ЧДЦ=2; ЧГ=0"));
// Если товар маркированный, передаем код маркировки в ККТ
Если ЗначениеЗаполнено(ТекущаяСтрока.КодМаркировки) Тогда
ЗаписьXML.ЗаписатьАтрибут("MarkingCode", ТекущаяСтрока.КодМаркировки);
КонецЕсли;
ЗаписьXML.ЗаписатьКонецЭлемента(); // FiscalString
Выбор оптимальной стратегии зависит от специфики ваших товаров. Если вы продаете простой товар без обязательной маркировки (например, канцелярию или стройматериалы), самым быстрым и надежным решением будет использование качественной внешней обработки и драйвера АТОЛ ДТО 10. Если же в вашем ассортименте присутствует маркированная продукция (обувь, одежда, текстиль, молочная продукция), настоятельно рекомендуем отказаться от кассовой зоны внутри старой 1С и перейти на схему «Бэк-офис + Фронт-офис». Это убережет вас от постоянных доработок старой системы при очередных изменениях законодательства.