#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СтруктураПараметровБюджета = Новый Структура(БюджетированиеКлиентСервер.ИменаРеквизитовБюджета());
СтруктураПараметровБюджета.Вставить("МассивСтатейБюджетов");
СтруктураПараметровБюджета.Удалить("ВидБюджета");
ЗаполнитьЗначенияСвойств(СтруктураПараметровБюджета, Параметры);
ЗаполнитьОборотыПоСтатьямБюджетов();
УстановитьВидимостьКолонок();
УстановитьПараметрыВыбораСтатьиБюджета();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура СтатьяБюджетовПриИзменении(Элемент)
УстановитьОтборСтрокОборотовПоСтатьямБюджетов();
КонецПроцедуры
&НаКлиенте
Процедура ПериодПланированияПриИзменении(Элемент)
УстановитьОтборСтрокОборотовПоСтатьямБюджетов();
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыОборотыПоСтатьямБюджетов
&НаКлиенте
Процедура ОборотыПоСтатьямБюджетовВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтрокаТаблицы = ОборотыПоСтатьямБюджетов.НайтиПоИдентификатору(ВыбраннаяСтрока);
Если СтрокаТаблицы.Пометка Тогда
Возврат;
КонецЕсли;
КорректировкиПоСтатьямБюджетов = ВладелецФормы.КорректировкиПоСтатьямБюджетов;
НоваяСтрока = КорректировкиПоСтатьямБюджетов.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТаблицы);
НоваяСтрока.СуммаУменьшение = СтрокаТаблицы.Сумма;
НоваяСтрока.СуммаВВалютеУменьшение = СтрокаТаблицы.СуммаВВалюте;
НоваяСтрока.КоличествоУменьшение = СтрокаТаблицы.Количество;
СтрокаТаблицы.Пометка = Истина;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура УстановитьОтборСтрокОборотовПоСтатьямБюджетов()
ОтборСтрок = Новый Структура;
Если ЗначениеЗаполнено(СтатьяБюджетов) Тогда
ОтборСтрок.Вставить("СтатьяБюджетов", СтатьяБюджетов);
КонецЕсли;
Если ЗначениеЗаполнено(ПериодПланирования) Тогда
ОтборСтрок.Вставить("ПериодПланирования", ПериодПланирования);
КонецЕсли;
Если ОтборСтрок.Количество() = 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;
КонецЕсли;
Элементы["ОборотыПоСтатьямБюджетовАналитика"+КоличествоАналитик].Видимость = ИспользуетсяКоличествоАналитик;
КонецЦикла;
КонецПроцедуры
#КонецОбласти