Операция (регламентированный учет) / Редактирование таблицы значений / Модуль формы

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

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

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

#Область ОбработчикиСобытийЭлементовТаблицаДанных

&НаКлиенте
Процедура Подключаемый_ТаблицаДанныхРеквизитНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

	ТекущееЗначение = Элементы.ТаблицаДанных.ТекущиеДанные[СтрЗаменить(Элемент.Имя, "ТаблицаДанных", "")];
	Элемент.ВыбиратьТип = НЕ ЗначениеЗаполнено(ТекущееЗначение);

КонецПроцедуры

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

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

&НаКлиенте
Процедура Сохранить(Команда)
	Закрыть(ТаблицаДанных);
КонецПроцедуры

&НаКлиенте
Процедура Отмена(Команда)
	Закрыть();
КонецПроцедуры

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

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

&НаСервере
Процедура УстановитьВидКоманднойПанелиТаблицы()
	
	ЭлементыКоманднойПанели = Элементы["ТаблицаДанныхКоманднаяПанель"].ПодчиненныеЭлементы;
	
	ЭлементыКоманднойПанели["ТаблицаДанныхДобавить"].Отображение = ОтображениеКнопки.КартинкаИТекст;
	
	КнопкаУдалить = ЭлементыКоманднойПанели.Найти("ТаблицаДанныхУдалить");
	Если Не КнопкаУдалить = Неопределено Тогда
		КнопкаУдалить.ТолькоВоВсехДействиях = Ложь;
		КнопкаУдалить.Отображение = ОтображениеКнопки.Картинка;
	КонецЕсли;
	
	КнопкаСкопировать = ЭлементыКоманднойПанели.Найти("ТаблицаДанныхСкопировать");
	Если Не КнопкаСкопировать = Неопределено Тогда
		КнопкаСкопировать.ТолькоВоВсехДействиях = Ложь;
		КнопкаСкопировать.Отображение = ОтображениеКнопки.Картинка;
	КонецЕсли;
	
КонецПроцедуры

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

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