#std697¶
Использование предопределенных элементов¶
Для информации
Стандарт действует для платформы 8.3.3 и выше без режима совместимости с 8.2.
1.1.¶
В справочниках, планах счетов, планах видов характеристик и планах видов расчета предопределенные элементы можно создавать автоматически или программно.
1.2.¶
В большинстве случаев создавайте предопределенные элементы автоматически.
Так проще и безопаснее работать с ними в коде.
Примеры: страна Россия в справочнике СтраныМира, профиль групп доступа Администратор.
Для этого:
- оставляйте свойство
ОбновлениеПредопределенныхДанных = Авто; - не переключайте режим в коде через
УстановитьОбновлениеПредопределенныхДанных; - запретите пользователям интерактивное удаление предопределенных данных.
Отключите следующие права ролей (по умолчанию они выключены):
ИнтерактивноеУдалениеПредопределенныхДанных;ИнтерактивнаяПометкаУдаленияПредопределенныхДанных;ИнтерактивноеСнятиеПометкиУдаленияПредопределенныхДанных;ИнтерактивноеУдалениеПомеченныхПредопределенныхДанных.
См. #std488: Стандартные роли.
1.3.¶
Для информации
Уточнение действует для управляемого и обычного приложения.
Исключение: подчиненные узлы РИБ.
В подчиненном узле предопределенные элементы:
- не создаются автоматически;
- не обновляются автоматически при изменении метаданных;
- должны приходить из главного узла вместе с изменениями конфигурации.
В этом режиме:
- Загружайте сообщение обмена в подчиненный узел до выполнения прикладного кода, который обращается к предопределенным элементам.
- В логике загрузки данных из главного узла (обработчик
ПриПолученииДанныхОтГлавного, правила регистрации объектов) избегайте обращений к предопределенным элементам. Нет гарантии, что они уже пришли из сообщения обмена. - Код обработчиков обновления ИБ, который заполняет предопределенные элементы, выполняйте только в главном узле.
Пример
При использовании подсистемы Обмен данными БСП версии 2.1.4 и выше требования 1 и 2 снимаются.
1.4.¶
Для таблиц с предопределенными элементами, которые:
- не входят в состав плана обмена РИБ;
- не связаны с таблицами, входящими в план обмена РИБ;
устанавливайте свойство ОбновлениеПредопределенныхДанных = ОбновлятьАвтоматически.
Значение Авто здесь не подходит:
в подчиненном узле Авто означает НеОбновлятьАвтоматически, и элементы автоматически не создаются.
Если включен режим совместимости с 8.3.3, при первом запуске подчиненного узла РИБ (сразу после обновления конфигурации) также устанавливайте автоматическое обновление данных программно:
Справочники.<ИмяСправочника>.УстановитьОбновлениеПредопределенныхДанных(
ОбновлениеПредопределенныхДанных.ОбновлятьАвтоматически);
2.¶
Если наличие предопределенного элемента зависит от условий (функциональные опции, режим работы и т. п.), автоматическое создание не требуется.
Пример: предопределенные виды расчета в плане видов расчета Начисления зависят от функциональных опций ИспользоватьУчетВремениСотрудниковВЧасах, ИспользоватьСдельныйЗаработок и др.
В этом случае:
- устанавливайте
ОбновлениеПредопределенныхДанных = Не обновлять автоматически; - реализуйте в прикладном коде создание элемента и, при необходимости, #std638: пометку недействительным;
- учитывайте в коде, что элемент может отсутствовать.
Пример
Если не учитывать отсутствие такого элемента, обращение из кода или запроса вызовет исключение.
Неправильно
При использовании БСП версии 2.1.4 и выше применяйте функцию ПредопределенныйЭлемент() общих модулей ОбщегоНазначения или ОбщегоНазначенияКлиент.
Она возвращает Неопределено, если элемента нет в ИБ.
См. также¶
Проверки¶
#acc:192 #acc:193 #acc:194 #acc:195 #acc:304 #acc:305 #acc:1149