Как сделать предопределенный элемент в 1с

от admin

1c 8.3 как любой элемент справочника сделать предопределенным ?

Чтобы связать предопределенный элемент с новой записью, нужно присвоить свойству ИмяПредопределенныхДанных имя предопределенного элемента:

НайденнаяСсылка = Справочники.Организации.НайтиПоНаименованию(«ООО «»Товары»»»);

(5) Почему?
Нельзя создавать новые предопределенные элементы.
Но можно перепривязать одни элементы данных вместо других к предопределенным.

«Отключить» элемент данных от элемента предопределенных данных. Для этого необходимо присвоить свойству ИмяПредопределенныхДанных пустую строку и записать элемент:

Объект = Справочник.Товары.Услуга.ПолучитьОбъект();
Объект.ИмяПредопределенныхДанных = "";
Объект.Записать();

Предопределенные элементы справочников 1С 8.3

У любого справочника 1С (кроме подчиненных) можно создавать предопределенный элемент или предопределенную группу этого справочника (если справочник иерархический). Предопределенные элементы справочника это элементы созданные разработчиком в конфигураторе, с которыми пользователь может работать. Пользователю уже не нужно самостоятельно создавать этот элемент справочника, он уже будет создан в базе по умолчанию при установке. Также разработчикам очень удобство работать с предопределенными элементами в том, что разработчик к ним может обращаться напрямую, используя менеджер справочника. В этой статье мы научимся работать с предопределенными элементами.

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

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

Открыть список предопределенных элементов справочников 1С

Откроется список предопределенных элементов (и групп, если справочник иерархический), в котором можно добавлять новые элементы. Причем заметьте, при добавлении мы можем указать только наименование элемента и его код, если у справочника есть реквизиты, то мы эти реквизиты мы сможем заполнить только в пользовательском режиме.

Список предопределенных элементов справочников 1С

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

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

Список предопределенных элементов иерархического справочника 1С

Если мы зайдем в форму списка справочника Страны в пользовательском режиме «1С: Предприятия», то обнаружим, что уже имеются группы и элементы с точкой внизу. Так платформа помечает предопределенные элементы и группы.

Предопределенные элементы и группы в справочнике 1С

Замечу, что все реквизиты у предопределенных элементов присутствуют также как и у обычных, и в них можно записывать какие-либо значения.

Реквизит предопределенного элемента

Получить предопределенный элемент справочника 1С

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

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

Имейте в виду, что и при помощи метода ПредопределенноеЗначение и при помощи прямого обращения посредством менеджера объекта мы получим ссылку на элемент, с которой можем работать как с обычной ссылкой на элемент справочника: присваивать её какому-нибудь реквизиту, получать объект из этой ссылки и т.д.

Ссылка на предопределенный элемент справочника

Создать предопределенный элемент справочника 1С

Мы уже научились создавать предопределенные элементы справочника в конфигураторе, но можно ли создать предопределенный элемент программно? И да, и нет.

Мы можем из простого элемента сделать предопределенный, и наоборот предопределенный элемент сделать простым.

Для этих целей у справочников имеется стандартный реквизит ИмяПредопределенныхДанных.

Реквизит ИмяПредопределнныхДанных справочника 1С

Если мы получим ссылку на предопределенный элемент, то этот реквизит заполнен.

Реквизит ИмяПредопределнныхДанных у предопределенного элемента справочника 1С

Если же мы возьмем какой-то не предопределенный элемент, то этот реквизит будет пустой.

Реквизит ИмяПредопределнныхДанных у простого элемента справочника 1С

Если мы этому реквизиту присвоим какое-нибудь имя (помня об уникальности имен предопределенных элементов в контексте конкретного справочника), то мы программно «создадим» предопределенный элемент, но только в том случае если это имя уже существует в списке предопределенных элементов справочника, которые были заданы в конфигураторе 1С!

Например, тот же элемент «Тунис» справочника «Страны» у нас простой.

Простой элемент справочника 1С

В какой-нибудь обработке напишем код, в котором попробуем сделать из этого элемента предопределенный элемент.

Если мы попытаемся его сейчас выполнить, то у нас возникнет ошибка «Предопределенный элемент не существует».

Предопределенный элемент не существует

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

Если же мы у предопределенного элемента реквизиту ИмяПредопределенныхДанных присвоим пустую строку, то такой элемент станет простым, если же этому реквизиту обратно присвоим имя предопределенного элемента, то простой элемент станет предопределенным.

Сделаем на обработке две команды. Первая будет снимать предопределенность у элемента справочника с именем «Китай», а вторая устанавливать.

Теперь обратно установим.

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

Имя предопределенного элемента справочника

У нас до снятия элемент «Китай» был предопределенным.

Предопределенный элемент справочника 1С

А после снятия это стал простой элемент.

Элемент справочника 1С

Удалить предопределенный элемент справочника 1С

Начиная с платформы 1С 8.3 предопределенные элементы можно удалять в пользовательском режиме.

Установка пометки на удаление предопределенного элемента справочника 1С

Пометка на удаление предопределенного элемента справочника 1С

Если сейчас этот элемент удалить через стандартную обработку «Удаление помеченных объектов», то он исчезнет из базы.

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

Права на удаление предопределенного элемента

Что делать, если мы ошиблись и хотим опять «вернуть» предопределенный элемент? Есть несколько способов. Но самый простой это создать новый элемент справочника в пользовательском режиме и присвоить ему имя удаленного предопределенного элемента, как мы это уже делали.

Остальные статьи по теме конфигурирования:

Более подробно и основательно работа со справочниками, документами и другими объектами метаданных дается в моей книге:

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Вступайте в мои группы:

3 Replies to “Предопределенные элементы справочников 1С 8.3”

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

Справочники

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

Структура справочника

Справочник обычно описываются следующим набором данных:

Предопределенные реквизиты

У каждого справочника есть номер и наименование. В принципе их можно отключить, указав длину 0. Так же код может быть числовым или текстовым, если код текстовый для удобства сортировки система дополняет код лидирующими нулями на всю длину кода, например если у справочника указана длина кода 9 и справочнику был присвоен код 3 то система дополнит нулями до такого вида: "000000003". Также в случае если имеется распределенная база в код обычно добавляется префикс той базы в которой был создан элемент, например: "ЦН0000003". Нужно учитывать эту особенность если вы соберетесь указывать числовой код, этот объект не сможет корректно работать в распределенной базе. У справочника есть и другие предопределенные реквизиты:

Иерархичность.

Иерархия это способность выводить справочник в виде дерева. Эта возможность бывает очень удобной, в случаях когда в справочнике содержится много информации. В таких случаях бывает полезно разложить номенклатуру "по полочкам". При включении иерархичности у справочника, добавляются два стандартных реквизита ЭтоГруппа и Родитель . Манипулируя значением реквизита Родитель, можно переназначать родителей элемента. Строится иерархия на группах, в эти группы могут входить другие элементы или другие группы. Аналогию можно провести с проводником windows или с большинством файловых систем если вам будет удобно: есть папки в которых могут быть как файлы так и папки в которых в свою очередь тоже могут быть и файлы и папки итд. Иерархия может работать и без групп. То есть родителями могут выступать другие элементы справочника. Такой вид иерархии называется иерархия элементов. Если мы настроили иерархию, у нас появляется возможность настраивать, для какого типа могут использоваться реквизиты, для групп, элементов, или и для того и для другого. Иерархия настраивается на закладке Иерархия свойств справочника.

Подчиненность

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

Ввод по Строке

При выборе ссылочных данных в 1С есть возможность выбрать элемент справочника или документ, набирая ключевые реквизиты объекта который мы хотим найти, выглядит это следующим образом: пользователь, набирает «масло моторное» в поле ввода с типом "Справочник.Номенклатура" и нажимает ввод. 1С находит все записи которые начинаются с названия со слов "масло моторное" и показывает их в виде выпадающего списка под полем где пользователь вводил текст. Такой же ввод возможен и для документов. Это поведение системы можно настроить на закладке «Формы». Там есть поле Ввод по строке , по умолчанию для справочников указана возможность поиска по коду и наименованию, но туда можно добавить и свои реквизиты, для того, что бы добавить этот реквизит, он должен быть индексирован и реквизит должен быть примитивного типа.

Предопределенные элементы справочников.

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

Таким образом, очень удобно ссылаться на предопределенные элементы из встроенного языка или опираться на них при построении каких то условий. Предопределенные элементы справочников можно использовать в схемах СКД и запросах.

Важно. Контроль за удалением предопределенных элементов лежит на плечах разработчиков, а не платформы.

Для предопределенных элементов справочников, стандартный реквизит Предопределенный имеет значение Истина. Это свойство которое доступно только на чтение, но это не означает, что нельзя "обычный" элемент справочника сделать предопределенным и наоборот. В последних релизах 8.3FIXME(Надо узнать в каких именно), появилась возможность переопределять предопределенные элементы изменяя свойство ИмяПредопределенныхДанных . Например, вот так можно сделать элемент не предопределенным:

И наоборот указав в свойстве ИмяПредопределенныхДанных имя предопределенного элемента справочника, можно сделать его предопределенным. У иерархических справочников возможно указывать предопределенные группы. Предопределенные элементы нельзя создавать у подчиненных справочников. В пользовательском режиме предопределенный элемент отличается, от обычного, следующим образом(показать скрин).

Подсказка. Предопределенные элементы часто используют для того, что бы избавиться в коде от конструкций вида: НайтиПоКоду и НайтиПоНаименованию . Использование этих методов считается дурным тоном, так как наименование и код справочника достаточно часто изменяются. Обычно поступают следующим образом: Создают справочник, например Настройки с единственным реквизитом Значение . После этого в конфигураторе добавляют предопределенный элемент с нужным названием а в режиме 1с Предприятие, задают его значение. Теперь вместо того что бы писать в коде:

Читать:
Как в 1с добавить колонку комментарий

или что еще хуже

Можно просто указать:

Классы для работы со справочниками.

Все классы справочника можно увидеть в ветке Прикладные объекты –> Справочники .

Cправочники это элементы которые хранятся в базе данных, считается очевидным, что обращение к любому из классов возможно только на сервере.

Справочник менеджер

Справочник менеджер – можно получить с помощью переменных глобального контекста:

Этот класс служит для:

Получать пустые ссылки:

И много еще разных возможностей которые можно наблюдать в синтаксис помощнике в ветке: Прикладные объекты – >Справочники – СправочникМенеджер.<ИмяСправочника>

Справочник ссылка

Справочник ссылка – самый часто используемый тип. Используется для чтения данных справочника. Его можно получить с помощью НайтиПоНаименованию , НайтиПоКоду и др методов класса СправочникМенеджер . Так же его можно получить с помощь класса Выборка и этот тип данных хранится в реквизите Cсылка объекта класса Справочник объект . В этом классе нам доступны все реквизиты справочника, табличные части и все стандартные реквизиты. Абсолютно все свойства этого класса нам доступны только на чтение. Для того что бы изменять реквизиты справочника нам нужен класс Справочник Объект . Получить его можно с помощью метода Получить Объект() .

Справочник Объект

Класс Справочник Объект отличается от класса Справочник Ссылка не многим, основная его функция обеспечить возможность изменения элемента справочника. Запись происходит с помощью метода Записать()

Справочник Выборка

Справочник Выборка получается с помощью методов Выбрать и Выбрать Иерахически он позволяет обойти элементы справочника в цикле, с помощью метода Следующий() .

Популярные приемы работы со справочниками

Поиск по наименованию.

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

Для поиска по наименованию используется функция НайтиПоНаименованию() . Для использования этого метода необходимо указать наименование по которому будет происходить поиск. Если поиск должен проходить по точному соответствию с указанной строкой то вторым параметром, нужно указать Истина, иначе поиск будет проходить по первым буквам указанного шаблона поиска, то есть если в качестве строки для поиска указать "Слон" то под шаблон попадут и "Слон" и "Слон игрушечный" и "Слонопотам". Поиск можно ограничить определенной группой, если справочник иерархический или владельцем, если справочник подчиненный. Если значение не найдено, метод вернет пустую ссылку того типа справочника для которого производился поиск.

Поиск по коду

Для поиска по коду используется функция НайтиПоКоду() . Для использования этого метода необходимо в параметре "Код" указать код, по которому будет производиться поиск. Если в качестве кода указывается полный путь с учетом иерархии (уровни справочника разделяются символом "/"), то второй параметр поиск по полному коду, необходимо установить в Истина. Например: Номенклатура "Слонопотам" с кодом "001142" находится в папке "Мягкие Игрушки" с кодом "000826" которая находится в папке "Игрушки" с кодом 000375. Тогда можно найти ее с помощью вот такой строки

Или можно искать сразу:

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

Выборка

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

При использовании метода Следующий() в классе выборка, текущим устанавливается следующий элемент из текущей выборки. Если в выборка спозиционировалась на определенном элементе, она возвращает Истина, иначе Ложь. Для класса Справочник Выборка доступны все поля и табличные части, которые определены для текущего справочника, а так же есть свойство Ссылка которое позволяет получить ссылку на текущий элемент справочника из выборки. Для того что бы при выборке учитывалась иерархия справочника, необходимо использовать метод ВыбратьИерархически() .

Программное создание элементов справочника

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

Группа справочника создается аналогично с помощью метода СоздатьГруппу() В том случае, если у справочника установлено свойство Автонумерация код указывать не нужно, он устанавливается автоматически.

Проверка переменной с типом СправочникСсылка на заполненность

Иногда возникает необходимость проверить заполнено ли значение с типом «Справочник.Ссылка». Такая необходимость может возникнуть, когда реквизит какого либо объекта имеет тип «Справочник.Ссылка» или когда вы например ищете элемент справочника по коду или наименованию, или в ряде других случаев, когда метод возвращает пустую ссылку на справочник. Есть несколько способов это сделать:

Только для сервера

Проверка элемента справочника на вхождение в какую либо группу или подчинение элементу

Когда мы говорим о проверке подчиненности, необходимо понимать, что все методы справедливы не только для групп, но и для элементов, если у справочника установлен вид иерархии "Иерархия элементов". Здесь возможно несколько вариантов: если у нас есть группа и нам необходимо знать если ли именно в ней и нигде иначе определенный элемент справочника, то можно сравнить предопределенный реквизит Родитель нужного нам элемента справочника с ссылкой на группу, например:

Если справочник многоуровневый и нужно знать есть ли элемент в этой группе или где то в подчинненых группах то можно воспользоваться методом "ПринадлежитЭлементу()" этот метод вернет Истина если элемент содержится в текущей или любой подчиненной группе. Например в этом случае

условие будет истинным.

СправочникСсылка <> СправочникОбъект

При работе со справочниками очень важно понимать, что во всех реквизитах, выборках и тд, мы чаще всего работаем с типом СправочникСсылка и этот тип позволяет получить любую информацию которая находится в его реквизитах, но не поддерживает запись. Для изменения реквизитов справочника и записи следует использовать тип СправочникОбъект. Преобразовать ссылку в объект можно с помощью метода ПолучитьОбъект() Например:

Проверка на то что ссылка является ссылкой на справочник

Проверить то что справочник является ссылкой можно очень просто, с помощью одной строки:

Где СсылкаНаЭлементСправочника проверяемая ссылка, эта строка вернет Истина если проверяемая ссылка является ссылкой на какой либо элемент справочника.

Предопределенные данные

