1С 8.3 ПредопределенноеЗначение()
Данные > Примеры кода 1С > 1С 8.3 Приложение, система, интерфейс
Перейти в раздел примеры кода 1С 8.3:
При работе в клиентском коде 1С (тонкий или веб‑клиент) менеджеры объектов недоступны. Однако часто возникает необходимость получить ссылку на предопределённые элементы справочников или значения перечислений. Для этого существует функция глобального контекста ПредопределенноеЗначение().
Получаем ссылку на элемент ЮридическоеЛицо из перечисления ЮридическоеФизическоеЛицо в 1С 8.3:
ЮрФизЛицо = ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ЮридическоеЛицо");
Преимущества функции:
- Нет необходимости в собственном кэше - значения автоматически кэшируются на клиенте.
- Минимальная нагрузка на сервер - сервер участвует только при первом обращении.
- Чистый и понятный код - без лишних обёрток и вспомогательных функций.
- Единообразие бизнес‑логики - одно и то же значение используется во всех местах системы одинаково.
Типичные ошибки и подводные камни:
- Неверная строка пути Если указать строку с опечаткой или неправильным именем, функция вернёт Неопределено. Совет: всегда проверяйте строку и используйте копирование из конфигуратора.
- Отсутствие предопределённого элемента Если в конфигурации элемент был удалён или переименован, код перестанет работать. Совет: при изменениях в конфигурации пересмотрите все вызовы ПредопределенноеЗначение().
- Использование в серверном коде без необходимости На сервере доступ к менеджерам объектов есть напрямую, поэтому вызов функции там избыточен. Совет: используйте её именно в клиентском коде.
- Сравнение с текстом вместо ссылки Иногда разработчики пытаются сравнивать строку с предопределённым значением. Это ошибка: функция возвращает ссылку, а не строку. Совет: сравнивайте только ссылки.
Значения по умолчанию в формах в 1С 8.3:
Процедура ПриОткрытии(Отказ)
Если НЕ ЗначениеЗаполнено(ЭтотОбъект.ТипКонтрагента) Тогда
ЭтотОбъект.ТипКонтрагента =
ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ЮридическоеЛицо");
КонецЕсли;
КонецПроцедуры
Если НЕ ЗначениеЗаполнено(ЭтотОбъект.ТипКонтрагента) Тогда
ЭтотОбъект.ТипКонтрагента =
ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ЮридическоеЛицо");
КонецЕсли;
КонецПроцедуры
Проверка условий в 1С 8.3:
Если Контрагент.Тип = ПредопределенноеЗначение("Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо") Тогда
Сообщить("Выбрано физическое лицо");
КонецЕсли;
Сообщить("Выбрано физическое лицо");
КонецЕсли;
Настройка интерфейсов в 1С 8.3:
Если Пользователь.Роль = ПредопределенноеЗначение("Перечисление.РолиПользователей.Администратор") Тогда
ЭлементыФормы.КнопкаНастройки.Видимость = Истина;
Иначе
ЭлементыФормы.КнопкаНастройки.Видимость = Ложь;
КонецЕсли;
ЭлементыФормы.КнопкаНастройки.Видимость = Истина;
Иначе
ЭлементыФормы.КнопкаНастройки.Видимость = Ложь;
КонецЕсли;
Использование ПредопределенноеЗначение() в разных модулях гарантирует единообразие и снижает риск ошибок при работе с предопределёнными элементами.
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник