Обновить зависимости дополнительных реквизитов. Обновляет видимость, доступность и обязательность заполнения
// Обновляет видимость, доступность и обязательность заполнения
// дополнительных реквизитов.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - обрабатываемая форма.
// Объект - ДанныеФормыСтруктура - описание объекта, к которому подключены свойства,
// если свойство не указано или Неопределено, то
// объект будет взят из реквизита формы "Объект".
//
Процедура ОбновитьЗависимостиДополнительныхРеквизитов(Форма, Объект = Неопределено) Экспорт
Если НЕ Форма.Свойства_ИспользоватьСвойства
ИЛИ НЕ Форма.Свойства_ИспользоватьДопРеквизиты Тогда
Возврат;
КонецЕсли;
Если Форма.Свойства_ОписаниеЗависимыхДополнительныхРеквизитов.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Если Объект = Неопределено Тогда
ОписаниеОбъекта = Форма.Объект;
Иначе
ОписаниеОбъекта = Объект;
КонецЕсли;
Для Каждого ОписаниеЗависимогоРеквизита Из Форма.Свойства_ОписаниеЗависимыхДополнительныхРеквизитов Цикл
Если ОписаниеЗависимогоРеквизита.ВыводитьВВидеГиперссылки Тогда
ОбрабатываемыйЭлемент = СтрЗаменить(ОписаниеЗависимогоРеквизита.ИмяРеквизитаЗначение, "ДополнительныйРеквизитЗначение_", "Группа_");
Иначе
ОбрабатываемыйЭлемент = ОписаниеЗависимогоРеквизита.ИмяРеквизитаЗначение;
КонецЕсли;
Если ОписаниеЗависимогоРеквизита.УсловиеДоступности <> Неопределено Тогда
Параметры = Новый Структура;
Параметры.Вставить("ЗначенияПараметров", ОписаниеЗависимогоРеквизита.УсловиеДоступности.ЗначенияПараметров);
Параметры.Вставить("Форма", Форма);
Параметры.Вставить("ОписаниеОбъекта", ОписаниеОбъекта);
Результат = Вычислить(ОписаниеЗависимогоРеквизита.УсловиеДоступности.КодУсловия);
Элемент = Форма.Элементы[ОбрабатываемыйЭлемент];
Если Элемент.Доступность <> Результат Тогда
Элемент.Доступность = Результат;
КонецЕсли;
КонецЕсли;
Если ОписаниеЗависимогоРеквизита.УсловиеВидимости <> Неопределено Тогда
Параметры = Новый Структура;
Параметры.Вставить("ЗначенияПараметров", ОписаниеЗависимогоРеквизита.УсловиеВидимости.ЗначенияПараметров);
Параметры.Вставить("Форма", Форма);
Параметры.Вставить("ОписаниеОбъекта", ОписаниеОбъекта);
Результат = Вычислить(ОписаниеЗависимогоРеквизита.УсловиеВидимости.КодУсловия);
Элемент = Форма.Элементы[ОбрабатываемыйЭлемент];
Если Элемент.Видимость <> Результат Тогда
Элемент.Видимость = Результат;
КонецЕсли;
КонецЕсли;
Если ОписаниеЗависимогоРеквизита.УсловиеОбязательностиЗаполнения <> Неопределено Тогда
Если Не ОписаниеЗависимогоРеквизита.ЗаполнятьОбязательно Тогда
Продолжить;
КонецЕсли;
Параметры = Новый Структура;
Параметры.Вставить("ЗначенияПараметров", ОписаниеЗависимогоРеквизита.УсловиеОбязательностиЗаполнения.ЗначенияПараметров);
Параметры.Вставить("Форма", Форма);
Параметры.Вставить("ОписаниеОбъекта", ОписаниеОбъекта);
Результат = Вычислить(ОписаниеЗависимогоРеквизита.УсловиеОбязательностиЗаполнения.КодУсловия);
Элемент = Форма.Элементы[ОбрабатываемыйЭлемент];
Если Не ОписаниеЗависимогоРеквизита.ВыводитьВВидеГиперссылки
И Элемент.АвтоОтметкаНезаполненного <> Результат Тогда
Элемент.АвтоОтметкаНезаполненного = Результат;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ПослеЗагрузкиДополнительныхРеквизитов (БСП)
ОбновитьЭлементыДополнительныхРеквизитов (БСП)
ОбновитьДанныеЗависимыхПроизводственныхКалендарей (БСП)
ОбновитьДанныеЗависимыеОтПроизводственныхКалендарей (БСП)
ЗаполнитьНаборыСДополнительнымиРеквизитами (БСП)
Создание дополнительного реквизита в наборе
Групповое изменение реквизитов, вытащить дополнительный реквизит
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)