Регистры налогового учета / Модуль менеджера

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

Функция ПолучитьПараметрыИсполненияОтчета() Экспорт
	
	ПараметрыИсполнения = Новый Структура;
	ПараметрыИсполнения.Вставить("ИспользоватьПередКомпоновкойМакета", Истина);
	ПараметрыИсполнения.Вставить("ИспользоватьПослеКомпоновкиМакета", Истина);
	ПараметрыИсполнения.Вставить("ИспользоватьПослеВыводаРезультата", Истина);
	ПараметрыИсполнения.Вставить("ИспользоватьДанныеРасшифровки", Истина);
	ПараметрыИсполнения.Вставить("ИспользоватьПриВыводеЗаголовка", Истина);
	ПараметрыИсполнения.Вставить("ИспользоватьПриВыводеПодвала", Ложь);
	ПараметрыИсполнения.Вставить("ИспользоватьВнешниеНаборыДанных", Истина);
	
	Возврат ПараметрыИсполнения;
	
КонецФункции

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

Процедура ПриВыводеЗаголовка(ПараметрыОтчета, КомпоновщикНастроек, Результат) Экспорт
	
	Макет = ПолучитьОбщийМакет("ОбщиеОбластиСтандартногоОтчета");
	ОбластьЗаголовок        = Макет.ПолучитьОбласть("ОбластьЗаголовок");
	ОбластьОписаниеНастроек = Макет.ПолучитьОбласть("ОписаниеНастроек");
	ОбластьОрганизация      = Макет.ПолучитьОбласть("Организация");
	
	// Организация
	Если ЗначениеЗаполнено(ПараметрыОтчета.Организация) Тогда
		ТекстОрганизация = БухгалтерскиеОтчетыВызовСервера.ПолучитьТекстОрганизация(ПараметрыОтчета.Организация, ПараметрыОтчета.ВключатьОбособленныеПодразделения);
		ОбластьОрганизация.Параметры.НазваниеОрганизации = ТекстОрганизация;
		Результат.Вывести(ОбластьОрганизация);
	КонецЕсли;
	
	ЭлементыЗаголовка = Новый Массив;
	
	ПредставлениеПериода = ПараметрыОтчета.ПредставлениеПериода;
	СправкиРасчеты.ДополнитьПериодОтчетаПримечанием(ПредставлениеПериода, ПараметрыОтчета);
	ОсновнойЗаголовок = СправкиРасчетыКлиентСервер.ТекстЗаголовка(НСтр("ru = 'Регистр налогового учета'"), ПредставлениеПериода);
	ЭлементыЗаголовка.Добавить(ОсновнойЗаголовок);
	
	ЭлементыПодзаголовка = Новый Массив;
	ЭлементыПодзаголовка.Добавить(ПараметрыОтчета.НазваниеРегистра);
	Если Не ПараметрыОтчета.ЭтоПредопределенныйВариант Тогда
		ЭлементыПодзаголовка.Добавить(ПараметрыОтчета.ИмяНастроекОтчета);
	КонецЕсли;
	ЭлементыЗаголовка.Добавить(СтрСоединить(ЭлементыПодзаголовка, ": "));
	
	ОбластьЗаголовок.Параметры.ЗаголовокОтчета = СтрСоединить(ЭлементыЗаголовка, Символы.ПС);
		
	Результат.Вывести(ОбластьЗаголовок);
	
	// Отбор
	Если ПараметрыОтчета.Свойство("ВыводитьОтбор") И ПараметрыОтчета.ВыводитьОтбор Тогда
		
		ТекстОтбор = Строка(КомпоновщикНастроек.Настройки.Отбор);
		
		Если Не ПустаяСтрока(ТекстОтбор) Тогда
			ОбластьОписаниеНастроек.Параметры.ИмяНастроекОтчета      = НСтр("ru = 'Отбор:'");
			ОбластьОписаниеНастроек.Параметры.ОписаниеНастроекОтчета = ТекстОтбор;
			Результат.Вывести(ОбластьОписаниеНастроек);
		КонецЕсли;
		
		// Сортировка
		ТекстСортировка = "";
		Для Каждого СтрокаПорядок Из КомпоновщикНастроек.Настройки.Порядок.Элементы Цикл
			Если СтрокаПорядок.Использование Тогда
				ТекстСортировка = ТекстСортировка + БухгалтерскиеОтчетыКлиентСервер.ПолучитьСвойствоПоля(КомпоновщикНастроек.Настройки.ДоступныеПоляВыбора, СтрокаПорядок.Поле);
				ТекстСортировка = ТекстСортировка + " " + Строка(СтрокаПорядок.ТипУпорядочивания) + ", ";
			КонецЕсли;
		КонецЦикла;
		ТекстСортировка = Лев(ТекстСортировка, СтрДлина(ТекстСортировка) - 2);
		
		Если Не ПустаяСтрока(ТекстСортировка) Тогда
			ОбластьОписаниеНастроек.Параметры.ИмяНастроекОтчета      = НСтр("ru = 'Сортировка:'");
			ОбластьОписаниеНастроек.Параметры.ОписаниеНастроекОтчета = ТекстСортировка;
			Результат.Вывести(ОбластьОписаниеНастроек);
		КонецЕсли;
	КонецЕсли;
	Результат.Область("R1:R" + Результат.ВысотаТаблицы).Имя = "Заголовок";

	// Единица измерения
	Если ПараметрыОтчета.Свойство("ВыводитьЕдиницуИзмерения")
		И ПараметрыОтчета.ВыводитьЕдиницуИзмерения Тогда
		ОбластьОписаниеЕдиницыИзмерения = Макет.ПолучитьОбласть("ОписаниеЕдиницыИзмерения");
		Результат.Вывести(ОбластьОписаниеЕдиницыИзмерения);
	КонецЕсли;
	
