Идентификаторы объектов метаданных

БСП справочник Идентификаторы Объектов Метаданных

Сообщение от wladimir_ui Для хранения списка объектов метаданных Т.е. конфигуратора для этого НАМ мало???
Добавлено через 33 секунды

Не по теме:

Давайте в Регистре Сведений хранить тексты функций?!

Добавлено через 25 минут
Нашел на ИТСе
Использование идентификаторов объектов метаданных
При необходимости хранить в базе данных ссылку на объект метаданных (например, ссылка на объект метаданных Справочник.Организации) рекомендуется вместо строкового реквизита с полным именем объекта метаданных использовать ссылку на соответствующий элемент справочника ИдентификаторыОбъектовМетаданных. Такая потребность возникает, например, в различных подсистемах БСП: для хранения настроек версионирования данных, списка выбранных ролей в профилях групп доступа и т.п.
Такой подход позволяет
● повысить производительность запросов, которые обращаются к реквизитам данного типа;
● снизить размер таблиц в базе данных, в которых используются реквизиты данного типа,
● выводить в пользовательском интерфейсе представление ссылки вместо строкового имени объекта метаданных,
● а также избавиться от разработки обработчиков обновления и первоначального заполнения ИБ для актуализации строковых реквизитов с полными именами объектов метаданных при изменениях метаданных конфигурации.
Программно, ссылку на объект метаданных можно получить с помощью функции ИдентификаторОбъектаМетаданных общего модуля ОбщегоНазначения.
Справочник ИдентификаторыОбъектовМетаданных заполняется автоматически при первом запуске (и каждом обновлении) конфигурации, согласно метаданным конфигурации, а также автоматически актуализируется при каждом обновлении версии конфигурации (учитываются переименованные, добавленные и удаленные объекты метаданных). Полный список объектов метаданных (справочники, документы, регистры, и т.п.), обновление идентификаторов которых выполняется автоматически, см. в комментарии к функции ИдентификаторОбъектаМетадан*ных общего модуля ОбщегоНазначения.
Исключение составляют подсистемы и роли, обновление идентификаторов которых требуется выполнять вручную. Необходимость обновления идентификаторов подсистем и ролей возникает при их переименовании (а для подсистем – также и в случае их перемещения из одной родительской подсистемы в другую). В противном случае, возможно рассогласование идентификаторов объектов метаданных с объектами метаданных конфигурации.
Для обновления идентификаторов необходимо воспользоваться процедурой ЗаполнитьТаблицуПереименованияОбъектовМетаданных общего модуля ОбщегоНазначенияПереопределяемый и увеличить номер версии конфигурации. Например, следующий фрагмент кода описывает, что в версии конфигурации 2.0.1.2 подсистема _ДемоПоставляемыеДанные была перенесена из подсистемы _ДемоРаботаВМоделиСервиса в _ДемоНастройкаИАдминистрирование:

1C
1 2 3 4 5 6 7 8 Процедура ЗаполнитьТаблицуПереименованияОбъектовМетаданных(Итог) Экспорт // _Демо начало примера ОбщегоНазначения.ДобавитьПереименование(Итог, «2.0.1.2», «Подсистема._ДемоРаботаВМоделиСервиса.Подсистема._ДемоПоставляемыеДанные», «Подсистема._ДемоНастройкаИАдминистрирование.Подсистема._ДемоПоставляемыеДанные»); // _Демо конец примера КонецПроцедуры

Обновление идентификаторов выполняется последовательно по версиям конфигурации, а в пределах одной версии – в порядке следования строк со сведениями о переименованиях. Обновление идентификаторов для переименованных подсистем выполняется также и для всех их дочерних подсистем (если они есть).
Отдельным случаем, когда обновление идентификаторов происходит автоматически, является переименование объектов метаданных с целью изменения структуры данных с помощью создания новой копии объекта метаданных. Такая необходимость возникает, когда реструктуризация объекта метаданных невозможна. Например, при сокращении длины кода справочника Подразделения с 50 до 11, может потребоваться создать новый справочник, а старый переименовать в УдалитьПодразделения. В этом случае идентификатор справочника будет автоматически назначен новому справочнику с тем же именем.
Однако если при этом новый справочник будет назван иначе, например, СтруктурныеЕдиницы, то потребуется отразить переименование справочника Подразделения в справочник СтруктурныеЕдиницы, как это описано выше.
При активной разработке конфигурации данные справочника ИдентификаторыОбъектовМетаданных можно также обновлять вручную, без увеличения номера версии конфигурации, с помощью команды Обновить данные справочника в форме списка (открыв ее, например, из меню Все функции). Однако, это допустимо только в случае, когда не производилось переименование ролей и/или подсистем. В случае переименования ролей и/или подсистем, перед выполнением команды Обновить данные справочника нужно выполнить переименование полных имен соответствующих элементов справочника. Для этого нужно открыть форму элемента справочника ИдентификаторыОбъектовМетаданных, выполнить команду Включить возможность редактирования в меню Все действия и задать новое полное имя. В противном случае, этот элемент справочника будет помечен на удаление и создан новый, что приведет к рассогласованию идентификаторов объектов метаданных с объектами метаданных конфигурации.
Добавлено через 1 минуту
Сообщение от Dethmontt повысить производительность запросов, которые обращаются к реквизитам данного типа; Вот этого не понял вообще!!!
Добавлено через 2 минуты
Если я правильно понял, то 1С-ники пытаются упростить написание процедур обновления ТИПОВЫХ конфигураций и создают геморой для всех остальных…
Добавлено через 24 секунды

