С выходом обновления 1С:Управление торговлей 10.3.54.4 многие пользователи и технические специалисты столкнулись с неприятной ситуацией: при печати чека из документа Приходный кассовый ордер (ПКО) перестал автоматически заполняться реквизит НомерЧекаККМ. На первый взгляд кажется, что касса работает некорректно, однако сам чек из ККТ выходит, а вот данные в программе не отображаются. Давайте подробно разберем причины этой проблемы и выясним, как вернуть корректное отображение данных или где их искать в обновленной архитектуре системы.
Проанализируем изменения, которые произошли в подсистеме взаимодействия с торговым оборудованием. В релизе 10.3.54.4 был реализован переход на новый стандарт взаимодействия с драйверами онлайн-касс — так называемую ревизию интерфейса 3000. До этого момента драйвер возвращал номер чека как простой числовой параметр, который легко записывался в соответствующее поле документа ПКО.
В новой ревизии интерфейса (которая необходима для полноценной поддержки ФФД 1.05 и 1.2) драйвер возвращает не отдельные значения, а структурированный XML-пакет ВыходнаяТаблицаXML. Рассмотрим ситуацию подробнее: в коде ПКО версии 10.3.54.4 разработчики обновили механизмы вызова печати, но, как выяснилось, не во всех местах корректно реализовали парсинг (разбор) этого ответного XML-пакета. В результате переменная ПараметрыФискализации.НомерЧекаККТ остается пустой, хотя фискализация в самой кассе прошла успешно.
Выясним важный нюанс: компания «1С» планомерно уходит от практики хранения фискальных данных непосредственно в реквизитах первичных документов (таких как ПКО, ЧекККМ или ОплатаОтПокупателяПлатежнойКартой). Это связано с тем, что один документ может быть фискализирован несколько раз (например, частичные оплаты или авансы), и одного поля для номера чека в шапке документа становится недостаточно.
Посмотрим, где теперь хранятся данные о пробитых чеках:
Если в вашем документе ПКО поле НомерЧекаККМ пустое, это еще не значит, что данные потеряны. Проанализируем содержимое регистра «Фискальные операции», установив фильтр по вашему документу-основанию. Если запись в регистре присутствует, значит, система зафиксировала факт печати, номер чека, номер смены и фискальный признак (ФП).
Рассмотрим несколько вариантов исправления ситуации в зависимости от ваших технических возможностей.
Самый простой и рекомендуемый способ — обновиться до версии 10.3.55.1 или выше. В этом релизе разработчики устранили ошибку в алгоритме обработки выходных параметров драйвера. После обновления при печати чека из ПКО реквизит снова начнет заполняться корректно, так как в общем модуле МенеджерОборудованияКлиент был исправлен код чтения тега ReceiptNumber.
Если оперативное обновление всей конфигурации невозможно (например, база сильно доработана), можно попробовать интегрировать компоненты Библиотеки подключаемого оборудования (БПО) версии 2.5 и выше. Рассмотрим этот путь: он требует навыков программирования, так как необходимо будет заменить обработку обслуживания или обновить макет компоненты в самой конфигурации. Это позволит системе корректно «понимать» ответы от современных драйверов Атол 10.х или Штрих-М 4.15.
Если вам нужно решить проблему «здесь и сейчас», проанализируем место, где происходит обработка ответа от кассы. Вам необходимо найти процедуру, которая вызывает метод ФискализироватьЧек, и убедиться, что из ВыходныеПараметры правильно извлекается XML. Пример логики, которую необходимо внедрить (в упрощенном виде):
// Пример извлечения номера чека из XML-ответа драйвера
Если РевизияИнтерфейса >= 3000 Тогда
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(ВыходныеПараметры[1]); // Параметр с XML-таблицей
Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.Имя = "ReceiptNumber" И ЧтениеXML.ТипУзла = ТипУзлаXML.Текст Тогда
НомерЧека = ЧтениеXML.Значение;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Обратите внимание, что в старых версиях УТ 10.3 этот механизм отсутствовал, и система ожидала номер чека в виде простого значения в массиве параметров. Именно это несоответствие и приводит к тому, что реквизит остается пустым.
Важно помнить, что начиная с релизов 10.3.70+, логика работы с кассами еще сильнее усложнилась из-за требований ФФД 1.2 (маркировка товаров). В этих версиях получение номера чека окончательно завязано на асинхронные вызовы и новые регистры. Если вы планируете работать с маркированной продукцией, крайне не рекомендуется оставаться на промежуточных релизах типа 54.4. Лучшим решением будет переход на актуальный релиз, где поддержка ККТ реализована в соответствии с действующим законодательством.
Подведем итог: если в вашей УТ 10.3.54.4 пропали номера чеков, в первую очередь проверьте регистр сведений «Фискальные операции». Если данные там есть — фискализация проходит успешно. Для восстановления автоматического заполнения поля в самом документе — планируйте обновление до 10.3.55.1.