Номера ГТД / Разблокирование реквизитов / Модуль формы

файл

#Область ОбработчикиСобытийФормы

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

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура РазрешитьРедактирование(Команда)
	
	// Для всех включенных флажков сформируем массив соответствующих им реквизитов справочника.
	Результат = Новый Массив;
	
	Для Каждого Реквизит Из ИменаРеквизитовФормы Цикл
		Если ЭтотОбъект[Реквизит.Значение] Тогда
			Результат.Добавить(Реквизит.Значение);
		КонецЕсли;
	КонецЦикла;
	
	Закрыть(Результат);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтотОбъект, Команда);
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаКлиентеНаСервереБезКонтекста
Функция ИменаРеквизитовПрослеживаемости(Форма)
	
	Элементы = Форма.Элементы;
	
	ИменаРеквизитов = Новый Массив;
	ИменаРеквизитов.Добавить(Элементы.ТипНомераГТД.Имя);
	ИменаРеквизитов.Добавить(Элементы.Номенклатура.Имя);
	ИменаРеквизитов.Добавить(Элементы.НаименованиеТовара.Имя);
	ИменаРеквизитов.Добавить(Элементы.ЕдиницаИзмерения.Имя);
	ИменаРеквизитов.Добавить(Элементы.СуммаПоРНПТ.Имя);
	ИменаРеквизитов.Добавить(Элементы.ПрослеживаемыеКомплектующие.Имя);
	
	Возврат ИменаРеквизитов;
	
КонецФункции

#КонецОбласти

Связанные материалы