В этой статье речь пойдет о предопределенных элементах, которые можно создать в платформе 1С:Предприятие 8.
Для чего нужны предопределенные элементы
Ответ на этот вопрос вполне очевиден — для того, чтобы разработчик в коде мог обратиться к таким элементам надежным способом, т.к. поиск по коду или по наименованию не является надежным. Захардкодить поиск по уникальному идентификатору элемента в код — также не является хорошим тоном.
Куда можно добавить
Предопределенные элементы могут быть созданы у:
- справочников;
- планов счетов;
- планов видов характеристик;
- планов видов расчета.
Предопределенные элементы не могут быть у подчиненного справочника, т.е. если справочник имеет хотя бы одного владельца, то в него не могут быть добавлены предопределенные элементы. И наоборот, если справочник, имеет хотя бы один предопределенный элемент — его нельзя сделать подчиненным.
Это очень важная особенность про которую стоит помнить. Как-то у меня на проекте была задача создать подчиненный справочник, а в последствии встала задача добавить в него предопределенные элементы — пришлось все переделывать. Такое поведение платформы не очевидно, но вполне логично, т.к. в нормальных условиях у элемента подчиненного справочника свойство Владелец всегда указано, а при добавлении предопределенного элемента в конфигураторе мы можем лишь указать его имя, код и наименование.
В платформе 8.3 появилась возможность удалять предопределенные элементы в режиме 1С:Предприятие, ровно как и связывать существующие, задав им имена. В связи с этим в было добавлено системное перечисление ОбновлениеПредопределенныхДанных, содержащее следующие значения:
- Авто;
- НеОбновлятьАвтоматически – предопределенные элементы не создаются в БД;
- ОбновлятьАвтоматически – предопределенные элементы будут созданы.
При удалении предопределенного элемента в режиме Конфигуратор, связанная с ним запись в базе данных будет помечена на удаление если для справочника свойство ОбновлениеПредопределенныхДанных = ОбновлятьАвтоматически.
Рассмотрим свойство ИмяПредопределенныхДанных. Оно служит для связи записи в базе данных элементом предопределенных данных, заданным в конфигурации. Таким образом имеется возможность связать существующие записи в БД с элементами предопределенных данных, например, следующим кодом:
ЭлементСсылка = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Производитель"); Объект = ЭлементСсылка.ПолучитьОбъект(); Объект.ИмяПредопределенныхДанных = "Производитель"; Объект.Записать();
А также можно «отвязать» элемент в базе данных от предопределенного элемента.
Получить список предопределенных элементов данных можно обратившись к метаданным, следующим образом:
Список = Метаданные.ПланыВидовХарактеристик.СвойстваОбъектов.ПолучитьИменаПредопределенных();
Более подробно можно почитать на ИТС https://its.1c.ru/db/v8315doc#bookmark:dev:TI000000280