1с объект метаданных не найден по полному имени внешний отчет
Работа во встроенном языке с объектами метаданных
Во встроенном языке "1С:Предприятия" предоставляется доступ к структуре метаданных конфигурации. Эта возможность предназначена в основном для создания универсальных алгоритмов, которые могли бы единообразно работать с различными объектами конфигурации. В этом разделе приводится информация об особенностях работы с метаданными во встроенном языке.
Доступ к метаданным предоставляется только на чтение. Программное изменение метаданных не поддерживается.
В документации по встроенному языку не приводится перечень свойств объектов метаданных и коллекций подчиненных объектов. Для ознакомления со структурой объектов и составом свойств необходимо использовать отчет по конфигурации (в режиме Конфигуратор меню Конфигурация – Отчет по конфигурации). Имена, отображаемые в этом отчете, соответствуют именам свойств и коллекций подчиненных объектов.
Структура метаданных в отчете и в программной модели не содержит ветки "Общие". Эта ветка используется только в дереве метаданных для удобства редактирования. В отчете по конфигурации и в программной модели все объекты, входящие в ветку "Общие", подчинены непосредственно корневому объекту.
Доступ к структуре метаданных осуществляется через свойство Метаданные глобального контекста. Это свойство предоставляет доступ к корневому объекту конфигурации и коллекциям объектов верхнего уровня. Каждый объект предоставляет соответственно доступ к своим свойствам и подчиненным объектам. Таким образом, можно получить доступ к любому объекту.
Например:
Кроме того, у некоторых типов предназначенных для работы с прикладными объектами, имеется метод Метаданные() , предназначенный для получения объекта метаданных, отвечающего за конкретный тип.
Например:
Однако такие методы есть не у всех типов, используемых для работы с прикладными объектами. Если необходимо получить объект метаданных, отвечающий за некоторый тип прикладного объекта, то можно использовать метод НайтиПоТипу() .
Например:
Объекты метаданных можно сравнивать на равенство. При этом проверяется идентичность объектов, а не совпадение значений свойств. То есть проверяется то, что сравнивается именно один и тот же объект конфигурации.
Например:
С помощью метода Родитель() можно получить вышестоящий объект метаданных.
Например:
Для представления объекта метаданных пользователю нужно использовать преобразование значения к строке или метод Представление() .
Например:
Объекты метаданных не могут быть сериализованы. Для получения строкового значения, соответствующего объекту метаданных, независимого от языка интерфейса пользователя нужно использовать метод ПолноеИмя() .
Например:
Для поиска объекта метаданных, соответствующего значению перечисления, можно использовать методику, описанную в разделе "Как получить имя значения перечисления, заданное в метаданных?".
Метаданные можно использовать, чтобы проверить, относится ли, например, значение к справочникам. Методика такой проверки описана в разделе "Как проверить, что тип значения относится к справочникам, документам и т. д.?".
Некоторые свойства объектов метаданных имеют перечислимый тип. Это специальные перечисления. Доступ к ним в языке выполняется через коллекцию СвойстваОбъектов , предоставляемую корневым объектом метаданных. Состав этих перечислений описан в документации, в разделе, описывающем работу с объектами метаданных.
Например:
Некоторые свойства объектов метаданных являются коллекциями значений и представляются типом КоллекцияЗначенийСвойстваОбъектаМетаданных .
Например:
В разделе документации, описывающем работу с объектами метаданных, приводятся также описания специфических типов свойств метаданных, например, таких как ПараметрыВводаПоСтроке .
Следует учитывать, что не все значения свойств метаданных могут быть получены из встроенного языка. Программный доступ к объектам метаданных не позволяет получать, например, значения свойств, хранящих формы, модули, макеты, разделы справочной информации, картинки, интерфейсы, стили, наборы предопределенных объектов, права.
Для получения форм и макетов используются специализированные методы.
Для получения значений, идентифицирующих стили и элементы стилей, а также картинок, используются специализированные коллекции.
Например:
Для проверки прав текущего пользователя используются специализированные методы глобального контекста ПравоДоступа() и ПараметрыДоступа() .
При добавлении в типовые конфигурации новых объектов возможна ошибка при обращении к этому объекту в режиме 1С:Предприятие.
Текст ошибки примерно следующий:
Для решения этой проблемы требуется обновить вспомогательные данные, которые влияют на работу программы.
Для выполнения обновления можно:
- открыть через меню "Все функции" справочник "Идентификаторы объектов метаданных", нажать кнопку "Обновить данные справочника";
- если указанной кнопки нет - выполнить программный код:
- либо запустить программу с параметром командной строки 1С:Предприятия 8
"/С ЗапуститьОбновлениеИнформационнойБазы"; - либо увеличить номер версии конфигурации, чтобы при очередном запуске выполнились процедуры обновления данных информационной базы.
Специальные предложения
Она делает и это и еще многое другое Первый пункт понятный и очевидный, одна проблема - делать нужно монопольно. А бывает так, что внедришь объект в базу, обновишься, а в боевой базе забудешь выполнить этот пункт. А с утра уже пользователи залезли в базу и выходить не хотят. Можно ли 2-й и/или 3-й пункты делать НЕ монопольно? (3) Mortiferus, То же интересно, как сделать это НЕ монопольно?
>Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();
>"/С ЗапуститьОбновлениеИнформационнойБазы";
да, оба варианта требуют монопольный режим
Вариант через команду Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();
избавляет от ошибки "Объект не найден в Справочнике "ИдентификаторыОбъектовМетаданных"
но является неполноценным, например при добавлении новых ролей доступа через конфигуратор
роли становятся видны из 1с для настройки профилей через справочник "Профили групп доступа"
но потом при назначении профиля пользователю роль ему не назначается .
Поэтому рекомендую не искать приключений и пользоваться вариантом
запуска программы с параметром командной строки 1С:Предприятия 8
"/С ЗапуститьОбновлениеИнформационнойБазы";
параметр кстати можно указать в конфигураторе в
Сервис-Параметры-Запуск 1сПредприятия-Основные-Параметр запуска
запустить один раз, потом когда вы параметр уберете 1с будет его там помнить в выпадающем списке
Совет актуален для БСП версии 2.1.3.50 (14)разобрался, для пользователя не должно быть групп доступа в которые входят роли которые отмеченные как Основные роли в свойствах конфигурации. в таких ситуациях пользователю подключаются только такие роли, все другие не применяются. я так расцениваю что эти роли (основные) на столько максимальные по доступам что другие не могут быть шире.
как выяснилось, правильно набирать:
/c ЗапуститьОбновлениеИнформационнойБазы
Т.е. /c должно быть на латинице, а в тексте выше это написано на кириллице
Многие из нас знакомы с замечательным механизмом БСП "Макеты печатных форм", позволяющим пользователю самостоятельно менять макеты из метаданных конфигурации. В этой статье мы рассмотрим, как при помощи механизма расширения (модулей) данный функционал можно распространить на дополнительные обработки внешних печатных форм.
Релизацию задачи можно разделить на три шага перехвата и модернизации механизмов:
При разработке внешних печатных форм следует придерживаться определенных правил.
Разберем каждый из шагов подробнее.
1. Перехват и модернизации механизма заполнения типового списка макетов
Механизм находится в процедуре формы РегистрСведений.ПользовательскиеМакетыПечати.Форма.МакетыПечатныхФорм.ЗаполнитьТаблицуМакетовПечатныхФорм().
Добавляем форму МакетыПечатныхФорм в расширение, в модуле формы прописываем следующий код:
Схематично вышеприведенный код работает следующим образом:
2. Перехват и модернизации механизма получения макета по имени объекта метаданных
Механизм находится в функции ОбщийМодуль.УправлениеПечатью.МакетПечатнойФормы(ПутьКМакету)
Добавляем общий модуль УправлениеПечатью в расширение. В модуле расширения пишем следующий код:
Схематично вышеприведенный код работает следующим образом:
3. Перехват и модернизации механизма записи модернизированного пользовательского макета
Механизм находится в функции ОбщийМодуль.УправлениеПечатью.ЗаписатьМакет(ИмяОбъектаМетаданныхМакета, АдресМакетаВоВременномХранилище).
Общий модуль УправлениеПечатью мы уже добавили в наше расширение, поэтому сразу добавляем в модуль УравлениеПечатью следующий код:
Схема работы кода выглядит аналогично п.2.
4. Особенности печати пользовательского макета для внешней печатной формы
Разрабатывая внешнюю печатную форму, необходимо помнить о нескольких несложных правилах:
Вот, собственно, и все. Буду раз вашим комментариям.
Системные требования
Платформа: не ниже v8.3.11
БСП: v2.4.4.145 - v3.0.1.355
Специальные предложения
Мысли об оптимизации.
В этой (1.0) версии, для получения макета непосредственно из внешней обработки, выполнятся запрос к базе данных, хотя контекст, из которого вызывается функция МакетПечатнойФормы(), в большинстве случаев уже несет в себе ОбработкуОбъект.
Можно написать отдельную функцию получения макета, где входящим параметром нужно передавать ОбработкуОбъект, но такое решение усложняет, т.к. необходимо во внешних обработках переписывать место получения макета.
Если бы расширение позволяло добавлять в перехватываемую функцию необязательные параметры.
Смотрю в сторону дополнительных свойств ОбработкиОбъекта. Тогда тем, кому важна временнАя оптимизация получения макета могли бы добавлять ОбработкуОбъект в дополнительные свойства перед вызовом функции МакетПечатнойФормы().
Программное создание объектов метаданных
Всем привет! Возможно ли средствами 1С или каким-либо сторонним ПО создать новый объект(документ.
Ошибка Метаданных "не найден идентификатор в справочнике Идентификатор объекта метаданных"
В общем ситуация следующая, только начал разбираться с 1С, скачал с оф сайта учебную версию для.
Подскажите, пожалуйста, для JS полный справочник объектов, свойств, методов
Здравствуйте. Подскажите, пожалуйста, есть ли для JS полный справочник объектов, свойств, методов.
Где можно найти документацию, справочник, описание COM-объектов Excel, Word?
Подскажите где можно найти документацию, справочник, описание COM-объектов Excel, Word? Мой шеф.
Для хранения списка объектов метаданных
как я понял: юзается при сравнении конфигураций (а сравнение юзается при обновлении, обмене+обновлени, совместной разработке конф, итд)
Добавлено через 2 минуты
з.ы. конкретной инфы по справочнику не находил, везде косвенные отсылки к самому явлению "идентификаторы объектов метаданных"
Т.е. конфигуратора для этого НАМ мало.
Добавлено через 33 секунды
Давайте в Регистре Сведений хранить тексты функций?!
Добавлено через 25 минут
Нашел на ИТСе
Использование идентификаторов объектов метаданных
При необходимости хранить в базе данных ссылку на объект метаданных (например, ссылка на объект метаданных Справочник.Организации) рекомендуется вместо строкового реквизита с полным именем объекта метаданных использовать ссылку на соответствующий элемент справочника ИдентификаторыОбъектовМетаданных. Такая потребность возникает, например, в различных подсистемах БСП: для хранения настроек версионирования данных, списка выбранных ролей в профилях групп доступа и т.п.
Такой подход позволяет
Программно, ссылку на объект метаданных можно получить с помощью функции ИдентификаторОбъектаМетаданных общего модуля ОбщегоНазначения.
Справочник ИдентификаторыОбъектовМетаданных заполняется автоматически при первом запуске (и каждом обновлении) конфигурации, согласно метаданным конфигурации, а также автоматически актуализируется при каждом обновлении версии конфигурации (учитываются переименованные, добавленные и удаленные объекты метаданных). Полный список объектов метаданных (справочники, документы, регистры, и т.п.), обновление идентификаторов которых выполняется автоматически, см. в комментарии к функции ИдентификаторОбъектаМетадан*ных общего модуля ОбщегоНазначения.
Исключение составляют подсистемы и роли, обновление идентификаторов которых требуется выполнять вручную. Необходимость обновления идентификаторов подсистем и ролей возникает при их переименовании (а для подсистем – также и в случае их перемещения из одной родительской подсистемы в другую). В противном случае, возможно рассогласование идентификаторов объектов метаданных с объектами метаданных конфигурации.
Для обновления идентификаторов необходимо воспользоваться процедурой ЗаполнитьТаблицуПереименованияОбъектовМетаданных общего модуля ОбщегоНазначенияПереопределяемый и увеличить номер версии конфигурации. Например, следующий фрагмент кода описывает, что в версии конфигурации 2.0.1.2 подсистема _ДемоПоставляемыеДанные была перенесена из подсистемы _ДемоРаботаВМоделиСервиса в _ДемоНастройкаИАдминистрирование:
Обновление идентификаторов выполняется последовательно по версиям конфигурации, а в пределах одной версии – в порядке следования строк со сведениями о переименованиях. Обновление идентификаторов для переименованных подсистем выполняется также и для всех их дочерних подсистем (если они есть).
Отдельным случаем, когда обновление идентификаторов происходит автоматически, является переименование объектов метаданных с целью изменения структуры данных с помощью создания новой копии объекта метаданных. Такая необходимость возникает, когда реструктуризация объекта метаданных невозможна. Например, при сокращении длины кода справочника Подразделения с 50 до 11, может потребоваться создать новый справочник, а старый переименовать в УдалитьПодразделения. В этом случае идентификатор справочника будет автоматически назначен новому справочнику с тем же именем.
Однако если при этом новый справочник будет назван иначе, например, СтруктурныеЕдиницы, то потребуется отразить переименование справочника Подразделения в справочник СтруктурныеЕдиницы, как это описано выше.
При активной разработке конфигурации данные справочника ИдентификаторыОбъектовМетаданных можно также обновлять вручную, без увеличения номера версии конфигурации, с помощью команды Обновить данные справочника в форме списка (открыв ее, например, из меню Все функции). Однако, это допустимо только в случае, когда не производилось переименование ролей и/или подсистем. В случае переименования ролей и/или подсистем, перед выполнением команды Обновить данные справочника нужно выполнить переименование полных имен соответствующих элементов справочника. Для этого нужно открыть форму элемента справочника ИдентификаторыОбъектовМетаданных, выполнить команду Включить возможность редактирования в меню Все действия и задать новое полное имя. В противном случае, этот элемент справочника будет помечен на удаление и создан новый, что приведет к рассогласованию идентификаторов объектов метаданных с объектами метаданных конфигурации.
Читайте также: