В этой статье речь пойдет о предопределенных элементах, которые можно создать в платформе 1С:Предприятие 8.

 

Для чего нужны предопределенные элементы

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

 

Куда можно добавить

Предопределенные элементы могут быть созданы у:

  • справочников;
  • планов счетов;
  • планов видов характеристик;
  • планов видов расчета.

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

Рис. 1. Добавление предопределенных элементов невозможно

https://its.1c.ru/db/v8315doc#bookmark:dev:TI000000306

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

В платформе 8.3 появилась возможность удалять предопределенные элементы в режиме 1С:Предприятие, ровно как и связывать существующие, задав им имена. В связи с этим в было добавлено системное перечисление ОбновлениеПредопределенныхДанных, содержащее следующие значения:

  • Авто;
  • НеОбновлятьАвтоматически – предопределенные элементы не создаются в БД;
  • ОбновлятьАвтоматически – предопределенные элементы будут созданы.

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

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

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

А также можно «отвязать» элемент в базе данных от предопределенного элемента.

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

Список = Метаданные.ПланыВидовХарактеристик.СвойстваОбъектов.ПолучитьИменаПредопределенных();

Более подробно можно почитать на ИТС https://its.1c.ru/db/v8315doc#bookmark:dev:TI000000280