АЛКОФорма выбора значения из таблицы / Модуль

файл

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

&НаКлиенте
Процедура Выбрать(Команда)
	
	Если Элементы.ТаблицаЗначений.ТекущиеДанные = Неопределено Тогда
		
		Возврат;
		
	КонецЕсли;
	
	ВозвращаемоеЗначение = Новый Структура;
	ВозвращаемоеЗначение.Вставить("Код",               Элементы.ТаблицаЗначений.ТекущиеДанные.Код);
	ВозвращаемоеЗначение.Вставить("Название",          Элементы.ТаблицаЗначений.ТекущиеДанные.Название);
	ВозвращаемоеЗначение.Вставить("БазоваяДоходность", Элементы.ТаблицаЗначений.ТекущиеДанные.БазоваяДоходность);
	ВозвращаемоеЗначение.Вставить("Кратко",            Элементы.ТаблицаЗначений.ТекущиеДанные.Кратко);
	
	Закрыть(ВозвращаемоеЗначение);
	
КонецПроцедуры

&НаКлиенте
Процедура ТаблицаЗначенийВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Если Элементы.ТаблицаЗначений.ТекущиеДанные = Неопределено Тогда
		
		Возврат;
		
	КонецЕсли;
	
	ВозвращаемоеЗначение = Новый Структура;
	ВозвращаемоеЗначение.Вставить("Код",               Элементы.ТаблицаЗначений.ТекущиеДанные.Код);
	ВозвращаемоеЗначение.Вставить("Название",          Элементы.ТаблицаЗначений.ТекущиеДанные.Название);
	ВозвращаемоеЗначение.Вставить("БазоваяДоходность", Элементы.ТаблицаЗначений.ТекущиеДанные.БазоваяДоходность);
	ВозвращаемоеЗначение.Вставить("Кратко",            Элементы.ТаблицаЗначений.ТекущиеДанные.Кратко);
	
	Закрыть(ВозвращаемоеЗначение);
	
КонецПроцедуры

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест".
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;
	
	Заголовок = Параметры.Заголовок;
	
	Если Параметры.ПараметрыДляЗаполненияТаблицыЗначений <> Неопределено Тогда
		
		ПараметрыДляЗаполненияТаблицыЗначений = Параметры.ПараметрыДляЗаполненияТаблицыЗначений;
		
		Если ПараметрыДляЗаполненияТаблицыЗначений.ЗаполнятьТаблицуЗначенийИзМакета Тогда
		
			ЗначениеДляДобавленияСтрокиВТаблицу = ПараметрыДляЗаполненияТаблицыЗначений.ЗначениеДляДобавленияСтрокиВТаблицу;
			ИмяМакета = ПараметрыДляЗаполненияТаблицыЗначений.ИмяМакета;
			ИмяОтчета = ПараметрыДляЗаполненияТаблицыЗначений.ИмяОтчета;
			
			Если ИмяОтчета = "РегламентированныйОтчетЕдиныйНалогНаВмененныйДоход" Тогда
				
				Если ПараметрыДляЗаполненияТаблицыЗначений.ДатаКонцаПериодаОтчета >= '2014-01-01' Тогда	
					ИмяСекцииВидаУслуг = "ВидыУслуг2014";
				ИначеЕсли ПараметрыДляЗаполненияТаблицыЗначений.ДатаКонцаПериодаОтчета >= '2013-01-01' Тогда	
					ИмяСекцииВидаУслуг = "ВидыУслуг2013";
				Иначе
					ИмяСекцииВидаУслуг = "ВидыУслуг";
				КонецЕсли;
				
			КонецЕсли;
			
			МакетСоставаПоказателей = Отчеты[ИмяОтчета].ПолучитьМакет(ИмяМакета).ПолучитьОбласть(ИмяСекцииВидаУслуг);
						
			Для Каждого Область Из МакетСоставаПоказателей.Области Цикл
				Если Область.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Строки Тогда
					ВерхОбласти = Область.Верх;
					НизОбласти = Область.Низ;
					Для НомСтр = ВерхОбласти По НизОбласти Цикл
						КодПоказателя = СокрП(МакетСоставаПоказателей.Область(НомСтр, 1).Текст);
						Если КодПоказателя <> "###" Тогда
							Если (МакетСоставаПоказателей.Область(НомСтр, 3).Текст) = ЗначениеДляДобавленияСтрокиВТаблицу Тогда
								Показатель = ТаблицаЗначений.Добавить();
								Показатель.Код = КодПоказателя;
								Показатель.Название = СокрП(МакетСоставаПоказателей.Область(НомСтр, 2).Текст);
							КонецЕсли;
						КонецЕсли;
					КонецЦикла;
				КонецЕсли;
			КонецЦикла;
			
		КонецЕсли;
		
	Иначе
		
		Если ЭтоАдресВременногоХранилища(Параметры.ТаблицаЗначений) Тогда
			ВременнаяТаблица = ПолучитьИзВременногоХранилища(Параметры.ТаблицаЗначений);
			Если ТипЗнч(ВременнаяТаблица) = Тип("ТаблицаЗначений") Тогда
				ТаблицаЗначений.Загрузить(ВременнаяТаблица);
			КонецЕсли;
		Иначе
			КопироватьДанныеФормы(Параметры.ТаблицаЗначений, ТаблицаЗначений);
		КонецЕсли;
	КонецЕсли;
	
	ИсходнаяСтрока = ТаблицаЗначений.НайтиСтроки(Параметры.СтруктураДляПоиска);
	
	Если ИсходнаяСтрока.Количество() > 0 Тогда
		Элементы.ТаблицаЗначений.ТекущаяСтрока = ИсходнаяСтрока[0].ПолучитьИдентификатор();
	КонецЕсли;
	
	Элементы.ТаблицаЗначений.Шапка = НЕ Параметры.ОтключитьВидимостьШапкиТаблицы;
	
	Если ЗначениеЗаполнено(Параметры.НаимКолонкиКод) Тогда
		
		Элементы.ТаблицаЗначенийКод.Заголовок = Параметры.НаимКолонкиКод;
		
	КонецЕсли;
	
	Если ЗначениеЗаполнено(Параметры.НаимКолонкиНазвание) Тогда
		
		Элементы.ТаблицаЗначенийНазвание.Заголовок = Параметры.НаимКолонкиНазвание;
		
	КонецЕсли;
	
	Если ЗначениеЗаполнено(Параметры.НаимКолонкиКратко) Тогда
		
		Элементы.ТаблицаЗначенийКратко.Заголовок = Параметры.НаимКолонкиКратко;
		
	КонецЕсли;
	
	Элементы.ТаблицаЗначенийКод.Видимость      = НЕ Параметры.ОтключитьВидимостьКолонкиКод;
	Элементы.ТаблицаЗначенийНазвание.Видимость = НЕ Параметры.ОтключитьВидимостьКолонкиНазвание;
	Элементы.ТаблицаЗначенийКратко.Видимость   = Параметры.ВключитьВидимостьКолонкиКратко;
	Элементы.НадписьРосстат.Видимость          = Параметры.ВключитьВидимостьНадписиРосстат;
	
	Если Параметры.ОтключитьВидимостьКолонкиКод = Истина
		И Параметры.ОтключитьВидимостьКолонкиНазвание = Ложь
		И Параметры.ВключитьВидимостьКолонкиКратко = Ложь Тогда
		
		Элементы.ТаблицаЗначенийНазвание.АвтоМаксимальнаяШирина = Ложь;
		Элементы.ТаблицаЗначенийНазвание.Ширина = 200;
		Элементы.ТаблицаЗначенийНазвание.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Лево;
		
	ИначеЕсли Параметры.ОтключитьВидимостьКолонкиКод = Ложь
		И Параметры.ОтключитьВидимостьКолонкиНазвание = Истина
		И Параметры.ВключитьВидимостьКолонкиКратко = Ложь Тогда
		
		Элементы.ТаблицаЗначенийКод.АвтоМаксимальнаяШирина = Ложь;
		Элементы.ТаблицаЗначенийКод.Ширина = 200;
		Элементы.ТаблицаЗначенийКод.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Лево;
		
	КонецЕсли;
	
	РегламентированнаяОтчетностьАЛКО.ПодготовкаИнтерфейсаФормыАЛКО(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ТекстПредупреждения = НСтр("ru='Данная форма вспомогательная, предназначена для выбора значений
										|из списков в формах регламентированных отчетов!'");
	
	// Ищем управляемую форму отчета, откуда открыли и настраиваем интерфейс по настройкам отчета.
	УправляемаяФормаВладелец = Неопределено;
	РегламентированнаяОтчетностьАЛКОКлиент.ИнициализироватьUIПодчиненнойФормыОтчетаАЛКО(
												ЭтаФорма, УправляемаяФормаВладелец);
	Если УправляемаяФормаВладелец = Неопределено Тогда
		
		Отказ = Истина;		
		ПоказатьПредупреждение(, ТекстПредупреждения, , НСтр("ru='Форма выбора значений из таблицы.'"));
		
		Возврат;
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ИнициализироватьUIФормы(НастройкаUI) Экспорт
	
	// Серверный вызов ради скорости исполнения, 
	// на клиенте намного медленнее из-за постоянного обновления формы.
	ИнициализироватьUIФормыНаСервере(НастройкаUI)

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

&НаСервере
Процедура ИнициализироватьUIФормыНаСервере(НастройкаUI) Экспорт

	РегламентированнаяОтчетностьАЛКОКлиентСервер.ИнициализироватьUIФормы(ЭтаФорма, НастройкаUI);

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

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

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