КонецПроцедуры

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

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

		Если РегистрыСДобавлениемВариантаНО.Найти(ПараметрыОтчета.Регистр) <> Неопределено Тогда
			Порядок = Субконто.Количество()+1;
			
			Субконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ВариантыНалогообложенияПрибыли);
			БухгалтерскиеОтчетыКлиентСервер.УстановитьПараметр(КомпоновщикНастроек, "Субконто", Субконто);
		КонецЕсли;
		
		// Заменим в запросе специальные параметры на обращения к полям с номерами субконто,
		// зависимым от переданного списка субконто.
		ПоляЗамены = Новый Соответствие;
		ПоляЗамены.Вставить("&ПолеЗаменыСубконто", СтрШаблон("Субконто%1", Порядок));
		ПоляЗамены.Вставить("&ПолеЗаменыСубконто2", СтрШаблон("ХозрасчетныйОбороты.Субконто%1", Порядок));
		ПоляЗамены.Вставить("&ПолеЗаменыСубконто3", СтрШаблон("НачОст.Субконто%1", Порядок));
		ПоляЗамены.Вставить("&ПолеЗаменыСубконто4", СтрШаблон("КонОст.Субконто%1", Порядок));
		
		Для Каждого ПолеЗамены Из ПоляЗамены Цикл
			Схема.НаборыДанных.ОсновнойНаборДанных.Элементы.Обороты.Запрос = СтрЗаменить(Схема.НаборыДанных.ОсновнойНаборДанных.Элементы.Обороты.Запрос,
				ПолеЗамены.Ключ, ПолеЗамены.Значение);
		КонецЦикла;
			
		Для Каждого ПолеЗамены Из ПоляЗамены Цикл
			Схема.НаборыДанных.ОсновнойНаборДанных.Элементы.ОстаткиБезПериода.Запрос = СтрЗаменить(Схема.НаборыДанных.ОсновнойНаборДанных.Элементы.ОстаткиБезПериода.Запрос,
				ПолеЗамены.Ключ, ПолеЗамены.Значение);
		КонецЦикла;
		
		// Найдем связь основного набора с таблицей Приоритет1 по ОбъектуУчета и обновим выражение источника.
		СубконтоНоменклатура = Субконто.НайтиПоЗначению(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
		Если СубконтоНоменклатура <> Неопределено Тогда
			ВыражениеИсточник = СтрШаблон("Субконто%1", Субконто.Индекс(СубконтоНоменклатура)+1);
		Иначе
			ВыражениеИсточник = "НЕОПРЕДЕЛЕНО";
		КонецЕсли;
		
		Для Каждого ЭлементСвязи Из Схема.СвязиНаборовДанных Цикл
			Если ЭлементСвязи.НаборДанныхИсточник = "ОсновнойНаборДанных" 
				И ЭлементСвязи.НаборДанныхПриемник = "Приоритет1_НастройкиНалогообложенияПрибыли" 
				И ЭлементСвязи.ВыражениеПриемник = "Приоритет1_ОбъектУчета" Тогда
				ЭлементСвязи.ВыражениеИсточник = ВыражениеИсточник; 
			КонецЕсли;
		КонецЦикла;

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

	// Дополнительные данные
	БухгалтерскиеОтчетыВызовСервера.ДобавитьДополнительныеПоля(ПараметрыОтчета, КомпоновщикНастроек);

	// Валюта
	Если ПараметрыОтчета.Свойство("ПоказательВалютнаяСумма") И  ПараметрыОтчета.ПоказательВалютнаяСумма Тогда
		ПолеГруппировки = Структура.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
		ПолеГруппировки.Использование  = Истина;
		ПолеГруппировки.Поле           = Новый ПолеКомпоновкиДанных("Валюта");		
		Структура.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
		Структура.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));	
		
		ПолеОформления = УсловноеОформлениеАвтоотступа.Поля.Элементы.Добавить();
		ПолеОформления.Поле = ПолеГруппировки.Поле;
	КонецЕсли;
	
	БухгалтерскиеОтчетыВызовСервера.ДобавитьОтборПоОрганизации(ПараметрыОтчета, КомпоновщикНастроек);
	Если ПараметрыОтчета.Свойство("ПоказательКонтроль") Тогда
		БухгалтерскиеОтчетыВызовСервера.ДобавитьОтборДляПоказателяКонтроль(ПараметрыОтчета, КомпоновщикНастроек);
	КонецЕсли;
	
	Если УсловноеОформлениеАвтоотступа.Поля.Элементы.Количество() = 0 Тогда
		УсловноеОформлениеАвтоотступа.Использование = Ложь;
	КонецЕсли;
		
	БухгалтерскиеОтчетыКлиентСервер.УстановитьПараметр(КомпоновщикНастроек, "СтатьиЗатратТипыЗатрат", 
		ТипыСубконтоПроизводственныхСчетов(
			БухгалтерскиеОтчетыКлиентСервер.НайтиГруппировку(КомпоновщикНастроек.Настройки.Структура[0].Строки, "Субконто3")<>Неопределено)); 
				
