Заполнение реквизитов формы из ТЧ

3 Максим1C 6 1
//обход элементов формы и сравнение с реквизитами табличной части ПараметрыСегментации	
Для Каждого Стр Из Объект.ПараметрыСегментации Цикл
		
		Для Каждого Элемент Из Элементы Цикл
			
			Если ТипЗнч(Элемент) = Тип("ПолеФормы") Тогда
				
				Если Элемент.Имя = Стр.ЗаголовокПоля Тогда
					
					УстановитьЗначениеЭлемента(Стр.ЗаголовокПоля,Стр.ЗначениеПоля);					
					Элемент.ТолькоПросмотр = Истина;
					ТекстДействиеЭлемента = ДействиеЭлемента(Стр.ЗаголовокПоля);
					Выполнить(ТекстДействиеЭлемента);
				КонецЕсли;
				
			ИначеЕсли ТипЗнч(Элемент) = Тип("ТаблицаФормы") Тогда
				
				//Получаем наименование табличной части из макета
				Позиция = Найти(Стр.ЗаголовокПоля,".");
				Если Позиция <> 0 Тогда
					
					ТЧИмя = Лев(Стр.ЗаголовокПоля, Позиция-1);
					Если Элемент.Имя = ТЧИмя Тогда
						
						ЗаголовокПоля = СтрЗаменить(Стр.ЗаголовокПоля,Лев(Стр.ЗаголовокПоля,Позиция),"");
						УстановитьЗначениеЭлементаТабличнойЧасти(ТЧИмя,ЗаголовокПоля,Стр.ЗначениеПоля);
						
					КонецЕсли;
					
				КонецЕсли;
				
			КонецЕсли;	
			
		КонецЦикла;
		
	КонецЦикла;


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


&НаСервере
Процедура УстановитьЗначениеЭлементаТабличнойЧасти(ТЧИмя,ИмяЭлемента,ЗначениеЭлемента)

	ПутьКДаннымТЧ = ВернутьПутьКДаннымЭлемента(ТЧИмя);

	Если Лев(ПутьКДаннымТЧ,7) = "Объект." Тогда
		
		ПутьКДаннымТЧ = СтрЗаменить(ПутьКДаннымТЧ,"Объект.","");
		Если Объект[ПутьКДаннымТЧ].Количество() = 0 Тогда
			
			СтрокаТЧ = Объект[ПутьКДаннымТЧ].Добавить();
			СтрокаТЧ[ИмяЭлемента] = ЗначениеЭлемента;
			
		Иначе
			
			СтрокаТЧ = Объект[ПутьКДаннымТЧ].Получить(0);
			СтрокаТЧ[ИмяЭлемента] = ЗначениеЭлемента;
			
		КонецЕсли;
		
	Иначе
		
		Если ЭтаФорма[ПутьКДаннымТЧ].Количество() = 0 Тогда
			
			СтрокаТЧ = ЭтаФорма[ПутьКДаннымТЧ].Добавить();
			СтрокаТЧ[ИмяЭлемента] = ЗначениеЭлемента;
			
		Иначе
			
			СтрокаТЧ = ЭтаФорма[ПутьКДаннымТЧ].Получить(0);
			СтрокаТЧ[ИмяЭлемента] = ЗначениеЭлемента;
			
		КонецЕсли;
		
	КонецЕсли;

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

&НаСервере
Функция ВернутьПутьКДаннымЭлемента(ИмяЭлемента)

	Возврат Элементы[ИмяЭлемента].ПутьКДанным;

КонецФункции 
{36} Ожидается идентификатор
Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз

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

Получает значение реквизита формы

пересчет реквизита табличной части обычной формы

Динамическое добавление реквизита на форму из общего модуля

Проверка реквизита, элемента формы на существование

заполнение табличного документа

Модератору