&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбъектНастройки = Параметры.ОбъектНастройки;
Если НЕ Параметры.Свойство("ОбъектНастройки", ОбъектНастройки) Тогда
ТекстСообщения = НСтр("ru='Непосредственное открытие этой формы не предусмотрено. Для открытия формы можно воспользоваться командой ""Настроить правила"" в форме настроек правил получения факта.'");
ВызватьИсключение ТекстСообщения;
ИначеЕсли ОбъектНастройки = Неопределено Тогда
ВызватьИсключение НСтр("ru = 'Не выбран объект настройки!'");
КонецЕсли;
ТипПравилСтатьяБюджета = Перечисления.ТипПравилаПолученияФактическихДанныхБюджетирования.ФактическиеДанные;
ТипПравилПоказательБюджета = Перечисления.ТипПравилаПолученияФактическихДанныхБюджетирования.ФактическиеДанные;
ПерваяЧастьКлюча = "";
Если ТипЗнч(Параметры.ОбъектНастройки) = Тип("СправочникСсылка.НастройкиХозяйственныхОпераций") Тогда
Элементы.ОбъектНастройки.Заголовок = НСтр("ru = 'Хоз.операция'");
Элементы.РасчетныеПоказатели.Видимость = Ложь;
Элементы.ЦелевыеПоказатели.Видимость = Ложь;
ПерваяЧастьКлюча = "1";
ИначеЕсли ТипЗнч(Параметры.ОбъектНастройки) = Тип("ПланВидовХарактеристикСсылка.СтатьиАктивовПассивов") Тогда
Элементы.ОбъектНастройки.Заголовок = НСтр("ru = 'Статья активов/пассивов'");
Элементы.СтатьиБюджетов.Видимость = Ложь;
ПерваяЧастьКлюча = "2";
ИначеЕсли ТипЗнч(Параметры.ОбъектНастройки) = РеглУчетКлиентСервер.ТипПланСчетов() Тогда
Элементы.ОбъектНастройки.Заголовок = НСтр("ru = 'Счет РСБУ'");
ПерваяЧастьКлюча = "3";
ИначеЕсли ТипЗнч(Параметры.ОбъектНастройки) = Тип("СправочникСсылка.СтатьиБюджетов") Тогда
Элементы.ОбъектНастройки.Заголовок = НСтр("ru = 'Статья бюджетов'");
Элементы.РасчетныеПоказатели.Видимость = Ложь;
Элементы.ЦелевыеПоказатели.Видимость = Ложь;
ПерваяЧастьКлюча = "5";
ИначеЕсли ТипЗнч(Параметры.ОбъектНастройки) = Тип("СправочникСсылка.ПоказателиБюджетов") Тогда
Элементы.ОбъектНастройки.Заголовок = НСтр("ru = 'Показатель бюджетов'");
Элементы.СтатьиБюджетов.Видимость = Ложь;
Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОбъектНастройки, "ТипПоказателя") = Перечисления.ТипПоказателяБюджетов.Расчетный Тогда
Элементы.ЦелевыеПоказатели.Видимость = Ложь;
ПерваяЧастьКлюча = "6";
Иначе
Элементы.РасчетныеПоказатели.Видимость = Ложь;
ПерваяЧастьКлюча = "7";
КонецЕсли;
КонецЕсли;
Количество = 0;
Для Каждого Элемент Из Элементы.СтраницыФормы.ПодчиненныеЭлементы Цикл
Если Элемент.Видимость Тогда
Количество = Количество + 1;
КонецЕсли;
КонецЦикла;
Если Количество = 1 Тогда
Элементы.СтраницыФормы.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет;
КонецЕсли;
Если Элементы.СтатьиБюджетов.Видимость Тогда
Если ТипЗнч(Параметры.ОбъектНастройки) = Тип("СправочникСсылка.СтатьиБюджетов") Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ПравилаПолученияФактаПоСтатьямБюджетов,
"СтатьяБюджетов",
Параметры.ОбъектНастройки,
ВидСравненияКомпоновкиДанных.Равно,
Истина);
Иначе
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ПравилаПолученияФактаПоСтатьямБюджетов,
"ИсточникДанных",
Параметры.ОбъектНастройки,
ВидСравненияКомпоновкиДанных.Равно,
Истина);
КонецЕсли;
КонецЕсли;
Если Элементы.РасчетныеПоказатели.Видимость
ИЛИ Элементы.ЦелевыеПоказатели.Видимость Тогда
Если ТипЗнч(Параметры.ОбъектНастройки) = Тип("СправочникСсылка.ПоказателиБюджетов") Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ПравилаПолученияФактаПоПоказателямБюджетов,
"ПоказательБюджетов",
Параметры.ОбъектНастройки,
ВидСравненияКомпоновкиДанных.Равно,
Истина);
Иначе
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ПравилаПолученияФактаПоПоказателямБюджетов,
"ИсточникДанных",
Параметры.ОбъектНастройки,
ВидСравненияКомпоновкиДанных.Равно,
Истина);
КонецЕсли;
КонецЕсли;
Если Элементы.СтатьиБюджетов.Видимость Тогда
Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтатьиБюджетов;
ИначеЕсли Элементы.РасчетныеПоказатели.Видимость Тогда
Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.РасчетныеПоказатели;
ИначеЕсли Элементы.ЦелевыеПоказатели.Видимость Тогда
Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.ЦелевыеПоказатели;
КонецЕсли;
Если ТипЗнч(Параметры.ОбъектНастройки) = Тип("СправочникСсылка.СтатьиБюджетов") Тогда
Элементы.ПравилаПолученияФактаПоСтатьямБюджетовСтатьяБюджетов.Видимость = Ложь;
ИначеЕсли ТипЗнч(Параметры.ОбъектНастройки) = Тип("СправочникСсылка.ПоказателиБюджетов") Тогда
Элементы.ПравилаПолученияФактаПоРасчетнымПоказателямПоказательБюджетов.Видимость = Ложь;
Элементы.ПравилаПолученияФактаПоЦелевымПоказателямПоказательБюджетов.Видимость = Ложь;
Иначе
Элементы.ПравилаПолученияФактаПоСтатьямБюджетовИсточникДанных.Видимость = Ложь;
Элементы.ПравилаПолученияФактаПоЦелевымПоказателямИсточникДанных.Видимость = Ложь;
Элементы.ПравилаПолученияФактаПоПоказателямБюджетовИсточникДанных.Видимость = Ложь;
КонецЕсли;
УправлениеФормой();
Если Элементы.СтраницыФормы.ПодчиненныеЭлементы.Количество() > 1 Тогда
УстановитьЗаголовкиЗакладок();
КонецЕсли;
КлючСохраненияПоложенияОкна = "НастройкаПравилПолученияФактаБюджетирования.НастройкаПравил_" + ПерваяЧастьКлюча + "_" + Количество;
КонецПроцедуры
&НаСервере
Процедура УправлениеФормой()
СписокТиповПравила = Новый СписокЗначений;
СписокТиповПравила.Добавить(Перечисления.ТипПравилаПолученияФактическихДанныхБюджетирования.ИсполнениеБюджетаИФактическиеДанные);
Если Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтатьиБюджетов Тогда
Если Не ЗначениеЗаполнено(ТипПравилСтатьяБюджета) Тогда
ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(ПравилаПолученияФактаПоСтатьямБюджетов, "ТипПравила");
Иначе
СписокТиповПравила.Добавить(ТипПравилСтатьяБюджета);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ПравилаПолученияФактаПоСтатьямБюджетов,
"ТипПравила",
СписокТиповПравила,
ВидСравненияКомпоновкиДанных.ВСписке,,
Истина);
КонецЕсли;
ИначеЕсли Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.ЦелевыеПоказатели Тогда
Если Не ЗначениеЗаполнено(ТипПравилПоказательБюджета) Тогда
ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(ПравилаПолученияФактаПоПоказателямБюджетов, "ТипПравила");
Иначе
СписокТиповПравила.Добавить(ТипПравилПоказательБюджета);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ПравилаПолученияФактаПоПоказателямБюджетов,
"ТипПравила",
СписокТиповПравила,
ВидСравненияКомпоновкиДанных.ВСписке,,
Истина);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ПравилаПолученияФактаПоПоказателямБюджетов,
"ЭтоРасчетный",
Ложь,
ВидСравненияКомпоновкиДанных.Равно,,
Истина);
КонецЕсли;
ИначеЕсли Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.РасчетныеПоказатели Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ПравилаПолученияФактаПоПоказателямБюджетов,
"ТипПравила",,
ВидСравненияКомпоновкиДанных.Равно,,
Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(ПравилаПолученияФактаПоПоказателямБюджетов,
"ЭтоРасчетный",
Истина,
ВидСравненияКомпоновкиДанных.Равно,,
Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СтраницыФормыПриСменеСтраницы(Элемент, ТекущаяСтраница)
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаЗаписиНового(НовыйОбъект, Источник, СтандартнаяОбработка)
Если Элементы.СтраницыФормы.ПодчиненныеЭлементы.Количество() > 1 Тогда
УстановитьЗаголовкиЗакладок();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьЗаголовкиЗакладок()
Запрос = Новый ПостроительЗапроса;
Запрос.Текст =
"ВЫБРАТЬ
| NULL КАК СтатьяФактическиеДанные,
| NULL КАК СтатьяИсполнениеБюджета,
| ВЫБОР
| КОГДА ПравилаПолученияФактаПоПоказателямБюджетов.ТипПравила = &ФактическиеДанные
| ТОГДА ПравилаПолученияФактаПоПоказателямБюджетов.Ссылка
| ИНАЧЕ NULL
| КОНЕЦ КАК РасчетныйФактическиеДанные,
| NULL КАК ЦелевойФактическиеДанные,
| NULL КАК ЦелевойИсполнениеБюджета,
| ПравилаПолученияФактаПоПоказателямБюджетов.ИсточникДанных,
| NULL КАК СтатьяБюджетов,
| ПравилаПолученияФактаПоПоказателямБюджетов.ПоказательБюджетов
|ПОМЕСТИТЬ ТаблицаПравил
|ИЗ
| Справочник.ПравилаПолученияФактаПоПоказателямБюджетов КАК ПравилаПолученияФактаПоПоказателямБюджетов
|ГДЕ
| ПравилаПолученияФактаПоПоказателямБюджетов.ПоказательБюджетов.ТипПоказателя = &Расчетный
|{ГДЕ
| ПравилаПолученияФактаПоПоказателямБюджетов.ПоказательБюджетов,
| ПравилаПолученияФактаПоПоказателямБюджетов.ИсточникДанных}
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| NULL,
| NULL,
| NULL,
| ВЫБОР
| КОГДА ПравилаПолученияФактаПоПоказателямБюджетов.ТипПравила = &ФактическиеДанные
| ТОГДА ПравилаПолученияФактаПоПоказателямБюджетов.Ссылка
| ИНАЧЕ NULL
| КОНЕЦ,
| ВЫБОР
| КОГДА ПравилаПолученияФактаПоПоказателямБюджетов.ТипПравила <> &ФактическиеДанные
| ТОГДА ПравилаПолученияФактаПоПоказателямБюджетов.Ссылка
| ИНАЧЕ NULL
| КОНЕЦ,
| ПравилаПолученияФактаПоПоказателямБюджетов.ИсточникДанных,
| NULL,
| ПравилаПолученияФактаПоПоказателямБюджетов.ПоказательБюджетов
|ИЗ
| Справочник.ПравилаПолученияФактаПоПоказателямБюджетов КАК ПравилаПолученияФактаПоПоказателямБюджетов
|ГДЕ
| НЕ ПравилаПолученияФактаПоПоказателямБюджетов.ПоказательБюджетов.ТипПоказателя = &Расчетный
|{ГДЕ
| ПравилаПолученияФактаПоПоказателямБюджетов.ПоказательБюджетов,
| ПравилаПолученияФактаПоПоказателямБюджетов.ИсточникДанных}
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ПравилаПолученияФактаПоСтатьямБюджетов.ТипПравила = &ФактическиеДанные
| ТОГДА ПравилаПолученияФактаПоСтатьямБюджетов.Ссылка
| ИНАЧЕ NULL
| КОНЕЦ,
| ВЫБОР
| КОГДА ПравилаПолученияФактаПоСтатьямБюджетов.ТипПравила <> &ФактическиеДанные
| ТОГДА ПравилаПолученияФактаПоСтатьямБюджетов.Ссылка
| ИНАЧЕ NULL
| КОНЕЦ,
| NULL,
| NULL,
| NULL,
| ПравилаПолученияФактаПоСтатьямБюджетов.ИсточникДанных,
| ПравилаПолученияФактаПоСтатьямБюджетов.СтатьяБюджетов,
| NULL
|ИЗ
| Справочник.ПравилаПолученияФактаПоСтатьямБюджетов КАК ПравилаПолученияФактаПоСтатьямБюджетов
|{ГДЕ
| ПравилаПолученияФактаПоСтатьямБюджетов.СтатьяБюджетов,
| ПравилаПолученияФактаПоСтатьямБюджетов.ИсточникДанных}
|;
|
|
|ВЫБРАТЬ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТаблицаПравил.СтатьяФактическиеДанные) КАК СтатьяФактическиеДанные,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТаблицаПравил.СтатьяИсполнениеБюджета) КАК СтатьяИсполнениеБюджета,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТаблицаПравил.РасчетныйФактическиеДанные) КАК РасчетныйФактическиеДанные,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТаблицаПравил.ЦелевойФактическиеДанные) КАК ЦелевойФактическиеДанные,
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТаблицаПравил.ЦелевойИсполнениеБюджета) КАК ЦелевойИсполнениеБюджета
|ИЗ
| ТаблицаПравил КАК ТаблицаПравил
|{ГДЕ
| ТаблицаПравил.ИсточникДанных,
| ТаблицаПравил.СтатьяБюджетов,
| ТаблицаПравил.ПоказательБюджетов}";
Запрос.Параметры.Вставить("ФактическиеДанные", Перечисления.ТипПравилаПолученияФактическихДанныхБюджетирования.ФактическиеДанные);
Запрос.Параметры.Вставить("Расчетный", Перечисления.ТипПоказателяБюджетов.Расчетный);
Если ТипЗнч(ОбъектНастройки) = Тип("СправочникСсылка.СтатьиБюджетов") Тогда
Отбор = Запрос.Отбор.Добавить("СтатьяБюджетов");
ИначеЕсли ТипЗнч(ОбъектНастройки) = Тип("СправочникСсылка.ПоказателиБюджетов") Тогда
Отбор = Запрос.Отбор.Добавить("ПоказательБюджетов");
Иначе
Отбор = Запрос.Отбор.Добавить("ИсточникДанных");
КонецЕсли;
Отбор.ВидСравнения = ВидСравнения.Равно;
Отбор.Значение = ОбъектНастройки;
Отбор.Использование = Истина;
Запрос.Выполнить();
Выборка = Запрос.Результат.Выбрать();
Выборка.Следующий();
ЗаголовокЗакладки = НСтр("ru = 'Статьи бюджетов (%1 факт., %2 исп.)'");
Элементы.СтатьиБюджетов.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ЗаголовокЗакладки, Выборка.СтатьяФактическиеДанные, Выборка.СтатьяИсполнениеБюджета);
ЗаголовокЗакладки = НСтр("ru = 'Расчетные показатели (%1)'");
ПараметрыПредметаИсчисления = НСтр("ru = 'правило,правила,правил'");
КоличествоПравил = СтроковыеФункцииКлиентСервер.ЧислоЦифрамиПредметИсчисленияПрописью(Выборка.РасчетныйФактическиеДанные, ПараметрыПредметаИсчисления);
Элементы.РасчетныеПоказатели.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ЗаголовокЗакладки, КоличествоПравил);
ЗаголовокЗакладки = НСтр("ru = 'Целевые показатели (%1 факт., %2 исп.)'");
Элементы.ЦелевыеПоказатели.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
ЗаголовокЗакладки, Выборка.ЦелевойФактическиеДанные, Выборка.ЦелевойИсполнениеБюджета);
КонецПроцедуры
&НаКлиенте
Функция ТекущиеДанныеТаблицыФормы(ИмяТаблицы)
ЭлементФормыТаблица = Элементы[ИмяТаблицы];
Возврат ЭлементФормыТаблица.ТекущиеДанные;
КонецФункции
&НаКлиенте
Процедура ОткрытьФормуНовогоПравила(ИмяТаблицы, Отказ, Копирование, Расчетный = Неопределено)
Отказ = Истина;
ПараметрыФормы = Новый Структура;
Если Копирование Тогда
СтрокаТекущиеДанные = ТекущиеДанныеТаблицыФормы(ИмяТаблицы);
ПараметрыФормы.Вставить("ЗначениеКопирования", СтрокаТекущиеДанные.Ссылка);
Иначе
Если ТипЗнч(ОбъектНастройки) = Тип("СправочникСсылка.СтатьиБюджетов") Тогда
ЗначенияЗаполнения = Новый Структура("СтатьяБюджетов", ОбъектНастройки);
ИначеЕсли ТипЗнч(ОбъектНастройки) = Тип("СправочникСсылка.ПоказателиБюджетов") Тогда
ЗначенияЗаполнения = Новый Структура("ПоказательБюджетов", ОбъектНастройки);
ИначеЕсли ТипЗнч(ОбъектНастройки) = Тип("СправочникСсылка.НастройкиХозяйственныхОпераций") Тогда
ЗначенияЗаполнения = Новый Структура("РазделИсточникаДанных, ИсточникДанных",
ПредопределенноеЗначение("Перечисление.РазделыИсточниковДанныхБюджетирования.ОперативныйУчет"), ОбъектНастройки);
ИначеЕсли ТипЗнч(ОбъектНастройки) = Тип("ПланВидовХарактеристикСсылка.СтатьиАктивовПассивов") Тогда
ЗначенияЗаполнения = Новый Структура("РазделИсточникаДанных, ИсточникДанных",
ПредопределенноеЗначение("Перечисление.РазделыИсточниковДанныхБюджетирования.ОперативныйУчет"), ОбъектНастройки);
ИначеЕсли ТипЗнч(ОбъектНастройки) = РеглУчетКлиентСервер.ТипПланСчетов() Тогда
ЗначенияЗаполнения = Новый Структура("РазделИсточникаДанных, ИсточникДанных",
ПредопределенноеЗначение("Перечисление.РазделыИсточниковДанныхБюджетирования.РегламентированныйУчет"), ОбъектНастройки);
КонецЕсли;
Если ИмяТаблицы = "ПравилаПолученияФактаПоСтатьямБюджетов" Тогда
ЗначенияЗаполнения.Вставить("ТипПравила", ТипПравилСтатьяБюджета);
Иначе
ЗначенияЗаполнения.Вставить("ТипПравила", ТипПравилПоказательБюджета);
КонецЕсли;
ПараметрыФормы.Вставить("ЗначенияЗаполнения", ЗначенияЗаполнения);
Если Расчетный <> Неопределено Тогда
Если Расчетный Тогда
ПараметрыФормы.Вставить("ТипПоказателя", ПредопределенноеЗначение("Перечисление.ТипПоказателяБюджетов.Расчетный"));
Иначе
ПараметрыФормы.Вставить("ТипПоказателя", ПредопределенноеЗначение("Перечисление.ТипПоказателяБюджетов.Целевой"));
КонецЕсли;
КонецЕсли;
КонецЕсли;
ИмяНовойФормы = ?(ИмяТаблицы = "ПравилаПолученияФактаПоСтатьямБюджетов", ИмяТаблицы,
"ПравилаПолученияФактаПоПоказателямБюджетов");
ОткрытьФорму("Справочник." + ИмяНовойФормы + ".Форма.ФормаОбъекта", ПараметрыФормы,,,,,,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ПравилаПолученияФактаПоСтатьямБюджетовПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
ОткрытьФормуНовогоПравила("ПравилаПолученияФактаПоСтатьямБюджетов", Отказ, Копирование);
КонецПроцедуры
&НаКлиенте
Процедура ПравилаПолученияФактаПоРасчетнымПоказателямПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
ОткрытьФормуНовогоПравила("ПравилаПолученияФактаПоРасчетнымПоказателям", Отказ, Копирование, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПравилаПолученияФактаПоЦелевымПоказателямПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
ОткрытьФормуНовогоПравила("ПравилаПолученияФактаПоЦелевымПоказателям", Отказ, Копирование, Ложь);
КонецПроцедуры
&НаКлиенте
Процедура ТипПравилСтатьяБюджетаПриИзменении(Элемент)
УправлениеФормой();
КонецПроцедуры
&НаКлиенте
Процедура ТипПравилПоказательБюджетаПриИзменении(Элемент)
УправлениеФормой();
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПравилаПолученияФактаПоСтатьямБюджетовПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
ВывестиОтборНаЯзыкеПользователя(Строки, "ПравилаПолученияФактаПоСтатьямБюджетов");
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПравилаПолученияФактаПоРасчетнымПоказателямПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
ВывестиОтборНаЯзыкеПользователя(Строки, "ПравилаПолученияФактаПоПоказателямБюджетов");
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПравилаПолученияФактаПоЦелевымПоказателямПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
ВывестиОтборНаЯзыкеПользователя(Строки, "ПравилаПолученияФактаПоПоказателямБюджетов")
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ВывестиОтборНаЯзыкеПользователя(Строки, ИсточникДанных)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Правила.Ссылка КАК Ссылка,
| Правила.КомпоновщикНастроек КАК КомпоновщикНастроек
|ИЗ
| &ИсточникПравил КАК Правила
|ГДЕ
| Правила.Ссылка В(&Правила)";
Запрос.УстановитьПараметр("Правила", Строки.ПолучитьКлючи());
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ИсточникПравил", "Справочник." + ИсточникДанных);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
НастройкаПоПравилу = Новый Соответствие();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ХранилищеНастроек = ВыборкаДетальныеЗаписи.КомпоновщикНастроек;
НастройкаПоПравилу.Вставить(ВыборкаДетальныеЗаписи.Ссылка, ХранилищеНастроек.Получить());
КонецЦикла;
ШаблонСообщения = НСтр("ru='Ошибка при чтении настроек по правилу %1'");
ПолучениеФактаПоКорреспонденциямРегистров = ИсточникДанных = "ПравилаПолученияФактаПоСтатьямБюджетов"
И ПолучитьФункциональнуюОпцию("НастройкаПравилПолученияФактаПоКорреспондирующимРегистрам");
Для Каждого Строка Из Строки Цикл
Если ПолучениеФактаПоКорреспонденциямРегистров И Строка.Значение.Данные.РазделИсточникаДанных
= Перечисления.РазделыИсточниковДанныхБюджетирования.ОперативныйУчет Тогда
ТаблицаКорреспонденций = ИсточникиДанныхСервер.ТаблицаКорреспонденцийРегистров(Строка.Значение.Данные.ИсточникДанных);
Иначе
ТаблицаКорреспонденций = Неопределено;
КонецЕсли;
СКДПоПравилу = ИсточникиДанныхСервер.СхемаКомпоновкиДанныхПравила(Строка.Ключ, , , , ТаблицаКорреспонденций);
Если СКДПоПравилу <> Неопределено Тогда
Попытка
КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКДПоПравилу));
ДополнительныйОтбор = НастройкаПоправилу.Получить(Строка.Ключ);
Если ДополнительныйОтбор <> Неопределено Тогда
КомпоновщикНастроек.ЗагрузитьНастройки(ДополнительныйОтбор);
Строка.Значение.Данные.ПредставлениеОтбора = Строка(КомпоновщикНастроек.Настройки.Отбор);
КонецЕсли;
Исключение
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, СокрЛП(
Строка.Ключ));
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, Строка.Ключ);
КонецПопытки;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
# Область ОбработчикиКомандФормы
&НаКлиенте
Процедура РезультатРаботыПравил(Команда)
Перем ЗаголовокОтчета;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыФормы.Вставить("ВидимостьКомандВариантовОтчетов", Ложь);
Если Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтатьиБюджетов Тогда
ЗаголовокОтчета = "СтатьяБюджетов = " + ОбъектНастройки;
ПараметрыФормы.Вставить("КлючВарианта", "РезультатРаботыПравилПоСтатьеБюджетов");
ПараметрыФормы.Вставить("Отбор", Новый Структура("СтатьяБюджетов", ОбъектНастройки));
Иначе
ЗаголовокОтчета = "ПоказательБюджетов = " + ОбъектНастройки;
ПараметрыФормы.Вставить("КлючВарианта", "РезультатРаботыПравилПоПоказателюБюджетов");
ПараметрыФормы.Вставить("Отбор", Новый Структура("ПоказательБюджетов", ОбъектНастройки));
КонецЕсли;
ОткрытьФорму("Отчет.РезультатРаботыПравилПолученияФактическихДанных.Форма", ПараметрыФормы, , ЗаголовокОтчета);
КонецПроцедуры
#КонецОбласти