Устранение ошибки «Объект не найден в Справочнике «ИдентификаторыОбъектовМетаданных»


Несмотря на то, что мне приходится много кодировать на java (да, к сожалению другого слова я подобрать не могу, объясню в отдельной статье «романтику» промышленного программирования), в регионах большие деньги можно заработать в программировании только на 1С, чем и занимаюсь, когда есть возможность.

Несмотря на кажущуюся простоту, подводных камней в этой желтенькой программке просто уйма.

Такое ощущение, что сама 1с делает так, чтобы денежный поток на доработке никогда не заканчивался. Например, нередки случаи, когда через несколько обновлений важные отчеты просто помечаются как снимаемые с поддержки и будут просто удалены. И тогда начинается интересный квест по возврату утраченного функционала, ничего уже не говоря о том, если приходится доработать свой отчет или обработку (да и иногда и объект метаданных).

И вот, вы запилили свой отчет или обработку, уже нашли, куда его воткнуть в конфигурацию (на самом деле, в 1с все же предпочтительнее создавать внешние отчеты и обработки, на случай, если охота оставить обновления), обновили конфигурацию и… система вас «радует» оповещением « {ОбщийМодуль.ОбщегоНазначения.Модуль(2646)}: Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных()» и т. д.

Кто сталкивался с подобным, тот поймет. На самом деле, я сам столкнулся с этим относительно недавно. Помню, как был в «дичайшем» восторге. К сожалению, информация по том, как это устранить настолько разрознена, что решил написать небольшое руководство.

В тексте ошибки есть и небольшие рекомендации по ее устранению. 1С советует проделать довольно-таки спорные манипуляции:

 

  1. «Поднять» версию конфигурации. Например, у меня есть Розница 2.1.7.18. Я должен поменять ее на 2.1.7.19, обновить конфигурацию и будет все замечательно. Честно, спорный момент, так как проблема потом будет с обновлением и, что самое главное, лично у меня никогда в таких случаях данное «решение» проблемы не имело успеха.
  2. Запустить конфигурацию с параметром командой строки «/С ЗапуститьОбновлениеИнформационнойБазы»

Это на скриншоте у меня выглядит так:Запуск

Честно говоря, данный способ я вообще не пробовал. Кому-то он помогает, я не стал этим пользоваться. Но знайте — это один из официальных способов решения данной ошибки.

Я же использую третий способ, хоть он и сопряжен с некоторыми трудностями. Дело в том, что все идентификаторы объектов метаданных хранятся в одноименном справочнике. Найти его можно в разделе «Все функции». На самом деле, этот способ самый простой и безобидный. Просто находите в списке кнопку «Обновить справочник» и ждете завершения команды.

Но вот в силу своей колоссальной везучести, на тех платформах, которые мне приходится дорабатывать, этой кнопки в списке этого справочника просто нет.

Что ж, давайте ее добавим сами и решим проблему.

Итак, запускайте конфигуратор, найдите в справочниках «ИдентификаторыОбъектовМетаданных»

Теперь  откройте форму списке и немного подредактируйте его, как это сделал я.

Модификация

 

Здесь вы просто создаете новую команду (назовите ее примерно как я) и добавьте в ее обработчик код:

Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();

Теперь переместите эту команду на форму в нужное место и запускайте отладчик.

После этих манипуляций в этом справочнике появится заветная кнопка, после нажатия на которую сработает команда обновления и проблема будет устранена.

Сразу оговорюсь — этой кнопки в данном списке может как не быть, так и она там может находиться. Все зависит от конфигурации. С учетом того, что я постоянно модифицирую конфигурации в моем случае гораздо проще и быстрее сделать так, как описал я. Вы же можете решить проблему как раз любым из трех описанных способов

Пишите, если у кого то возникнут подобные ошибки.

Яндекс.Метрика