С развитием фискального законодательства (54-ФЗ, форматы фискальных данных ФФД 1.05 и 1.2, обязательная маркировка товаров) многие владельцы торговых систем на базе «1С:Предприятие 7.7» столкнулись с дилеммой. С одной стороны, конфигурация «Торговля и Склад 9.2» (ТиС) за долгие годы эксплуатации была максимально адаптирована под нужды конкретного бизнеса, обросла множеством уникальных доработок, и переводить учет на платформу «1С 8» долго, дорого и болезненно. С другой стороны, требования налогового законодательства обязывают использовать современные онлайн-кассы (ККТ), которые «из коробки» старой платформой не поддерживаются.
В этой статье мы подробно разберем, как решить задачу подключения онлайн-кассы к 1С 7.7 с минимальными затратами ресурсов программиста и без масштабного обновления конфигурации. Мы рассмотрим как самый простой («быстрый») способ обхода ограничений платформы, так и проанализируем современные технические вызовы, с которыми вам придется столкнуться на практике.
---
Если ваша конфигурация «Торговля и Склад» сильно кастомизирована, стандартное обновление до актуального релиза (в котором реализована поддержка требований 54-ФЗ со стороны вендора) приведет к потере уникального функционала и потребует десятков часов ручного объединения кода.
Однако существует альтернативный путь. Архитектура взаимодействия 1С 7.7 с торговым оборудованием построена на разделении логики: сама конфигурация работает со стандартизированным интерфейсом, а непосредственным управлением кассой занимается внешняя обработка обслуживания (с расширением .ert) и драйвер производителя ККТ. Это позволяет нам обновить только ту часть системы, которая отвечает за отправку команд на фискальный регистратор.
Рассмотрим по шагам алгоритм быстрого подключения:
fratol54_comm_105.ert или аналогичные решения от независимых разработчиков.
Перем глФРPortNumber Экспорт; // Номер порта подключения ФР
Перем глФРBaudRate Экспорт; // Скорость обмена данными
Перем глФРPassword Экспорт; // Пароль доступа к ККТ
Перем глФРModel Экспорт; // Код модели фискального регистратора
Использование ключевого слова Экспорт обязательно, так как внешняя обработка обслуживания должна иметь прямой доступ к этим переменным в контексте всей сессии работы пользователя.
Лайфхак для сохранения «чистоты» конфигурации: если вы категорически не хотите вносить изменения в Глобальный модуль (например, база находится на жесткой поддержке или вы хотите выполнить интеграцию без монопольного доступа к конфигуратору), эти переменные можно определить и инициализировать непосредственно внутри самой внешней обработки обслуживания .ert. Перед началом работы обработка может проверять наличие глобальных переменных, и в случае их отсутствия — использовать свои локальные параметры или вызывать диалоговое окно настройки подключения.
---
Разберем подробнее, как именно происходит передача данных из 1С 7.7 в драйвер онлайн-кассы. При классической схеме продаж конфигурация формирует таблицу товаров, содержащую наименование, цену, количество, ставку НДС и сумму. Задача обработки обслуживания — транслировать эти данные в команды XML или методы API, понятные драйверу ККТ.
В простейшем случае процедура печати чека в коде обработки выглядит следующим образом:
// Пример упрощенной отправки строки чека в ККТ
Процедура НапечататьСтрокуЧека(ОбъектДрайвера, ТоварНаименование, Цена, Количество, СтавкаНДС)
// Установка свойств позиции в драйвере онлайн-кассы
ОбъектДрайвера.Name = СокрЛП(Лев(ТоварНаименование, 64)); // Ограничение по длине наименования
ОбъектДрайвера.Price = Цена;
ОбъектДрайвера.Quantity = Количество;
// Сопоставление ставок НДС 1С и кодов налоговых ставок драйвера ККТ
Если СтавкаНДС = ПолучитьПустоеЗначение("Справочник.СтавкиНДС") Тогда
ОбъектДрайвера.TaxNumber = 4; // Без НДС
ИначеЕсли СтавкаНДС.Ставка = 20 Тогда
ОбъектДрайвера.TaxNumber = 1; // НДС 20%
ИначеЕсли СтавкаНДС.Ставка = 10 Тогда
ОбъектДрайвера.TaxNumber = 2; // НДС 10%
КонецЕсли;
// Регистрация продажи позиции
Если ОбъектДрайвера.Registration() <> 0 Тогда
Предупреждение("Ошибка регистрации товара: " + ОбъектДрайвера.ResultDescription);
КонецЕсли;
КонецПроцедуры
Такой подход требует минимального времени на реализацию (в среднем от 2 до 4 часов работы программиста) и позволяет быстро запустить продажи по новым правилам.
---
Описанный выше «простой» способ отлично решал задачи бизнеса на этапе перехода на ФФД 1.05. Однако в современных реалиях розничной торговли требования к кассовому чеку существенно ужесточились. Выясним, почему стандартный функционал 1С 7.7 требует более глубокой модернизации при работе в современных условиях:
Если ваше предприятие торгует товарами, подлежащими обязательной маркировке в системе «Честный ЗНАК» (обувь, одежда, парфюмерия, молочная продукция, питьевая вода и др.), простая печать наименования товара больше не легальна. Согласно стандарту ФФД 1.2, касса обязана:
Запрос о коде маркировки.Уведомление о реализации маркированного товара.Старые драйверы ККТ (например, АТОЛ 8-й или 9-й версии) физически не умеют работать с ФФД 1.2. Потребуется обязательный переход на современные версии драйверов, например, ДТО 10 (Драйвер торгового оборудования АТОЛ 10.x) или Штрих-М 5.16.
Платформа «1С:Предприятие 7.7» является 32-битным приложением и взаимодействует с внешним миром преимущественно через технологию COM/OLE. Современный драйвер АТОЛ ДТО 10 ориентирован на работу в новых средах разработки и не всегда корректно регистрирует свои COM-объекты в операционной системе для использования устаревшими клиентами.
Для решения этой проблемы разработчикам приходится применять специализированные внешние компоненты (так называемые «обертки» или «прокладки»), которые переводят вызовы из 1С 7.7 в формат XML-пакетов, которые принимает драйвер ДТО 10. Напрямую работать с методами драйвера в 1С 7.7 без сторонних библиотек становится крайне трудозатратно.
Современный фискальный учет требует корректного отражения типов оплаты. Просто отправить сумму чека на кассу недостаточно, если у вас присутствуют:
Все эти «бантики» (как выразился один из участников обсуждения) на самом деле являются жесткими законодательными требованиями, невыполнение которых грозит серьезными штрафами со стороны ФНС.
---
Если «простой» метод ручной доработки глобального модуля и старой обработки обслуживания не закрывает все потребности вашего бизнеса (например, из-за маркировки), рассмотрим два основных альтернативных пути решения проблемы.
На рынке существуют проверенные комплексные разработки от независимых авторов (например, модули интеграции от разработчика victuan и другие решения на специализированных ресурсах).
Преимущества данного подхода:
Если вы хотите раз и навсегда избавить 1С 7.7 от необходимости общаться с торговым оборудованием напрямую, рассмотрите схему разделения контуров учета:
Этот подход позволяет сохранить вашу проверенную временем учетную систему в первозданном виде и полностью делегировать сложные кассовые операции современному специализированному софту.