При переходе на требования Федерального закона № 54-ФЗ пользователи и разработчики конфигурации «1С:Управление торговлей» редакции 11.0 сталкиваются с серьезным техническим ограничением: типовые механизмы программы изначально не рассчитаны на работу с современными онлайн-кассами (ФФД 1.05 и 1.2) и потоварную фискализацию при приеме наличных или безналичных оплат.
В старых версиях системы чек пробивался непосредственно из документа Приходный кассовый ордер (ПКО) без передачи товарного состава. Разберем правовые требования к чекам, выясним, почему старые схемы больше не работают, и подробно рассмотрим технические способы решения задачи подключения кассы (например, Атол 55Ф) к 1С:УТ 11.0.
Проанализируем ключевые моменты статьи 4.7 Федерального закона № 54-ФЗ, регулирующие состав реквизитов кассового чека:
ПриходныйКассовыйОрдер отсутствует табличная часть с товарами, состав номенклатуры для чека необходимо считывать из связанного документа-основания (РеализацияТоваровУслуг или ЗаказКлиента). Если основание не заполнено, чек может быть фискализирован только с признаком авансового платежа.Наиболее быстрый путь для УТ 11.0 без внесения масштабных правок в типовую конфигурацию — написание внешней обработки или расширения, которое взаимодействует напрямую с объектом драйвера производителя фискального регистратора (например, «Атол: Драйвер ККТ 10.х» через COM-соединение или NativeAPI).
Разберем алгоритм работы такой обработки по шагам:
AddIn.Fptr10.РеализацияТоваровУслуг).Товары и передача каждой строки номенклатуры в кассу.Посмотрим на пример структуры кода для работы с драйвером ККТ через COM-объект:
Драйвер = Новый COMОбъект("AddIn.Fptr10");
Драйвер.open();
// Открываем чек на приход (тип чека 1)
Драйвер.setParam(1022, 1); // Тег типа чека (Приход)
Драйвер.openReceipt();
// Получаем основание из ПКО
ДокументОснование = ОбъектПКО.ДокументОснование;
Если ЗначениеЗаполнено(ДокументОснование) И ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
Для Каждого Стр Из ДокументОснование.Товары Цикл
// Передаем параметры товарной позиции
Драйвер.setParam(1030, СокрЛП(Стр.Номенклатура.Наименование)); // Наименование
Драйвер.setParam(1079, Стр.Цена); // Цена
Драйвер.setParam(1023, Стр.Количество); // Количество
Драйвер.setParam(1043, Стр.Сумма); // Сумма
Драйвер.registration();
КонецЦикла;
КонецЕсли;
// Оплата наличными (тип оплаты 0)
Драйвер.setParam(1031, ОбъектПКО.СуммаДокумента);
Драйвер.closeReceipt();
Драйвер.close();
Альтернативный путь — интеграция в конфигурацию подсистемы БПО от фирмы «1С». Однако здесь есть важное архитектурное ограничение: актуальные версии БПО требуют режима совместимости платформы «1С:Предприятие 8.3» не ниже версии 8.3.8–8.3.12, тогда как исходная УТ 11.0 функционирует в режиме совместимости с 8.2.
Если выбран данный способ, последовательность действий следующая:
ПодключаемоеОборудование, используя сертифицированный драйвер производителя.Если режим совместимости менять нельзя, а прямая работа с COM-объектом затруднена архитектурой клиент-серверной сети, эффективным решением выступает локальный веб-сервис печати чеков. На компьютере, к которому физически подключен фискальный регистратор, разворачивается служба (веб-сервер), принимающая JSON-команды.
Из 1С отправляется HTTP-запрос:
HTTPСоединение = Новый HTTPСоединение("127.0.0.1", 5000);
HTTPЗапрос = Новый HTTPЗапрос("/api/v1/printCheck");
HTTPЗапрос.УстановитьТелоИзСтроки(ТекстJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
Этот подход обеспечивает полную изоляцию платформы 1С от драйверов кассы и исключает зависимость от разрядности клиента (32/64-бит).
Самым надежным и поддерживаемым решением в долгосрочной перспективе является последовательное обновление конфигурации: УТ 11.0 → УТ 11.1 → УТ 11.2 → УТ 11.3 → УТ 11.4 / 11.5.
В актуальных версиях программы реализована встроенная поддержка всех стандартов ФФД, автоматический расчет предоплат, формирование чеков коррекции, отправка электронных чеков по SMS/Email и интеграция с системами маркировки «Честный Знак».