Экземпляр бюджета / Форма подбора статей бюджетов / Модуль формы

файл

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	СтруктураПараметровБюджета = Новый Структура(БюджетированиеКлиентСервер.ИменаРеквизитовБюджета());
	СтруктураПараметровБюджета.Вставить("МассивСтатейБюджетов");
	СтруктураПараметровБюджета.Удалить("ВидБюджета");
	ЗаполнитьЗначенияСвойств(СтруктураПараметровБюджета, Параметры);
	
	ЗаполнитьОборотыПоСтатьямБюджетов();
	
	УстановитьВидимостьКолонок();
	
	УстановитьПараметрыВыбораСтатьиБюджета();
	
КонецПроцедуры

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

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура СтатьяБюджетовПриИзменении(Элемент)
	
	УстановитьОтборСтрокОборотовПоСтатьямБюджетов();
	
КонецПроцедуры

&НаКлиенте
Процедура ПериодПланированияПриИзменении(Элемент)
	
	УстановитьОтборСтрокОборотовПоСтатьямБюджетов();
	
КонецПроцедуры

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

#Область ОбработчикиСобытийЭлементовТаблицыФормыОборотыПоСтатьямБюджетов

&НаКлиенте
Процедура ОборотыПоСтатьямБюджетовВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	СтрокаТаблицы = ОборотыПоСтатьямБюджетов.НайтиПоИдентификатору(ВыбраннаяСтрока);
	Если СтрокаТаблицы.Пометка Тогда
		Возврат;
	КонецЕсли;
	
	КорректировкиПоСтатьямБюджетов = ВладелецФормы.КорректировкиПоСтатьямБюджетов; // - ДанныеФормыКоллекция -
	НоваяСтрока = КорректировкиПоСтатьямБюджетов.Добавить();
	ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТаблицы);
	НоваяСтрока.СуммаУменьшение = СтрокаТаблицы.Сумма;
	НоваяСтрока.СуммаВВалютеУменьшение = СтрокаТаблицы.СуммаВВалюте;
	НоваяСтрока.КоличествоУменьшение = СтрокаТаблицы.Количество;
	
	СтрокаТаблицы.Пометка = Истина;
	
КонецПроцедуры

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

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

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

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

&НаСервере
Процедура ЗаполнитьОборотыПоСтатьямБюджетов()
	
	Запрос = Новый Запрос;
	Для Каждого Параметр Из СтруктураПараметровБюджета Цикл
		Запрос.УстановитьПараметр(Параметр.Ключ, Параметр.Значение);
	КонецЦикла;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ОборотыБюджетовОбороты.СтатьяБюджетов КАК СтатьяБюджетов,
	|	ОборотыБюджетовОбороты.ПериодПланирования КАК ПериодПланирования,
	|	ОборотыБюджетовОбороты.Валюта КАК Валюта,
	|	ОборотыБюджетовОбороты.Аналитика1 КАК Аналитика1,
	|	ОборотыБюджетовОбороты.Аналитика2 КАК Аналитика2,
	|	ОборотыБюджетовОбороты.Аналитика3 КАК Аналитика3,
	|	ОборотыБюджетовОбороты.Аналитика4 КАК Аналитика4,
	|	ОборотыБюджетовОбороты.Аналитика5 КАК Аналитика5,
	|	ОборотыБюджетовОбороты.Аналитика6 КАК Аналитика6,
	|	ОборотыБюджетовОбороты.КоличествоОборот КАК Количество,
	|	ОборотыБюджетовОбороты.СуммаВВалютеОборот КАК СуммаВВалюте,
	|	ОборотыБюджетовОбороты.СуммаСценарияОборот КАК Сумма,
	|	(ОборотыБюджетовОбороты.КоличествоОборот <> 0) КАК УчитыватьПоКоличеству,
	|	(ОборотыБюджетовОбороты.СуммаВВалютеОборот <> ОборотыБюджетовОбороты.СуммаСценарияОборот) КАК УчитыватьПоВалюте,
	|	ВЫБОР
	|		КОГДА ОборотыБюджетовОбороты.Аналитика6 <> НЕОПРЕДЕЛЕНО
	|			ТОГДА 6
	|		КОГДА ОборотыБюджетовОбороты.Аналитика5 <> НЕОПРЕДЕЛЕНО
	|			ТОГДА 5
	|		КОГДА ОборотыБюджетовОбороты.Аналитика4 <> НЕОПРЕДЕЛЕНО
	|			ТОГДА 4
	|		КОГДА ОборотыБюджетовОбороты.Аналитика3 <> НЕОПРЕДЕЛЕНО
	|			ТОГДА 3
	|		КОГДА ОборотыБюджетовОбороты.Аналитика2 <> НЕОПРЕДЕЛЕНО
	|			ТОГДА 2
	|		КОГДА ОборотыБюджетовОбороты.Аналитика1 <> НЕОПРЕДЕЛЕНО
	|			ТОГДА 1
	|		ИНАЧЕ 0
	|	КОНЕЦ КАК КоличествоАналитик
	|ИЗ
	|	РегистрНакопления.ОборотыБюджетов.Обороты(
	|			,
	|			&Дата,
	|			,
	|			Организация = &Организация
	|				И Подразделение = &Подразделение
	|				И (ПериодПланирования МЕЖДУ &НачалоПериода И &ОкончаниеПериода)
	|				И Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыПланов.Утвержден)
	|				И Сценарий = &Сценарий
	|				И СтатьяБюджетов В (&МассивСтатейБюджетов)) КАК ОборотыБюджетовОбороты";
	
	ОборотыПоСтатьямБюджетов.Загрузить(Запрос.Выполнить().Выгрузить());
	
КонецПроцедуры

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

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

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