При работе с маркируемой продукцией в 1С:Розница пользователи часто сталкиваются с тем, что стандартная выгрузка данных в кассу, работающую в режиме офлайн (например, «Штрих-М: ККМ Offline»), перестает функционировать. Ошибка Поле объекта не обнаружено (Тип маркировки) сигнализирует о том, что конфигурация 1С обновилась, включив в себя новые требования системы «Честный ЗНАК», а используемая внешняя обработка обслуживания осталась прежней и не понимает, как обработать новые виды номенклатуры.
Суть проблемы заключается в том, что взаимодействие 1С с кассовым оборудованием в офлайн-режиме происходит через текстовые файлы обмена. В этих файлах информация о товаре должна быть строго структурирована по формату, который ожидает оборудование. Когда вы создаете в 1С новый вид номенклатуры, например, «Товары легкой промышленности», система присваивает ему определенный тип маркировки. Внешняя обработка, отвечающая за выгрузку, пытается обратиться к свойству Тип маркировки, но находит его отсутствующим или не соответствующим ожидаемому формату в старом программном коде, что приводит к критическому сбою.
Прежде чем приступать к глубокому анализу кода, проделаем базовые шаги для исключения простых причин:
Драйверов ККТ. Часто производители выпускают обновления, исправляющие совместимость с новыми форматами маркировки.Подключаемое оборудование.Если обновление драйверов не решило проблему, это означает, что логика обработки не содержит инструкций для работы с новыми типами маркировки. Разберем, как подойти к исправлению этой ситуации:
Анализ кода: Откроем внешнюю обработку в конфигураторе. Нам необходимо найти процедуру, отвечающую за формирование файла обмена, например, ВыгрузитьДанные или СформироватьФайлТоваров.
В этой процедуре происходит перебор номенклатуры и запись данных в поток. Посмотрим на фрагмент, где происходит определение типа маркировки:
// Примерный участок кода, требующий доработки
ТипМаркировки = Товар.ТипМаркировки;
Если ТипМаркировки = Перечисления.ТипыМаркировки.Обувь Тогда
КодДляКассы = 1;
ИначеЕсли ТипМаркировки = Перечисления.ТипыМаркировки.Табак Тогда
КодДляКассы = 2;
Иначе
// Здесь обработка падает с ошибкой, если тип не описан
Сообщить("Неизвестный тип маркировки: " + ТипМаркировки);
КонецЕсли;
Исправление: Нам нужно дополнить этот список условий. Проанализируем структуру Перечисления.ТипыМаркировки в вашей конфигурации и добавим обработку новых значений. Если касса не поддерживает передачу признака для новых групп, разумно будет присвоить им значение по умолчанию (например, 0 или иной код, который касса интерпретирует как отсутствие маркировки), чтобы процесс обмена не прерывался.
Если специфика вашего бизнеса предполагает частое появление новых товарных категорий и постоянную смену правил маркировки, использование офлайн-кассы может стать «узким местом». Разберем альтернативный вариант — переход на работу в режиме Онлайн.
При онлайн-режиме 1С взаимодействует с кассой напрямую через драйвер при каждом сканировании товара. Это исключает необходимость формирования промежуточных файлов обмена, так как 1С в режиме реального времени передает все необходимые признаки маркировки в ККТ. Это наиболее надежный путь, так как он минимизирует зависимость от устаревших форматов обмена и специфических обработок.
Итог: Мы выяснили, что ошибка носит прикладной характер. Рекомендуем начать с обновления внешних обработок обслуживания с ресурсов 1С. Если это не помогает — единственный путь заключается в корректировке кода обработки силами программиста, либо в переходе на онлайн-обмен данными с кассовым оборудованием.