В платформе 8.3 механизм предопределенных элементов существенно переработан. По сути, предопределенные элементы стали обычными, их наличие никак не контролируется платформой. Уже возникают ситуации когда, например, предопределенный элемент не пришел в узел РБД или был удален интерактивно. При обращении к удаленному предопределенному элементу возникнет ошибка "Предопределенный элемент отсутствует в данных" и продолжить работу в базе невозможно.
Для обхода привнесенных сложностей предлагается пример программного механизма предопределенных.
Новые объекты:
1. Общий макет с колонками "Имя предопределенного", "Имя справочника", "Это группа", "GUID", "GUID родителя", "Код", "Наименование".
2. Регистр сведений с изменением "Имя" и ресурсом "СсылкаБД"
3. Функции общего модуля ПолучитьПредопределенныйЭлемент(Имя) и СоздатьПредопределенныйЭлемент(Имя).
В функции ПолучитьПредопределенныйЭлемент при отсутствии данных в регистре сведений, вызываем функцию СоздатьПредопределенныйЭлемент, которая создает в базе новый элемент с данными из общего макета и прописывает ссылку на него в регистр.
Алгоритм создания новых предопределенных элементов:
1. Прописываем новый элемент в общем макете. Имя должно быть уникально.
2. Используем в коде с помощью функции общего модуля, например:
В отличие от платформенного механизма, получаем полную гарантию существования предопределенного элемента в БД. При отсутствии/случайном удалении элемент восстанавливается автоматически.