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