КонецПроцедуры

Процедура ПослеКомпоновкиМакета(ПараметрыОтчета, МакетКомпоновки) Экспорт
		
	Для Каждого ЭлементТелаМакета Из МакетКомпоновки.Тело Цикл 
		Если ТипЗнч(ЭлементТелаМакета) = Тип("ТаблицаМакетаКомпоновкиДанных") Тогда
			ПараметрыОтчета.Вставить("ВысотаШапки", МакетКомпоновки.Макеты[ЭлементТелаМакета.МакетШапки].Макет.Количество()); 
			Прервать;	
		КонецЕсли;
	КонецЦикла;
		
	Для Каждого ГруппировкаТелаКомпоновки Из МакетКомпоновки.Тело Цикл
		Если ТипЗнч(ГруппировкаТелаКомпоновки) = Тип("ТаблицаМакетаКомпоновкиДанных") Тогда
			ПараметрыОтчета.Вставить("ШиринаШапки", МакетКомпоновки.Макеты[ГруппировкаТелаКомпоновки.МакетШапки].Макет[0].Ячейки.Количество()); 
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

Процедура ПослеВыводаРезультата(ПараметрыОтчета, Результат) Экспорт
	
	БухгалтерскиеОтчетыВызовСервера.ОбработкаРезультатаОтчета(ПараметрыОтчета.ИдентификаторОтчета, Результат);
	ЗаголовокНиз = 1;
	Если Результат.Области.Найти("Заголовок") = Неопределено Тогда
		Результат.ФиксацияСверху = ПараметрыОтчета.ВысотаШапки;
	Иначе
		ЗаголовокНиз = Результат.Области.Заголовок.Низ;
		Результат.ФиксацияСверху = ЗаголовокНиз + ПараметрыОтчета.ВысотаШапки + ?(ПараметрыОтчета.ВыводитьЕдиницуИзмерения, 2, 0);
	КонецЕсли;
	
	Результат.ФиксацияСлева = 0;	
	
	// Подменяем некоторые названия в заголовке
	Для СтрокаРезультата = ЗаголовокНиз По ЗаголовокНиз + ПараметрыОтчета.ВысотаШапки Цикл
		Для КолонкаРезультата = 1 По ПараметрыОтчета.ШиринаШапки Цикл
			ОбластьЗаголовка = Результат.Область("R" + СтрокаРезультата + "C" + КолонкаРезультата);
			Текст = ОбластьЗаголовка.Текст;
			Если СтрНайти(Текст,"Кор. Субконто") > 0 Тогда
				ОбластьЗаголовка.Текст = СтрЗаменить(Текст,"Кор. Субконто","Основание ");
			ИначеЕсли СтрНайти(Текст,"Субконто") > 0 И ПараметрыОтчета.Регистр = "ДоходыОтРеализацииТоваровИУслуг" 
				И ПараметрыОтчета.Свойство("РежимРасшифровки") И ПараметрыОтчета.РежимРасшифровки Тогда
				ОбластьЗаголовка.Текст = СтрЗаменить(Текст,"Субконто1", "Номенклатурные группы");
			ИначеЕсли СтрНайти(Текст,"Субконто") > 0 Тогда
				ОбластьЗаголовка.Текст = СтрЗаменить(Текст,"Субконто","Объект учета ");
			ИначеЕсли СтрНайти(Текст,"Регистратор") > 0 Тогда
				ОбластьЗаголовка.Текст = "Документ";
			ИначеЕсли СтрНайти(Текст,"Счет") > 0 И ПараметрыОтчета.Регистр = "ПолуфабрикатыИПродукция" Тогда
				ОбластьЗаголовка.Текст = "Вид выпуска";
			КонецЕсли;	
		КонецЦикла;
	КонецЦикла;
	
	Если СправкиРасчеты.ТребуетсяДополнитьПериодОтчетаПримечанием(ПараметрыОтчета) Тогда
		
		СправкиРасчеты.ДобавитьПримечание(Результат, ПараметрыОтчета.ИнформацияНалоговыйПериод);
		
	КонецЕсли;
	