ЭлементСсылка = Справочник.Товары.НайтиПоНаименованию (“Услуга доставки”);
Объект = ЭлементСсылка.ПолучитьОбъект() ;
Объект.ИмяПредопределенныхДанных = “Услуга”;
Объект.Записать() ;

В результате этой операции, предопределенному элементу Услуга справочника Товары будет сопоставлен элемент данных с именем Услуга доставки.
При записи объекта проверяется, что в информационной базе не существует другого элемента данных с именем предопределенных данных, установленного в значение, с которым записывается элемент данных.
● «Отключить» элемент данных от элемента предопределенных данных. Для этого необходимо присвоить свойству ИмяПредопределенныхДанных
пустую строку и записать элемент:

Объект = Справочник.Товары.Услуга.ПолучитьОбъект ();
Объект.ИмяПредопределенныхДанных = “”;
Объект.Записать() ;
Если попробовать обратиться к предопределенному элементу Справочник.Товары.Услуга после выполнения вышеприведенного примера, то будет сгенерировано исключение.
Таким образом, процесс смены элемента данных, связанного с предопределенными данными, выполняется в два этапа:
● Выполняется «отключение» существующего элемента данных от предопределенного элемента;
● Выполняется связывание нового элемента данных с предопределенным элементом.
Создание элементов данных, связанных с предопределенными данными, может быть выполнено одним из трех способов:
● Автоматически, во время реструктуризации информационной базы. Это происходит в следующем случае:
● Разрешено автоматическое создание и обновление предопределенных данных;
● Предопределенные данные ранее создавались в данной области данных или информационной базе.
● Автоматически, при первом обращении к таблице, хранящей данных объекта конфигурации. Создание предопределенных элементов в этом случае
будет выполняться при условии, что создание предопределенных элементов не запрещено.
● С помощью встроенного языка, указав свойство ИмяПредопределенныхДанных при создании элемента данных. Этот способ можно использовать, если
автоматическое создание предопределенных элементов запрещено в свойствах объектов конфигурации.
Обновление данных, связанных с предопределенными, будет выполняться в том случае, если разрешено автоматическое обновление предопределенных данных, предопределенные данные связаны с реальными данными и предопределенные данные изменены в конфигураторе. Во всех остальных случаях информация, введенная в конфигураторе, не будет перенесена в информационную базу.
Изменение порядка следования предопределенных элементов в предопределенных табличных частях плана счетов и плана видов расчета обрабатывается в связанных данных, т. е. порядок элементов в данных будет таким же, каким он задан в метаданных. Данные, введенные пользователем (не предопределенные) будут располагаться после предопределенных.

Если в конфигураторе выполнено удаление элемента предопределенных данных, то будет выполнено следующее:
● Элемент данных, связанный с элементом предопределенных данных, будет помечен на удаление.
● В списке субконто элемента плана счетов будут удалены соответствующие записи.
● В списках ведущих, базовых и вытесняющих видов расчета будут удалены соответствующие записи.
Для принудительного создания элементов предопределенных данных (для справочников, планов видов характеристик, планов видов расчетов и планов счетов) следует воспользоваться методом ИнициализироватьПредопределенныеДанные(). Вызов этого метода выполнит принудительное создание элементов предопределенных данных при выполнении следующих условий:
● Предопределенные элементы ранее не создавались в текущей области данных.
● Обновление предопределенных данных настроено таким образом, что создание и обновление предопределенных данных должно выполняться.
Если указанные условия не выполняются – создание предопределенных элементов не выполняется.
Если в прикладном решении отключено автоматическое обновление предопределенных данных, то удаление предопределенного элемента приводит к изменению в связанном объекте данных (если таковой есть). Значение свойства ИмяПредопределенныхДанных заменяется значением #xxxxxxxx-xxxxxxxx-
xxxx-xxxxxxxxxxxx, где xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx – это уникальный идентификатор удаленного элемента метаданных.
Если требуется получить список предопределенных элементов для объекта конфигурации, то сделать это можно с помощью метода
ПолучитьИменаПредопределенных ().
Пример получения списка предопределенных:

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

Работа в распределенной информационной базе

При работе в режиме распределенной информационной базы вместе с конфигурацией передаются предопределенные элементы. Собственно элементы данных, связанные с предопределенными данными, передаются обычным образом, с помощью плана обмена. При этом автоматическое создание предопределенных данных в периферийной информационной базе не произойдет, подробное описание причины см. здесь.
ВНИМАНИЕ! Если данные, связанные с предопределенными элементами, оказались получены в подчиненном узле раньше, чем конфигурация со связанными предопределенными элементами, то автоматического «связывания» данных и предопределенных данных не произойдет. Для этого потребуется повторно выгрузить из центральной в периферийную информационную базу нужные элементы данных.
Если начальный образ периферийной информационной базы создается до того, как с главной информационной базой начали работать, можно воспользоваться специальным методом ИнициализацияПредопределенныхДанных () для создания предопределенных элементов, чтобы они автоматически попали в периферийную информационную базу. Метод надо вызывать до того, как выполнено создание начального образа.
При отмене назначения главного узла (например, для выполнения каких-либо специальных действий), следует учитывать следующий момент: при
определении необходимости создания или обновления предопределенных элементов такая информационная база не будет считаться периферийной. В связи с этим, при первом запуске такой информационной базы в режиме «1С:Предприятие», режим создания или обновления предопределенных элементов может быть определен как Обновлять автоматически. Чтобы избежать этого, можно воспользоваться параметром командной
строки /SetPredefinedDataUpdate (или использовать метод глобального контекста
УстановитьОбновлениеПредопределенныхДанныхИнформационнойБазы ()).
Этим же способом можно воспользоваться в том случае, если используется универсальный механизм обмена данными между информационными базами
с подобными, но не идентичными типовыми решениями, и необходимо сделать одну информационную базу ведущей (в части предопределенных данных). Для информационной базы, где необходимо создавать предопределенные элементы, следует указать значение Создавать автоматически, а для другой информационной базы – Не создавать автоматически. При этом связь элемента конфигурации и объекта данных будет выполняться по имени предопределенного элемента.
Также при использовании универсального механизма обмена данными следует учитывать следующие особенности:
● При записи объекта данных, который в базе-источнике является предопределенным, система проверяет наличие такого же имени предопределенных данных в типообразующем объекте конфигурации. Если такое имя есть – объект будет загружен без изменений. Если такого имени нет – в объекте при загрузке будет очищено свойство ИмяПредопределенныхДанных.

Например, выполняется универсальный обмен данными между одинаковыми информационными базами. В каждой информационной базе существует
справочник Номенклатура. В каждой информационной базе в этом справочнике содержится предопределенный элемент Услуга. Ссылки на эти объекты данных разные.
Тогда при загрузке произойдет следующее: система обнаружит наличие в базе-приемнике предопределенный элемент Услуга и выполнит загрузку с сохранением свойства ИмяПредопределенногоЭлемента. Это будет возможно в том случае, если перед записью элемента свойство ОбменДанными.Загрузка установлено в значение Истина. В противном случае будет вызвано исключение.
Однако при попытке обратиться в базе-приемнике к предопределенному элементу Услуга, произойдет ошибка, т. к. в системе не может быть двух объектов, связанных с одинаковым предопределенным элементом.
Не следует допускать возникновения такой ситуации. Прикладной разработчик должен самостоятельно обрабатывать попытку загрузки объекта данных с дублирующим именем предопределенных данных.
● При записи объекта данных, у которого имя предопределенных данных ссылается на удаленный элемент (имеет вид #xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx), то такой элемент будет записан в любом случае. Однако система не позволит записать два объекта,
ссылающиеся на один удаленный предопределенный элемент (с одинаковым значением имени предопределенных данных), кроме как в случае, когда перед записью элемента свойство ОбменДанными.Загрузка установлено в значение Истина .

Related Posts