Многие компании продолжают использовать конфигурацию «1С:Розница 1.0» из-за наличия существенных доработок, кастомизированного Рабочего места кассира (РМК) и сложно настроенных обменов данными с другими системами (например, Управление торговлей 10.3, Управление производственным предприятием 1.3 или Бухгалтерия предприятия 2.0). Переход на редакции 2.2 или 3.0 в таких условиях может потребовать полной переработки бизнес-логики и интеграционных механизмов.
Рассмотрим, с помощью каких решений и технических подходов можно подружить устаревшую конфигурацию «1С:Розница 1.0» с современными фискальными регистраторами и онлайн-кассами по правилам закона № 54-ФЗ.
Официальная поддержка редакции 1.0 конфигурации «1С:Розница» была прекращена фирмой «1С» еще в 2016 году. В отличие от актуальных продуктов, в нее не внедрялись плановые обновления библиотеки подключаемого оборудования (БПО) под требования 54-ФЗ. Тем не менее, платформа 1С 8.2/8.3 на обычных формах позволяет реализовать поддержку онлайн-касс несколькими проверенными способами.
Разберем вариант переноса подсистемы БПО из конфигурации Управление торговлей 10.3 (начиная с релиза 10.3.40 и выше), в которой фирма «1С» реализовала полноценную поддержку 54-ФЗ для обычных форм.
Проанализируем порядок действий при переносе объектов подсистемы БПО:
УТ 10.3 основные справочники: ТорговоеОборудование, ДрайверыОборудования и ОбработкиОбслуживанияТО.МенеджерОборудованияКлиент, МенеджерОборудованияСервер и ПодключениеТорговогоОборудованияПереопределяемый.Чек ККМ и экранную форму РМК. По закону № 54-ФЗ перед пробитием чека требуется запрашивать у покупателя номер телефона или адрес электронной почты для отправки электронного чека (тег 1008).Посмотрим на пример кода, формирующего структуру параметров фискализации для передачи в подсистему БПО:
// Формирование структуры параметров для пробития чека по 54-ФЗ
ПараметрыОперации = Новый Структура;
ПараметрыОперации.Вставить("ТипДокумента", "Продажа");
ПараметрыОперации.Вставить("ПризнакРасчета", 1); // 1 - Приход (Продажа)
ПараметрыОперации.Вставить("СуммаЧек", ДокументОбъект.СуммаДокумента);
// Передача контактных данных покупателя (Тег 1008)
Если ЗначениеЗаполнено(АдресЭлектроннойПочты) Тогда
ПараметрыОперации.Вставить("ПокупательEmail", СокрЛП(АдресЭлектроннойПочты));
ИначеЕсли ЗначениеЗаполнено(НомерТелефона) Тогда
ПараметрыОперации.Вставить("ПокупательНомерТелефона", СокрЛП(НомерТелефона));
КонецЕсли;
// Формирование таблицы товаров для чека
ТаблицаПозиций = Новый ТаблицаЗначений;
ТаблицаПозиций.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
ТаблицаПозиций.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
ТаблицаПозиций.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
ТаблицаПозиций.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
ТаблицаПозиций.Колонки.Добавить("СтавкаНДС", Новый ОписаниеТипов("Число"));
Для Каждого Стр Из ДокументОбъект.Товары Цикл
НоваяСтр = ТаблицаПозиций.Добавить();
НоваяСтр.Наименование = Стр.Номенклатура.Наименование;
НоваяСтр.Количество = Стр.Количество;
НоваяСтр.Цена = Стр.Цена;
НоваяСтр.Сумма = Стр.Сумма;
НоваяСтр.СтавкаНДС = Стр.Номенклатура.СтавкаНДС;
КонецЦикла;
ПараметрыОперации.Вставить("ПозицииЧек", ТаблицаПозиций);
Если глобальное объединение конфигураций нежелательно, проанализируем второй подход: использование внешних обработок обслуживания торгового оборудования (обработки формата .epf), подключаемых к справочнику ОбработкиОбслуживанияТО.
При таком подходе обработка обращается напрямую к драйверу производителя кассового оборудования (например, драйвер ДТО 8/10 от компании АТОЛ или драйвер ФР от компании ШТРИХ-М) через COM-интерфейс.
Рассмотрим пример непосредственного вызова методов драйвера ККТ АТОЛ для отправки электронного чека и печати фискальных позиций:
// Пример взаимодействия с COM-объектом драйвера ККТ АТОЛ
Попытка
Драйвер = Новый COMОбъект("AddIn.FPTNDrv");
Драйвер.DeviceEnabled = Истина;
// Вход в режим регистрации чеков
Драйвер.Mode = 1;
Драйвер.SetMode();
// Открытие чека прихода (продажи)
Драйвер.CheckType = 1;
Драйвер.OpenCheck();
// Передача контакта покупателя (Тег 1008)
Если ЗначениеЗаполнено(КонтактПокупателя) Тогда
Драйвер.AttrNumber = 1008;
Драйвер.AttrValue = КонтактПокупателя;
Драйвер.WriteAttribute();
КонецЕсли;
// Регистрация позиций в чеке
Для Каждого Стр Из ДокументОбъект.Товары Цикл
Драйвер.Name = Стр.Номенклатура.Наименование;
Драйвер.Price = Стр.Цена;
Драйвер.Quantity = Стр.Количество;
Драйвер.Department = 1;
Драйвер.Registration();
КонецЦикла;
// Оплата и закрытие чека
Драйвер.Summ = ДокументОбъект.СуммаДокумента;
Драйвер.TypeClose = 0; // Наличный расчет
Драйвер.CloseCheck();
Драйвер.DeviceEnabled = Ложь;
Исключение
Сообщить("Ошибка печати чека на ККТ: " + ОписаниеОшибки());
КонецПопытки;
Еще одно решение — использование локальных промежуточных серверов фискализации (например, kkm-server). В этом случае из «1С:Розница 1.0» отправляется простой HTTP-запрос в формате JSON на локальный адрес службы (например, http://localhost:5893/Execute). Сервер фискализации самостоятельно принимает данные, связывается с драйвером ККТ любого производителя и передает чек в ОФД.
Выясним, с какими ограничениями столкнется компания при длительном использовании переписанной первой редакции «1С:Розница»:
Резюме: Запустить фискализацию по 54-ФЗ в «1С:Розница 1.0» вполне реально с помощью доработки БПО по методике УТ 10.3 или использования сторонних обработок обслуживания ККТ. Однако для систем с большим ассортиментом маркируемой продукции в долгосрочной перспективе рекомендуется запланировать плановый переход на современные типовые конфигурации (1С:Розница 3.0 или 1С:УНФ 3.0).