КонецПроцедуры

Функция ПолучитьНаборПоказателей() Экспорт
	
	НаборПоказателей = Новый Массив;
	НаборПоказателей.Добавить("БУ");
	НаборПоказателей.Добавить("НУ");
	НаборПоказателей.Добавить("ЕНВД");
	НаборПоказателей.Добавить("КР"); // КосвенныеРасходы
	Возврат НаборПоказателей;
	
КонецФункции

Функция ПолучитьПараметрыВариантовОтчета() Экспорт
	
	Параметры = Новый Соответствие;
	
	ИменаПолей = "ПутьПодсистемыВарианта, Наименование";
	
	//1
	ПутьПодсистемы = "Подсистема.УчетНалогиОтчетность82.Подсистема.РегистрыФормированияОтчетныхДанных";
	Параметры.Вставить("ВнереализационныеРасходы",								Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Внереализационные расходы'")));
	Параметры.Вставить("ДоходыОтРеализацииТоваровИУслуг",						Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Доходы от реализации товаров, работ, услуг'")));
	Параметры.Вставить("ДоходыОтРеализацииПрочегоИмущества",					Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Доходы от реализации прочего имущества, прав, ценных бумаг'")));
	Параметры.Вставить("ВнереализационныеДоходы",								Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Внереализационные доходы'")));
	Параметры.Вставить("КосвенныеРасходыНаПроизводствоИРеализацию",				Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Косвенные расходы на производство и реализацию'")));
	Параметры.Вставить("ПрямыеРасходыОтносящиесяКРеализованнымТоварамУслугам",	Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Прямые расходы, относящиеся к реализованным товарам, услугам'")));
	Параметры.Вставить("ПрямыеТранспортныеРасходы",								Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Транспортные расходы'")));
	Параметры.Вставить("РасходыОтРеализацииПрочегоИмущества",					Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Расходы, относящиеся к реализации прочего имущества, прав, ценных бумаг'")));
	Параметры.Вставить("ПрочиеКосвенныеРасходы",								Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Прочие косвенные расходы'")));
	
	//2
	ПутьПодсистемы = "Подсистема.УчетНалогиОтчетность82.Подсистема.РегистрыПромежуточныхРасчетов";
	Параметры.Вставить("ОплатаТруда",						Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Расходы на оплату труда'")));
	Параметры.Вставить("Амортизация",						Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Расходы по амортизации'")));
	Параметры.Вставить("МатериальныеРасходы",				Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Материальные расходы'")));
	Параметры.Вставить("РасходыНаДобровольноеСтрахование",	Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Расходы на добровольное страхование'")));
	Параметры.Вставить("ПрочиеРасходы",						Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Прочие расходы'")));
	
	//3
	ПутьПодсистемы = "Подсистема.УчетНалогиОтчетность82.Подсистема.РегистрыУчетаСостоянияЕдиницыНалоговогоУчета";
	Параметры.Вставить("ОсновныеСредства",						Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Стоимость основных средств'")));
	Параметры.Вставить("НематериальныеАктивы",					Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Стоимость нематериальных активов и НИОКР'")));
	Параметры.Вставить("Материалы",								Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Стоимость материалов'")));
	Параметры.Вставить("СпецоснасткаИСпецодеждаВЭксплуатации",	Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Специальная оснастка и специальная одежда в эксплуатации'")));
	Параметры.Вставить("ПолуфабрикатыИПродукция",				Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Стоимость продукции и полуфабрикатов'")));
	Параметры.Вставить("ТоварыНаСкладе",						Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Стоимость товаров на складе'")));
	Параметры.Вставить("ТоварыОтгруженные",						Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Стоимость отгруженных товаров'")));
	Параметры.Вставить("НезавершенноеПроизводство",				Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Стоимость незавершенного производства'")));
	Параметры.Вставить("РасчетыСПоставщикамиИПокупателями",		Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Дебиторская и кредиторская задолженность'")));
	Параметры.Вставить("РасчетыСБюджетом",						Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Задолженность перед бюджетом'")));
	Параметры.Вставить("РасходыБудущихПериодов",				Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Расходы будущих периодов'")));
	Параметры.Вставить("ДоходыБудущихПериодов",					Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Доходы будущих периодов'")));
	
	//4
	ПутьПодсистемы =  ПутьПодсистемы;
	Параметры.Вставить("ОперацииПриобретенияИмуществаРаботУслуг",	Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Операции приобретения товаров, прочего имущества, услуг, работ, прав, ценных бумаг'")));
	Параметры.Вставить("ОперацииВыбытияИмуществаРаботУслуг",		Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Операции выбытия товаров, работ, услуг'")));
	Параметры.Вставить("ОперацииВыбытияПрочегоИмущества",			Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Операции выбытия прочего имущества, прав, ценных бумаг'")));
	Параметры.Вставить("ДенежныеСредстваНаличные",					Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Денежные средства в кассе'")));
	Параметры.Вставить("ДенежныеСредстваБезналичные",				Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Денежные средства на банковских счетах'")));
	Параметры.Вставить("ДоговораДобровольногоСтрахованияРаботников",Новый Структура(ИменаПолей, ПутьПодсистемы, НСтр("ru='Расчеты по договорам страхования'")));
	
	Возврат Параметры;
	
КонецФункции

// Процедура используется подсистемой варианты отчетов
//
Процедура НастройкиОтчета(Настройки) Экспорт
	
	Схема = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
	Для Каждого Вариант Из Схема.ВариантыНастроек Цикл
		 Настройки.ОписаниеВариантов.Вставить(Вариант.Имя,Вариант.Представление);
	КонецЦикла;
	
КонецПроцедуры

#Область ПрограммныйИнтерфейс

// СтандартныеПодсистемы.ВариантыОтчетов

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

	Вариант = Новый Структура;
	Вариант.Вставить("Имя",           "ВнереализационныеРасходы");
	Вариант.Вставить("Представление", НСтр("ru = 'Внереализационные расходы'"));
	Результат.Добавить(Вариант);
	
	Вариант = Новый Структура;
	Вариант.Вставить("Имя",           "МатериальныеРасходы");
	Вариант.Вставить("Представление", НСтр("ru = 'Материальные расходы'"));
	Результат.Добавить(Вариант);
	
	Вариант = Новый Структура;
	Вариант.Вставить("Имя",           "Амортизация");
	Вариант.Вставить("Представление", НСтр("ru = 'Расходы по амортизации'"));
	Результат.Добавить(Вариант);
	
	Вариант = Новый Структура;
	Вариант.Вставить("Имя",           "ОплатаТруда");
	Вариант.Вставить("Представление", НСтр("ru = 'Расходы на оплату труда'"));
	Результат.Добавить(Вариант);
	
	Вариант = Новый Структура;
	Вариант.Вставить("Имя",           "РасходыНаДобровольноеСтрахование");
	Вариант.Вставить("Представление", НСтр("ru = 'Расходы на добровольное страхование'"));
	Результат.Добавить(Вариант);
	
	Вариант = Новый Структура;
	Вариант.Вставить("Имя",           "ПрочиеРасходы");
	Вариант.Вставить("Представление", НСтр("ru = 'Прочие расходы'"));
	Результат.Добавить(Вариант);
	
	Вариант = Новый Структура;
	Вариант.Вставить("Имя",           "ОсновныеСредства");
	Вариант.Вставить("Представление", НСтр("ru = 'Стоимость основных средств'"));
	Результат.Добавить(Вариант);
	
	Вариант = Новый Структура;
	Вариант.Вставить("Имя",           "НематериальныеАктивы");
	Вариант.Вставить("Представление", НСтр("ru = 'Стоимость нематериальных активов и НИОКР'"));
	Результат.Добавить(Вариант);
	
	Вариант = Новый Структура;
	Вариант.Вставить("Имя",           "Материалы");
	Вариант.Вставить("Представление", НСтр("ru = 'Стоимость материалов'"));
	Результат.Добавить(Вариант);
	
	Вариант = Новый Структура;
	Вариант.Вставить("Имя",           "СпецоснасткаИСпецодеждаВЭксплуатации");
	Вариант.Вставить("Представление", НСтр("ru = 'Специальная оснастка и специальная одежда в эксплуатации'"));
	Результат.Добавить(Вариант);
	
	Вариант = Новый Структура;
	Вариант.Вставить("Имя",           "ПолуфабрикатыИПродукция");
	Вариант.Вставить("Представление", НСтр("ru = 'Стоимость продукции и полуфабрикатов'"));
	Результат.Добавить(Вариант);
	
	Вариант = Новый Структура;
	Вариант.Вставить("Имя",           "ТоварыНаСкладе");
	Вариант.Вставить("Представление", НСтр("ru = 'Стоимость товаров на складе'"));
	Результат.Добавить(Вариант);
	
	Вариант = Новый Структура;
	Вариант.Вставить("Имя",           "ТоварыОтгруженные");
	Вариант.Вставить("Представление", НСтр("ru = 'Стоимость отгруженных товаров'"));
	Результат.Добавить(Вариант);
	
	Вариант = Новый Структура;
	Вариант.Вставить("Имя",           "НезавершенноеПроизводство");
	Вариант.Вставить("Представление", НСтр("ru = 'Стоимость незавершенного производства'"));
	Результат.Добавить(Вариант);
	
	Вариант = Новый Структура;
	Вариант.Вставить("Имя",           "РасчетыСПоставщикамиИПокупателями");
	Вариант.Вставить("Представление", НСтр("ru = 'Дебиторская и кредиторская задолженность'"));
	Результат.Добавить(Вариант);
	
	Вариант = Новый Структура;
	Вариант.Вставить("Имя",           "РасчетыСБюджетом");
	Вариант.Вставить("Представление", НСтр("ru = 'Задолженность перед бюджетом'"));
	Результат.Добавить(Вариант);

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

// СтандартныеПодсистемы.ВариантыОтчетов

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

// Конструктор коллекции параметров, влияющих на выбор используемой схемы компоновки данных.
//
// Возвращаемое значение:
//   Структура:
//    * Организация - СправочникСсылка.Организации
//    * НачалоПериода - Дата
//    * КонецПериода  - Дата
//
Функция НовыеПараметрыВыбораСхемыКомпоновкиДанных() Экспорт
	
	ПараметрыВыбораСхемы = Новый Структура;
	
	ПараметрыВыбораСхемы.Вставить("Организация", Справочники.Организации.ПустаяСсылка());
	ПараметрыВыбораСхемы.Вставить("НачалоПериода", '00010101');
	ПараметрыВыбораСхемы.Вставить("КонецПериода", '00010101');
	
	Возврат ПараметрыВыбораСхемы;
	
КонецФункции

// Возвращает универсальный набор настроек налогообложения
//
// Параметры:
//  ПараметрыОтчета - Структура - содержат параметры исполнения отчета.
//  МакетКомпоновки - МакетКомпоновкиДанных - сформированный макет компоновки данных.
//
// Возвращаемое значение:
//  Структура - структура с ключом. Содержит поля:
//  *НастройкиНалогообложенияПрибыли - ТаблицаЗначений - данные настройки раздельного налогообложения прибыли. Колонки: 
//   ** Подразделение           - СправочникСсылка.СтруктураПредприятия.
//   ** ОбъектУчета             - СправочникСсылка.Номенклатура, ПланВидовХарактеристикСсылка.СтатьиДоходов.
//   ** НаправлениеДеятельности - СправочникСсылка.НаправленияДеятельности.
//   ** ВариантНалогообложенияПрибыли - СправочникСсылка.ВариантыНалогообложенияПрибыли.
//
Функция ПолучитьВнешниеНаборыДанных(ПараметрыОтчета, МакетКомпоновки) Экспорт
	
	СтруктураВнешнихНаборовДанных = Новый Структура();
	
	Результат = НастройкиНалогообложенияПрибыли(ПараметрыОтчета);
	
	СтруктураВнешнихНаборовДанных.Вставить("Приоритет1_НастройкиНалогообложенияПрибыли", Результат[0].Выгрузить());
	СтруктураВнешнихНаборовДанных.Вставить("Приоритет2_НастройкиНалогообложенияПрибыли", Результат[1].Выгрузить());
	СтруктураВнешнихНаборовДанных.Вставить("Приоритет3_НастройкиНалогообложенияПрибыли", Результат[2].Выгрузить());
	
	Возврат СтруктураВнешнихНаборовДанных;
	
КонецФункции

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

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

Функция СчетаКосвенныхРасходов()
	
	СчетаКосвенныхРасходов = Новый Массив;
	СчетаКосвенныхРасходов.Добавить(ПланыСчетов.Хозрасчетный.Продажи_РасходыНаПродажуНеЕНВД);
	СчетаКосвенныхРасходов.Добавить(ПланыСчетов.Хозрасчетный.Продажи_УправленческиеРасходыНеЕНВД);
	
	Возврат СчетаКосвенныхРасходов;
	
КонецФункции

Функция ТипыСубконтоПроизводственныхСчетов(Используется3Субконто = Ложь)
	
	СтатьиЗатратТипыЗатрат = Новый Массив;
	СтатьиЗатратТипыЗатрат.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиЗатрат);
	СтатьиЗатратТипыЗатрат.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ТипыЗатрат);
	Если Используется3Субконто Тогда
		 СтатьиЗатратТипыЗатрат.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ПустаяСсылка());
	КонецЕсли;
	
	Возврат СтатьиЗатратТипыЗатрат;

КонецФункции

Функция ПолучитьРегистрыСДобавлениемВариантаНО()
	
	СписокРегистров = Новый Массив;
	СписокРегистров.Добавить("ДоходыОтРеализацииТоваровИУслуг");
	СписокРегистров.Добавить("ДоходыОтРеализацииПрочегоИмущества");
	СписокРегистров.Добавить("ВнереализационныеДоходы");
	СписокРегистров.Добавить("ПрямыеРасходыОтносящиесяКРеализованнымТоварамУслугам");
	СписокРегистров.Добавить("РасходыОтРеализацииПрочегоИмущества");
	СписокРегистров.Добавить("ПрочиеКосвенныеРасходы");
	СписокРегистров.Добавить("ВнереализационныеРасходы");
	СписокРегистров.Добавить("ОперацииВыбытияПрочегоИмущества");
	
	Возврат СписокРегистров;
	
КонецФункции

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

		ТекстЗапроса = РаздельныйУчетПоНалогуНаПрибыль.ТекстЗапроса_НастройкиНалогообложенияПрибыли(ПараметрыПолученияНалогообложенияПрибыли);
	Иначе
		ТекстЗапроса =
		"ВЫБРАТЬ
		|	NULL КАК ВариантНалогообложенияПрибыли,
		|	NULL КАК Организация,
		|	NULL КАК Подразделение,
		|	NULL КАК НаправлениеДеятельности,
		|	NULL КАК ОбъектУчета
		|ПОМЕСТИТЬ РаздельныйУчет_НастройкиНалогообложенияПрибыли";
	КонецЕсли;
	ТекстыЗапросов.Добавить(ТекстЗапроса); 
	
	ТекстЗапроса = СтрСоединить(ТекстыЗапросов, ОбщегоНазначения.РазделительПакетаЗапросов());
	
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	Запрос.Текст = ТекстЗапроса;
	Запрос.УстановитьПараметр("Период", КонецДня(ПараметрыОтчета.КонецПериода));
	Запрос.УстановитьПараметр("Организация", ПараметрыОтчета.Организация);
	Запрос.Выполнить();

	ТекстЗапроса =
	"ВЫБРАТЬ
	|	Настройки.ВариантНалогообложенияПрибыли КАК ВариантНалогообложенияПрибыли,
	|	Настройки.Организация КАК Организация,
	|	Настройки.Подразделение КАК Подразделение,
	|	Настройки.НаправлениеДеятельности КАК НаправлениеДеятельности,
	|	Настройки.ОбъектУчета КАК ОбъектУчета
	|ИЗ
	|	РаздельныйУчет_НастройкиНалогообложенияПрибыли КАК Настройки
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	МАКСИМУМ(Настройки.ВариантНалогообложенияПрибыли) КАК ВариантНалогообложенияПрибыли,
	|	Настройки.Организация КАК Организация,
	|	Настройки.НаправлениеДеятельности КАК НаправлениеДеятельности
	|ИЗ
	|	РаздельныйУчет_НастройкиНалогообложенияПрибыли КАК Настройки
	|ГДЕ
	|	Настройки.ОбъектУчета = НЕОПРЕДЕЛЕНО
	|	И Настройки.НаправлениеДеятельности <> ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка)
	|
	|СГРУППИРОВАТЬ ПО
	|	Настройки.Организация,
	|	Настройки.НаправлениеДеятельности
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	МАКСИМУМ(Настройки.ВариантНалогообложенияПрибыли) КАК ВариантНалогообложенияПрибыли,
	|	Настройки.Организация КАК Организация,
	|	Настройки.Подразделение КАК Подразделение
	|ИЗ
	|	РаздельныйУчет_НастройкиНалогообложенияПрибыли КАК Настройки
	|ГДЕ
	|	Настройки.ОбъектУчета = НЕОПРЕДЕЛЕНО
	|	И Настройки.Подразделение <> ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)
	|	И Настройки.НаправлениеДеятельности = ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка)
	|
	|СГРУППИРОВАТЬ ПО
	|	Настройки.Организация,
	|	Настройки.Подразделение";

	Запрос.Текст = ТекстЗапроса;
	Запрос.УстановитьПараметр("Период", КонецДня(ПараметрыОтчета.КонецПериода));
	Запрос.УстановитьПараметр("Организация", ПараметрыОтчета.Организация);
	Запрос.Выполнить();
	
	РезультатВыполнения = Запрос.ВыполнитьПакет();
	
	Возврат РезультатВыполнения;

КонецФункции 

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

#КонецЕсли

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