Переход на формат фискальных данных (ФФД) 1.2 стал серьезным испытанием для многих технических специалистов. Основные сложности связаны с тем, что новый формат требует обязательной проверки кодов маркировки через фискальный накопитель (ФН-М) и серверы информационной системы маркировки (ИСМ). Рассмотрим по шагам, как диагностировать и устранять наиболее частые проблемы, возникающие в конфигурациях 1С (Бухгалтерия 3.0, Управление торговлей 10.3/11, Розница 2.3).
Часто при первом запуске после обновления ККТ до версии ФФД 1.2 в программе 1С отображается статус ??? в поле версии ФФД или возникает ошибка при попытке пробить чек. Это происходит из-за несовместимости старых версий драйверов и интеграционных библиотек (БПО) с новым форматом.
Разберем решение для касс Атол и Штрих-М:
10.9.0.4 (рекомендуется 10.9.1.0 и выше). Важно обновить не только сам драйвер в операционной системе, но и интеграционную компоненту в 1С.1C в каталоге установки ДТО 10).3.4. В настройках оборудования 1С версия драйвера должна отображаться как Штрих-М: ККТ с передачей данных в ОФД 3.4 (ФФД 1.2).Проанализируем причину ошибки D3h. В ФФД 1.2 касса обязана разбирать код маркировки на составляющие. Самая частая причина «неузнаваемости» кода — отсутствие спецсимвола-разделителя GS (ASCII 29) перед идентификаторами применения 91 и 92.
Посмотрим, как исправить ситуацию на уровне оборудования и программного кода:
Основная причина потери символа GS — работа сканера штрихкода в режиме эмуляции клавиатуры (HID Keyboard). В этом режиме операционная система часто «проглатывает» непечатные символы.
1С:Сканеры штрихкода (NativeApi).Если перевод сканера в COM-режим невозможен, или конфигурация (например, старая УТ 10.3) всё равно обрезает символы, воспользуемся программной вставкой разделителей. Рассмотрим пример кода для вставки символа GS (ASCII 29) в DataMatrix:
// Пример модификации кода маркировки перед отправкой на ККТ
Если ТипШтрихкода = ПредопределенноеЗначение("Перечисление.ТипыШтрихкодов.GS1_DataMatrix") Тогда
// Вставляем разделитель перед AI 91 (позиция зависит от длины серийного номера)
// Стандарт для многих групп: GTIN (14) + Serial (13) = 27 символов + префиксы 01 и 21
РезультатШтрихкод = Сред(ИсходныйШтрихкод, 1, 31) + Символ(29) +
Сред(ИсходныйШтрихкод, 32, 6) + Символ(29) +
Сред(ИсходныйШтрихкод, 38);
КонецЕсли;
Выясним причину, по которой чек пробивается с буквой М- вместо М+. Это означает, что локальная проверка в ФН или онлайн-проверка в ИСМ не подтвердила подлинность марки.
Проанализируем настройки связи ККТ:
prod01.okp-fn.ru, порт 26101.26101.В старых конфигурациях 1С типовые механизмы часто не вызывают цепочку методов ЗапросКМ, ПолучитьРезультатыЗапросаКМ и ПодтвердитьКМ. Рассмотрим последовательность действий для программиста:
AtolKКТ.epf или ShtrihM_KKT.epf) до версии, поддерживающей требования 3.4.CheckPackage для маркированных позиций теперь должен передаваться тег GoodCodeData, содержащий полный код маркировки в формате Base64, включая «криптохвост».Пример формирования узла в XML для ФФД 1.2:
// В параметрах позиции чека для ФФД 1.2
// Значение должно содержать полный код маркировки с разделителями в Base64
ЗаписьXML.ЗаписатьАтрибут("GoodCodeData", КодМаркировкиВBase64);
Многие пользователи заметили, что в ФФД 1.2 при расчетах между юрлицами в чеке перестали печататься Наименование покупателя и его ИНН. Проанализируем ситуацию: в новых прошивках эти теги (1227 и 1228) передаются в электронный чек (ОФД), но не обязательны для печати на бумаге. Если клиенту требуется их видеть, используем вывод нефискальных строк через объект TextString в XML-пакете.
// Пример вывода произвольного текста в шапку чека через БПО
ЗаписьXML.ЗаписатьНачалоЭлемента("TextString");
ЗаписьXML.ЗаписатьАтрибут("Text", "Покупатель: ООО 'Ромашка'");
ЗаписьXML.ЗаписатьКонецЭлемента();
Итог: Переход на ФФД 1.2 требует не только обновления "железа", но и тонкой настройки передачи данных. Основной упор следует делать на сохранение спецсимволов GS в коде и обеспечение стабильной связи ККТ с серверами проверки марок.