ОбновитьЗависимостиДополнительныхРеквизитов (БСП)

Автор: 1С
ОбщийМодуль.УправлениеСвойствамиКлиент
БСП

Обновить зависимости дополнительных реквизитов. Обновляет видимость, доступность и обязательность заполнения

// Обновляет видимость, доступность и обязательность заполнения
// дополнительных реквизитов.
//
// Параметры:
//  Форма  - ФормаКлиентскогоПриложения     - обрабатываемая форма.
//  Объект - ДанныеФормыСтруктура - описание объекта, к которому подключены свойства,
//                                  если свойство не указано или Неопределено, то
//                                  объект будет взят из реквизита формы "Объект".
//
Процедура ОбновитьЗависимостиДополнительныхРеквизитов(Форма, Объект = Неопределено) Экспорт
	
	Если НЕ Форма.Свойства_ИспользоватьСвойства
	 ИЛИ НЕ Форма.Свойства_ИспользоватьДопРеквизиты Тогда
		
		Возврат;
	КонецЕсли;
	
	Если Форма.Свойства_ОписаниеЗависимыхДополнительныхРеквизитов.Количество() = 0 Тогда
		Возврат;
	КонецЕсли;
	
	Если Объект = Неопределено Тогда
		ОписаниеОбъекта = Форма.Объект;
	Иначе
		ОписаниеОбъекта = Объект;
	КонецЕсли;
	
	Для Каждого ОписаниеЗависимогоРеквизита Из Форма.Свойства_ОписаниеЗависимыхДополнительныхРеквизитов Цикл
		Если ОписаниеЗависимогоРеквизита.ВыводитьВВидеГиперссылки Тогда
			ОбрабатываемыйЭлемент = СтрЗаменить(ОписаниеЗависимогоРеквизита.ИмяРеквизитаЗначение, "ДополнительныйРеквизитЗначение_", "Группа_");
		Иначе
			ОбрабатываемыйЭлемент = ОписаниеЗависимогоРеквизита.ИмяРеквизитаЗначение;
		КонецЕсли;
		
		Если ОписаниеЗависимогоРеквизита.УсловиеДоступности <> Неопределено Тогда
			Параметры = Новый Структура;
			Параметры.Вставить("ЗначенияПараметров", ОписаниеЗависимогоРеквизита.УсловиеДоступности.ЗначенияПараметров);
			Параметры.Вставить("Форма", Форма);
			Параметры.Вставить("ОписаниеОбъекта", ОписаниеОбъекта);
			Результат = Вычислить(ОписаниеЗависимогоРеквизита.УсловиеДоступности.КодУсловия);
			
			Элемент = Форма.Элементы[ОбрабатываемыйЭлемент];
			Если Элемент.Доступность <> Результат Тогда
				Элемент.Доступность = Результат;
			КонецЕсли;
		КонецЕсли;
		Если ОписаниеЗависимогоРеквизита.УсловиеВидимости <> Неопределено Тогда
			Параметры = Новый Структура;
			Параметры.Вставить("ЗначенияПараметров", ОписаниеЗависимогоРеквизита.УсловиеВидимости.ЗначенияПараметров);
			Параметры.Вставить("Форма", Форма);
			Параметры.Вставить("ОписаниеОбъекта", ОписаниеОбъекта);
			Результат = Вычислить(ОписаниеЗависимогоРеквизита.УсловиеВидимости.КодУсловия);
			
			Элемент = Форма.Элементы[ОбрабатываемыйЭлемент];
			Если Элемент.Видимость <> Результат Тогда
				Элемент.Видимость = Результат;
			КонецЕсли;
		КонецЕсли;
		Если ОписаниеЗависимогоРеквизита.УсловиеОбязательностиЗаполнения <> Неопределено Тогда
			Если Не ОписаниеЗависимогоРеквизита.ЗаполнятьОбязательно Тогда
				Продолжить;
			КонецЕсли;
			
			Параметры = Новый Структура;
			Параметры.Вставить("ЗначенияПараметров", ОписаниеЗависимогоРеквизита.УсловиеОбязательностиЗаполнения.ЗначенияПараметров);
			Параметры.Вставить("Форма", Форма);
			Параметры.Вставить("ОписаниеОбъекта", ОписаниеОбъекта);
			Результат = Вычислить(ОписаниеЗависимогоРеквизита.УсловиеОбязательностиЗаполнения.КодУсловия);
			
			Элемент = Форма.Элементы[ОбрабатываемыйЭлемент];
			Если Не ОписаниеЗависимогоРеквизита.ВыводитьВВидеГиперссылки
				И Элемент.АвтоОтметкаНезаполненного <> Результат Тогда
				Элемент.АвтоОтметкаНезаполненного = Результат;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ПослеЗагрузкиДополнительныхРеквизитов (БСП)

ОбновитьЭлементыДополнительныхРеквизитов (БСП)

ОбновитьДанныеЗависимыхПроизводственныхКалендарей (БСП)

ОбновитьДанныеЗависимыеОтПроизводственныхКалендарей (БСП)

ОбновитьКоманды (БСП)

ЗаполнитьНаборыСДополнительнымиРеквизитами (БСП)

Создание дополнительного реквизита в наборе

Групповое изменение реквизитов, вытащить дополнительный реквизит

ЭтоОбъектМетаданныхСДополнительнымиРеквизитами (БСП)

TurboConf 6 - расширение Конфигуратора 1С