При обновлении конфигурации 1С:Управление торговлей, редакция 10.3 до версии 66.3 многие пользователи столкнулись с критической проблемой. Программа завершает работу с ошибкой при попытке создать или открыть документ ЧекККМ, если в базе данных не используется функционал маркировки продукции. Ошибка сопровождается системным сообщением: «Поле объекта не обнаружено (МаркируемуюПродукцию)». В этой статье мы подробно разберем причины возникновения этой ситуации и рассмотрим все доступные способы её решения.
Для начала проанализируем, почему возникает этот сбой. В релизе 10.3.66.3 разработчики внесли значительные изменения, связанные с поддержкой формата фискальных данных ФФД 1.2 и обязательной маркировкой товаров (ИС МП). В коде формы документа ЧекККМ была добавлена логика управления доступностью элементов интерфейса, отвечающих за проверку кодов маркировки.
Проблема заключается в том, что в процедуре УстановитьДоступностьКнопкиПроверки() происходит обращение к элементу формы ПодменюТоварыПроверить.МаркируемуюПродукцию. Однако этот элемент создается или становится доступен в структуре формы только в том случае, если в настройках параметров учета включено использование хотя бы одного вида маркируемой продукции (например, табака, обуви или парфюмерии). Если в вашей организации розничные продажи не связаны с маркировкой, этот элемент физически отсутствует на форме, что и приводит к аварийному завершению работы программы при обращении к нему.
Если ваша база данных не является базовой версией и позволяет вносить изменения в конфигурацию, это самый надежный и быстрый способ восстановить работоспособность системы. Мы добавим проверку использования функционала маркировки перед тем, как программа попытается изменить доступность кнопок.
Разберем процесс исправления по шагам:
ЧекККМ.УстановитьДоступностьКнопкиПроверки(). Обычно проблемная строка находится в районе 604-й строки кода.
ПодменюТоварыПроверить.МаркируемуюПродукцию.Доступность = Не ЧекПробитНаККМ;
Если ИспользуетсяПродукцияИСМП Тогда
ПодменюТоварыПроверить.МаркируемуюПродукцию.Доступность = Не ЧекПробитНаККМ;
КонецЕсли;
После внесения изменений сохраните конфигурацию (клавиша F7). Теперь программа будет обращаться к свойству МаркируемуюПродукцию только в том случае, если в системе действительно активирован учет маркируемых товаров через переменную ИспользуетсяПродукцияИСМП.
Для пользователей базовых версий конфигурации ручное изменение кода невозможно. В этом случае мы можем применить «обходной маневр», заставив программу «думать», что маркировка используется. Это позволит избежать обращения к отсутствующему элементу.
Выполните следующие действия в режиме «1С:Предприятие»:
Если из-за ошибки вы не можете зайти в настройки или форма настроек также выдает ошибку, можно воспользоваться внешней обработкой, которая программно включит константу использования ИС МП. Это активирует необходимые элементы управления на форме ЧекККМ, и вылет прекратится.
Компания «1С» оперативно отреагировала на проблему, зарегистрировав ошибку под номером 00-00337733. Для её устранения был выпущен официальный патч (исправление в виде расширения). Это наиболее предпочтительный метод для типовых конфигураций, так как он не требует снятия документа с поддержки.
Как установить патч:
EF_00_00337733.После установки расширения логика формы будет автоматически скорректирована без изменения основной конфигурации.
Рассмотрим долгосрочное решение. Данная ошибка была полностью устранена в последующих релизах, начиная с 10.3.67.1. Разработчики пересмотрели алгоритм инициализации командных панелей, чтобы исключить программное обращение к элементам маркировки, если они не инициализированы. Если у вас есть возможность, мы рекомендуем обновиться до актуального релиза, что снимет необходимость в ручных правках и использовании временных патчей.
Проанализируем еще один важный нюанс. В некоторых случаях даже после внесения изменений в код или установки патча ошибка может сохраняться. Это связано с тем, что формы документов в 1С часто кэшируются локально на компьютере пользователя. Если структура формы закэшировалась в «ошибочном» состоянии, старый кэш может конфликтовать с новым кодом.
Для решения этой проблемы выполните очистку кэша:
%AppData%\1C\1Cv8 и %LocalAppData%\1C\1Cv8, удалив папки с именами-идентификаторами баз.Подведем итог: ошибка в релизе УТ 10.3.66.3 является следствием жесткой привязки интерфейса к функционалу маркировки. Если вы программист — используйте Способ 1 для быстрого исправления. Если вы пользователь базовой версии — используйте Способ 2. В идеальной ситуации следует установить официальный патч или обновиться до версии 10.3.67.1, где эта проблема была решена на уровне вендора.