Многие пользователи и администраторы системы 1С:Розница версии 2.3 (особенно начиная с релиза 2.3.5.24 и выше) сталкиваются с неприятной ситуацией: после обновления конфигурации в режиме Рабочего места кассира (РМК) при попытке добавить товар в чек с помощью сканера штрихкодов программа выдает критическую ошибку. При этом поиск товара вручную через подбор или по артикулу работает корректно. Рассмотрим подробно, почему это происходит и как это исправить.
Проанализируем техническую сторону вопроса. Ошибка Поле объекта не обнаружено (ВидПродукцииИС) возникает из-за того, что в программном коде 1С происходит обращение к реквизиту, который не был инициализирован в структуре данных текущей строки чека. Выясним причину: начиная с новых версий, логика обработки штрихкодов была изменена для поддержки обязательной маркировки (Честный Знак). Теперь при каждом сканировании штрихкода EAN-13 система принудительно вызывает процедуры модулей интеграции с ИС МП (Информационной системой маркировки продукции).
Проблема заключается в том, что если в настройках программы отключен учет всех видов маркируемой продукции (табак, обувь, одежда и т.д.), структура данных, передаваемая в обработчик, не содержит поля ВидПродукцииИС. Программа пытается проверить условие:
Если ТекущаяСтрока.ВидПродукцииИС = Перечисления.ВидыПродукцииИС.Табак Тогда
// Логика обработки
КонецЕсли;
Так как поле физически отсутствует в наборе данных ТекущаяСтрока, выполнение прерывается с ошибкой. Посмотрим на стек вызовов, который обычно сопровождает эту проблему:
{ОбщийМодуль.ОбработкаТабличнойЧастиТоварыСервер.Модуль(349)}: Поле объекта не обнаружено (ВидПродукцииИС)
{ОбщийМодуль.ОбработкаТабличнойЧастиТоварыСервер.Модуль(132)}: ЗаполнитьЦенуМРЦВСтрокеТЧСервер(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(3054)}: ОбработатьКодМаркировки(ДанныеСоСканераСтруктура);
Самый простой и быстрый способ восстановить работоспособность РМК — это «обмануть» систему, активировав поддержку любой категории маркируемых товаров. Это заставит программу инициализировать необходимые поля в структурах данных.
Рассмотрим по шагам, как это сделать:
После выполнения этих действий перезагружать программу обычно не требуется. Попробуем снова отсканировать товар в РМК — ошибка должна исчезнуть. Это происходит потому, что при включенной настройке механизмы 1С начинают корректно формировать структуру строки товаров, добавляя в нее поле ВидПродукцииИС.
Разработчики компании 1С знают об этой проблеме и регулярно выпускают автоматические исправления — патчи. Если вы не хотите включать лишние настройки маркировки, которыми фактически не пользуетесь, разберем, как установить официальное исправление.
Проанализируем последовательность действий для загрузки патча:
ВидПродукцииИС, ОбработкаТабличнойЧастиТоварыСервер или РМК сканирование.Важно: Для версии 2.3.11.33 может возникать похожая ошибка с полем ЕстьВПулеКодовМаркировки. Решение для нее абсолютно идентично — установка патча или включение функциональной опции учета маркируемого товара.
Иногда после обновления конфигурации или установки настроек 1С продолжает «помнить» старую структуру объектов, из-за чего ошибка сохраняется. В таком случае нам поможет полная очистка кэша программы.
Выясним, как правильно очистить кэш:
/ClearCache.Этот метод заставит платформу заново перечитать все метаданные и структуру объектов, что часто исправляет необъяснимые ошибки «Поле объекта не обнаружено».
Проанализируем ситуацию, когда ошибка провоцируется некорректной работой торгового оборудования. Если сканер настроен в режиме эмуляции клавиатуры, он может передавать символы слишком быстро или добавлять лишние префиксы, которые 1С интерпретирует как начало кода маркировки DataMatrix. В случаях некорректной передачи данных маркировки устройством можно использовать расширение для восстановления символов GS в считанных кодах.
Рекомендуем выполнить следующие проверки:
В редких случаях проблема может быть связана с тем, что у текущего пользователя (кассира) ограничены права на чтение определенных метаданных — исправить это поможет анализ и сравнение прав доступа пользователей к ролям в 1С. Посмотрим на ситуацию глазами системы: если код пытается сравнить значение с перечислением Перечисления.ВидыПродукцииИС, а у пользователя нет прав на просмотр этого перечисления, система может выдать ошибку отсутствия поля.
Для исправления попробуем временно назначить пользователю роль Полные права (в тестовых целях). Если ошибка исчезнет, значит, необходимо отредактировать профиль группы доступа кассира, добавив права на чтение объектов, связанных с ИС МП (Информационной системой маркировки продукции) — в этом поможет обработка детального анализа ролей и профилей доступа в 1С.
Мы рассмотрели несколько путей решения проблемы. Самым быстрым является включение галочки «Табачная продукция» в настройках интеграции, а самым правильным — своевременное обновление конфигурации и установка официальных патчей от разработчиков 1С. Помните, что подобные ошибки часто являются следствием переходного периода внедрения маркировки, и поддержание актуального состояния системы — лучший способ их избежать.