Не по теме:

Неплохой монолог у меня получается =)))

Добавлено через 2 часа 7 минут
Кто юзает типовые конфы на БСП — дайте хоть один пример запроса с использованием этого справочника?!>Для объекта метаданных не найден идентификатор в справочнике «Идентификаторы объектов метаданных»>Ситуация:

Добавил новый документ, после этого добавил его в типы команды печати, но при выборе «Назначения» для внешней печатной формы возникает данная ошибка/

Не найден идентификатор в справочнике идентификаторы объектов метаданных 1с

При добавлении новых объектов в типовые конфигурации возможна ошибка при обращении к этому объекту в режиме 1C:Предприятие: «Объект не найден в Справочнике «ИдентификаторыОбъектовМетаданных».

{Справочник.ИдентификаторыОбъектовМетаданных.МодульМенеджера(738)}: Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторОбъектаМетаданных().

Для объекта метаданных «Отчет.РИК_РасчетыСПартнерами» не найден идентификатор в справочнике «Идентификаторы объектов метаданных».

Для разработчика: возможно требуется обновить вспомогательные данные, которые влияют на работу программы. Для выполнения обновления можно:

— воспользоваться внешней обработкой «Инструменты разработчика: Обновление вспомогательных данных»,

— либо запустить программу с параметром командной строки 1С:Предприятия 8 «/С ЗапуститьОбновлениеИнформационнойБазы»,

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

Варианты решения:

1. В некоторых конфигурациях режиме предприятия

Все функции — Обработки — «Инструменты разработчика: Обновление вспомогательных данных», Если обработки нет, то пункт 2

Все функции — Справочники — «Идентификаторы объектов метаданных», нажать кнопку «Обновить данные справочника», Если кнопки обновить нет, то пункт 2

2. Из Конфигуратора запустить с параметром «/С ЗапуститьОбновлениеИнформационнойБазы», т.к. обработки может не оказаться под руками, а изменение версии производится с обновлением конфигурации и базы, что может оказаться не удобным:

Сервис/Параметры — Вкладка Запуск1С:Предприятия — В свойстве «Параметр запуска» добавляем «/С ЗапуститьОбновлениеИнформационнойБазы»

При запуске Предприятия появится окно обновления конфигурации. Потом не забудьте Убрать параметр запуска, чтобы больше не запускалось обновление!

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

4. Выполнить:

Код 1C v 8.2 УП &НаСервере
Процедура ОбновитьНоваяНаСервере()
Справочники.ИдентификаторыОбъектовМетаданных.ВыполнитьОбновлениеДанных(Истина, ЛОЖЬ,Ложь);
КонецПроцедуры

Обновление справочника «Идентификаторы объектов метаданных» без привязки к конфе и релизу БСП

Начну с того, что после добавления новой роли в конфу(на первый взгляд безобидное действие), начала появляться ошибка

Ошибка при выполнении функции ОбщегоНазначения.ИдентификаторыОбъектаМетаданных()
Для Объекта метаданных <Имя_Объекта> не найден идентификатор в справочнике «Идентификаторы объектов метаданных»
Для разработчика: возможно требуется обновить вспомогательные данные, которые влияют на работу программы. Для выполнения обновления можно:
— воспользоваться внешней обработкой «Инструменты разработчика: Обновление вспомогательных данных»
— либо запустить программу с параметром командной строки 1С: Предприятия 8
«/С ЗапуститьОбновлениеИнформационнойБазы»
— либо увеличить номер версии конфигурации, чтобы при очередном запуске выполнились процедуры обновления данных информационной базы.

К слову сказать, появляется она не только при добавлении роли, а и при добавлении других объектов.

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