При работе с алкогольной продукцией в программах 1С, в частности в конфигурации 1С:Розница, пользователи часто сталкиваются с ошибками после обновления конфигурации или платформы. Одной из самых неприятных является ошибка «Значение не является значением объектного типа (ИдентификаторЕГАИС)». Эта ситуация блокирует получение входящих ТТН и отправку актов, что может привести к остановке приемки товара. В этой статье мы подробно разберем причины возникновения этой ошибки и пошагово рассмотрим способы ее решения.
Прежде чем переходить к действиям, выясним причину. С точки зрения встроенного языка 1С, эта ошибка означает, что программный код пытается обратиться к свойству ИдентификаторЕГАИС у объекта, который на самом деле является пустым (Неопределено или ПустаяСсылка). Программа ожидает получить ссылку на организацию или классификатор, но не находит ее в базе данных. Рассмотрим пример логики, которая дает сбой:
// Примерный участок кода, вызывающий ошибку
ОрганизацияЕГАИС = НайтиОрганизациюПоФСРАР(Идентификатор);
ТекИдентификатор = ОрганизацияЕГАИС.ИдентификаторЕГАИС; // Если ОрганизацияЕГАИС не найдена, возникнет ошибка
Чаще всего это происходит из-за несоответствия версий УТМ (Универсального транспортного модуля) и обновленной конфигурации 1С, либо из-за наличия «битых» ссылок в служебных регистрах после выполнения синхронизации в распределенных информационных базах (РИБ).
Как показывает практика и обсуждения на технических форумах, наиболее частая причина — использование устаревшей версии УТМ. После перехода ЕГАИС на формат 3.0 и выше, старые версии транспортного модуля начинают некорректно передавать структуру XML-пакетов, которые 1С не может распознать.
localhost:14444 (или другой порт, если он был изменен).transport текущего УТМ.Transport и Transport-Updater.Многие специалисты подтверждают, что после установки версии УТМ 3.0.8 и выше проблема с идентификаторами исчезает, так как структура данных в ответах модуля начинает соответствовать ожиданиям обновленной конфигурации 1С.
Если обновление УТМ не помогло, проанализируем состояние данных внутри самой 1С. Часто при обновлении или некорректной синхронизации в РИБ в базе появляются записи, ссылающиеся на несуществующие объекты. Посмотрим на регистр ПротоколОбменаЕГАИС.
Протокол обмена с ЕГАИС.<Объект не найден>..., значит, в базе есть битая ссылка.Очередь сообщений ЕГАИС.Важно: Перед удалением записей убедитесь, что у вас есть актуальная копия базы данных!
Если в базе нарушена ссылочная целостность (особенно актуально для РИБ), воспользуемся стандартным механизмом 1С.
ИдентификаторЕГАИС.В условиях РИБ проблема часто кроется в том, что ТТН пришла на один узел, а классификаторы алкогольной продукции или организаций еще не успели мигрировать из центрального узла. Проанализируем ситуацию: если документ есть, а ссылка на производителя внутри него пустая, 1С не сможет найти ИдентификаторЕГАИС этого производителя.
Рекомендация: Всегда выполняйте полную синхронизацию данных между всеми узлами (Магазин -> Центр -> Магазин) перед тем, как нажимать кнопку «Выполнить обмен» в журнале ЕГАИС. Это гарантирует актуальность справочников Классификатор организаций ЕГАИС и Классификатор алкогольной продукции ЕГАИС.
Иногда программный код «запоминает» старые структуры метаданных, и даже после исправления кода или данных ошибка сохраняется. Выясним, не виноват ли в этом локальный кэш пользователя.
%AppData%\1C\1Cv8 и %LocalAppData%\1C\1Cv8.После очистки кэша программа заново пересчитает все обращения к свойствам объектов, и ошибка может исчезнуть.
Если ошибка возникает только на одной конкретной накладной, попробуем запросить ее заново через личный кабинет ЕГАИС. Это заставит 1С заново создать все связи для этого документа.
egais.ru.Мы рассмотрели все основные способы устранения ошибки ИдентификаторЕГАИС. Начните с обновления УТМ и проверки регистров на наличие битых ссылок — в 90% случаев это полностью решает проблему.