При работе с конфигурацией 1С:Розница (особенно в версиях 2.2.10.19 и начальных релизах линейки 2.3) пользователи часто сталкиваются с неприятной ситуацией: при попытке пробить чек, который должен распределиться на две разные кассы (например, алкогольная продукция на одну организацию, а сопутствующие товары — на другую), печать на втором устройстве прерывается. Система выдает критическую ошибку: «Тэг Позиции чека не заполнен». Это блокирует работу кассового узла и требует оперативного вмешательства.
В этой статье мы подробно разберем, почему возникает данная проблема, проанализируем механизмы взаимодействия платформы с драйверами ККТ и рассмотрим несколько вариантов решения — от простых настроек до внесения правок в программный код.
Для начала проанализируем ситуацию с технической точки зрения. Ошибка «Тэг Позиции чека не заполнен» (в спецификации ФФД это часто соответствует тегу 1059) означает, что драйвер кассового аппарата получил команду на открытие чека или регистрацию позиции, но массив данных, содержащий информацию о товаре (наименование, цена, количество, сумма), оказался пустым.
В рассматриваемых релизах 1С:Розница проблема кроется в процедуре распределения товаров по кассам в модуле РМК. Когда документ Чек ККМ содержит товары, относящиеся к разным фискальным регистраторам, система инициализирует процесс печати последовательно. Выясним причину: из-за программной ошибки при переходе к формированию XML-пакета для второй кассы коллекция ПозицииЧека не переинициализируется должным образом или очищается раньше времени. В итоге на второе устройство уходит «пустой» запрос, который драйвер (особенно АТОЛ 10-й версии) отклоняет.
Как показывает практика и подтверждают официальные сообщения техподдержки 1С, одним из самых быстрых и эффективных способов решения (даже для файловых баз данных) является изменение режима выполнения обмена. Рассмотрим, как это сделать по шагам:
Проанализируем ситуацию: почему это помогает? Установка этого флага меняет контекст выполнения кода при формировании структур данных для печати чека. В некоторых случаях это позволяет избежать конфликта в обращении к временным структурам данных в памяти клиента, которые затираются при последовательном вызове процедур печати для разных касс.
Иногда проблема проявляется выборочно на конкретных рабочих местах, в то время как на других ПК с той же версией конфигурации все работает исправно. В этом случае велика вероятность некорректной работы локального кэша метаданных. Разберем процесс очистки:
%AppData%\1C\1Cv8\ и %LocalAppData%\1C\1Cv8\.%TEMP%, удалив оттуда файлы, связанные с компонентами печати (например, содержащие в названии comcntr или названия драйверов ККТ).Это действие гарантирует, что при следующем запуске РМК система заново инициализирует все объекты МенеджерОборудования и загрузит актуальные формы.
Если программные настройки не помогают, а обновление на версию 2.2.11 или выше временно невозможно, мы можем прибегнуть к изменению логики работы формы РМК. Рассмотрим пример внесения изменений в модуль ФормаРМК.
Суть метода заключается в принудительной сортировке списка организаций (касс) таким образом, чтобы первой всегда печаталась «проблемная» или, наоборот, основная касса. Как отмечали участники обсуждения, в ряде случаев помогает смена очередности: сначала печатаем чек ИП, затем ООО (или наоборот, в зависимости от того, какая касса выдает ошибку).
Посмотрим на пример кода, который может быть добавлен в процедуру распределения чека:
// В модуле формы РМК находим место формирования таблицы распределения
// Нам нужно убедиться, что массив фискальных устройств обрабатывается корректно
Для Каждого ТекущееУстройство Из СписокКасс Цикл
// Проверяем заполненность структуры ПараметрыЧека перед отправкой на печать
Если ПараметрыЧека.ПозицииЧека.Количество() = 0 Тогда
// Здесь можно вставить лог или принудительное переформирование позиций
ЗаполнитьПозицииДляУстройства(ПараметрыЧека, ТекущееУстройство);
КонецЕсли;
КонецЦикла;
Использование этого подхода требует навыков программирования в среде 1С:Предприятие 8.3, поэтому рекомендуется выполнять его через механизм расширений, чтобы не снимать конфигурацию с поддержки.
Разберем ситуацию с оборудованием. Ошибка «Тэг Позиции чека не заполнен» часто провоцируется некорректной работой интеграционной библиотеки (внутренней компоненты 1С), которая выступает «прослойкой» между кодом 1С и драйвером производителя (АТОЛ или Штрих-М).
.dll в профиле пользователя.Если вы столкнулись с этой проблемой в более поздних версиях (например, 2.3.5.x), где алкоголь не используется, но есть разделение по системам налогообложения (СНО), проверим наличие официальных исправлений. Фирма 1С оперативно выпускает патчи (исправления) для типовых конфигураций.
Рассмотрим порядок действий:
Проанализировав все вышеперечисленные методы, можно сделать вывод: наиболее вероятной причиной является программная недоработка в процедуре передачи структуры ПараметрыЧека между серверным и клиентским контекстом при последовательной печати. Мы рекомендуем начать с самого простого — установки флага обмена ЕГАИС на сервере, так как это решение подтверждено официальной регистрацией ошибки 1С и помогает большинству пользователей без внесения правок в конфигурацию.