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

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

#Область Проведение

// Описывает учетные механизмы используемые в документе для регистрации в механизме проведения.
//
// Параметры:
//  МеханизмыДокумента - Массив из Строка- список имен учетных механизмов, для которых будет выполнена
//              регистрация в механизме проведения.
//
Процедура ЗарегистрироватьУчетныеМеханизмы(МеханизмыДокумента) Экспорт
	
	МеханизмыДокумента.Добавить("УчетДоходовРасходов");
	МеханизмыДокумента.Добавить("УчетПрочихАктивовПассивов");
	МеханизмыДокумента.Добавить("ОборотныеРегистрыУправленческогоУчета");

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

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

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

#Область ДляВызоваИзДругихПодсистем

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

// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
//  Настройки - Структура - настройки подсистемы.
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
	Возврат;
КонецПроцедуры

// СтандартныеПодсистемы.УправлениеДоступом

// Параметры:
//   Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение.
//
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

	Ограничение.Текст =
	"РазрешитьЧтениеИзменение
	|ГДЕ
	|	ЗначениеРазрешено(Организация)";

КонецПроцедуры

// Конец СтандартныеПодсистемы.УправлениеДоступом

// Определяет список команд создания на основании.
//
// Параметры:
//  КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании
//  Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
	
	Документы.НачислениеЕНП.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	
КонецПроцедуры

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

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

#КонецЕсли

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

Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	Поля.Добавить("Ссылка");
	Поля.Добавить("Номер");
	Поля.Добавить("Дата");
	Поля.Добавить("ВидНалога");
	
КонецПроцедуры

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	Представление = ВнеоборотныеАктивыВызовСервераЛокализация.ПредставлениеДокументаПерерасчетИмущественныхНалогов(Данные);
	
КонецПроцедуры

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

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

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

#Область Проведение

Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт
	
	ИсточникиДанных = Новый Соответствие;
	Возврат ИсточникиДанных;
	
КонецФункции

Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт

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

	Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
	Результат.ЗначенияПараметров = ЗначенияПараметров;
	Результат.ТекстЗапроса = ТекстЗапроса;
	
	Возврат Результат;
	
КонецФункции

Процедура ЗаполнитьПараметрыИнициализации(Запрос, ДокументСсылка)
	
	Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ДанныеДокумента.ПометкаУдаления КАК ПометкаУдаления,
	|	ДанныеДокумента.Номер КАК Номер,
	|	ДанныеДокумента.Дата КАК Период,
	|	ДанныеДокумента.Проведен КАК Проведен,
	|	ДанныеДокумента.Организация КАК Организация,
	|	ДанныеДокумента.Подразделение КАК Подразделение,
	|	ДанныеДокумента.Ответственный КАК Ответственный,
	|	ДанныеДокумента.Комментарий КАК Комментарий,
	|	ДанныеДокумента.ИдентификаторДокумента КАК ИдентификаторДокумента,
	|	ДанныеДокумента.ОсновноеСредство КАК ОсновноеСредство,
	|	ДанныеДокумента.ВидНалога КАК ВидНалога,
	|	ДанныеДокумента.НачалоПериода КАК НачалоПериода,
	|	ДанныеДокумента.КонецПериода КАК КонецПериода,
	|	ДанныеДокумента.СуммаКорректировки КАК СуммаКорректировки,
	|	ДанныеДокумента.СуммаКорректировкиУпр КАК СуммаКорректировкиУпр,
	|	ДанныеДокумента.ВариантПерерасчета КАК ВариантПерерасчета,
	|	ДанныеДокумента.ВариантВозмещения КАК ВариантВозмещения,
	|	ДанныеДокумента.СуммаКоэффициентов КАК СуммаКоэффициентов,
	|	ДанныеДокумента.НалоговыйОрган КАК НалоговыйОрган,
	|
	|	ВЫБОР
	|		КОГДА ДанныеДокумента.ВидНалога = ЗНАЧЕНИЕ(Перечисление.ВидыИмущественныхНалогов.ТранспортныйНалог)
	|			ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПерерасчетТранспортногоНалога)
	|		КОГДА ДанныеДокумента.ВидНалога = ЗНАЧЕНИЕ(Перечисление.ВидыИмущественныхНалогов.ЗемельныйНалог)
	|			ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПерерасчетЗемельногоНалога)
	|		ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПерерасчетНалогаНаИмущество)
	|	КОНЕЦ КАК ХозяйственнаяОперация,
	|
	|	ВЫБОР
	|		КОГДА ДанныеДокумента.ВидНалога = ЗНАЧЕНИЕ(Перечисление.ВидыИмущественныхНалогов.НалогНаИмущество)
	|			ТОГДА ВЫБОР
	|					КОГДА ДанныеДокумента.ВариантПерерасчета = ЗНАЧЕНИЕ(Перечисление.ВариантыПерерасчетаИмущественныхНалогов.Доначислить)
	|						ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ДоначислениеНалогаНаИмущество)
	|					КОГДА ДанныеДокумента.ВариантВозмещения = ЗНАЧЕНИЕ(Перечисление.ВариантыВозмещенияИмущественныхНалогов.ЗачестьВСчетТранспортногоНалога)
	|						ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗачетНалогаНаИмуществоВСчетТранспортногоНалога)
	|					КОГДА ДанныеДокумента.ВариантВозмещения = ЗНАЧЕНИЕ(Перечисление.ВариантыВозмещенияИмущественныхНалогов.ЗачестьВСчетЗемельногоНалога)
	|						ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗачетНалогаНаИмуществоВСчетЗемельногоНалога)
	|					ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗачетНалогаНаИмущество)
	|				КОНЕЦ
	|
	|		КОГДА ДанныеДокумента.ВидНалога = ЗНАЧЕНИЕ(Перечисление.ВидыИмущественныхНалогов.ТранспортныйНалог)
	|			ТОГДА ВЫБОР
	|					КОГДА ДанныеДокумента.ВариантПерерасчета = ЗНАЧЕНИЕ(Перечисление.ВариантыПерерасчетаИмущественныхНалогов.Доначислить)
	|						ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ДоначислениеТранспортногоНалога)
	|					КОГДА ДанныеДокумента.ВариантВозмещения = ЗНАЧЕНИЕ(Перечисление.ВариантыВозмещенияИмущественныхНалогов.ЗачестьВСчетНалогаНаИмущество)
	|						ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗачетТранспортногоНалогаВСчетНалогаНаИмущество)
	|					КОГДА ДанныеДокумента.ВариантВозмещения = ЗНАЧЕНИЕ(Перечисление.ВариантыВозмещенияИмущественныхНалогов.ЗачестьВСчетЗемельногоНалога)
	|						ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗачетТранспортногоНалогаВСчетЗемельногоНалога)
	|					ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗачетТранспортногоНалога)
	|				КОНЕЦ
	|
	|		КОГДА ДанныеДокумента.ВидНалога = ЗНАЧЕНИЕ(Перечисление.ВидыИмущественныхНалогов.ЗемельныйНалог)
	|			ТОГДА ВЫБОР
	|					КОГДА ДанныеДокумента.ВариантПерерасчета = ЗНАЧЕНИЕ(Перечисление.ВариантыПерерасчетаИмущественныхНалогов.Доначислить)
	|						ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ДоначислениеЗемельногоНалога)
	|					КОГДА ДанныеДокумента.ВариантВозмещения = ЗНАЧЕНИЕ(Перечисление.ВариантыВозмещенияИмущественныхНалогов.ЗачестьВСчетНалогаНаИмущество)
	|						ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗачетЗемельногоНалогаВСчетНалогаНаИмущество)
	|					КОГДА ДанныеДокумента.ВариантВозмещения = ЗНАЧЕНИЕ(Перечисление.ВариантыВозмещенияИмущественныхНалогов.ЗачестьВСчетТранспортногоНалога)
	|						ТОГДА ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗачетЗемельногоНалогаВСчетТранспортногоНалога)
	|					ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ЗачетЗемельногоНалога)
	|				КОНЕЦ
	|	КОНЕЦ КАК ХозяйственнаяОперацияДвижений,
	|
	|	ВЫБОР
	|		КОГДА ДанныеДокумента.ВидНалога = ЗНАЧЕНИЕ(Перечисление.ВидыИмущественныхНалогов.НалогНаИмущество)
	|			ТОГДА ВЫБОР
	|					КОГДА ДанныеДокумента.ВариантПерерасчета = ЗНАЧЕНИЕ(Перечисление.ВариантыПерерасчетаИмущественныхНалогов.Доначислить)
	|						ТОГДА ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.ДоначислениеНалогаНаИмущество)
	|					КОГДА ДанныеДокумента.ВариантВозмещения = ЗНАЧЕНИЕ(Перечисление.ВариантыВозмещенияИмущественныхНалогов.ЗачестьВСчетТранспортногоНалога)
	|						ТОГДА ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.ЗачетНалогаНаИмуществоВСчетТранспортногоНалога)
	|					КОГДА ДанныеДокумента.ВариантВозмещения = ЗНАЧЕНИЕ(Перечисление.ВариантыВозмещенияИмущественныхНалогов.ЗачестьВСчетЗемельногоНалога)
	|						ТОГДА ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.ЗачетНалогаНаИмуществоВСчетЗемельногоНалога)
	|					ИНАЧЕ ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.ЗачетНалогаНаИмущество)
	|				КОНЕЦ
	|
	|		КОГДА ДанныеДокумента.ВидНалога = ЗНАЧЕНИЕ(Перечисление.ВидыИмущественныхНалогов.ТранспортныйНалог)
	|			ТОГДА ВЫБОР
	|					КОГДА ДанныеДокумента.ВариантПерерасчета = ЗНАЧЕНИЕ(Перечисление.ВариантыПерерасчетаИмущественныхНалогов.Доначислить)
	|						ТОГДА ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.ДоначислениеТранспортногоНалога)
	|					КОГДА ДанныеДокумента.ВариантВозмещения = ЗНАЧЕНИЕ(Перечисление.ВариантыВозмещенияИмущественныхНалогов.ЗачестьВСчетНалогаНаИмущество)
	|						ТОГДА ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.ЗачетТранспортногоНалогаВСчетНалогаНаИмущество)
	|					КОГДА ДанныеДокумента.ВариантВозмещения = ЗНАЧЕНИЕ(Перечисление.ВариантыВозмещенияИмущественныхНалогов.ЗачестьВСчетЗемельногоНалога)
	|						ТОГДА ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.ЗачетТранспортногоНалогаВСчетЗемельногоНалога)
	|					ИНАЧЕ ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.ЗачетТранспортногоНалога)
	|				КОНЕЦ
	|
	|		КОГДА ДанныеДокумента.ВидНалога = ЗНАЧЕНИЕ(Перечисление.ВидыИмущественныхНалогов.ЗемельныйНалог)
	|			ТОГДА ВЫБОР
	|					КОГДА ДанныеДокумента.ВариантПерерасчета = ЗНАЧЕНИЕ(Перечисление.ВариантыПерерасчетаИмущественныхНалогов.Доначислить)
	|						ТОГДА ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.ДоначислениеЗемельногоНалога)
	|					КОГДА ДанныеДокумента.ВариантВозмещения = ЗНАЧЕНИЕ(Перечисление.ВариантыВозмещенияИмущественныхНалогов.ЗачестьВСчетНалогаНаИмущество)
	|						ТОГДА ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.ЗачетЗемельногоНалогаВСчетНалогаНаИмущество)
	|					КОГДА ДанныеДокумента.ВариантВозмещения = ЗНАЧЕНИЕ(Перечисление.ВариантыВозмещенияИмущественныхНалогов.ЗачестьВСчетТранспортногоНалога)
	|						ТОГДА ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.ЗачетЗемельногоНалогаВСчетТранспортногоНалога)
	|					ИНАЧЕ ЗНАЧЕНИЕ(Справочник.НастройкиХозяйственныхОпераций.ЗачетЗемельногоНалога)
	|				КОНЕЦ
	|	КОНЕЦ КАК НастройкаХО
	|ИЗ
	|	Документ.ПерерасчетИмущественныхНалогов КАК ДанныеДокумента
	|ГДЕ
	|	ДанныеДокумента.Ссылка = &Ссылка";
	
	Результат = Запрос.Выполнить();
	Реквизиты = Результат.Выбрать();
	Реквизиты.Следующий();
	
	Для Каждого Колонка Из Результат.Колонки Цикл
		Запрос.УстановитьПараметр(Колонка.Имя, Реквизиты[Колонка.Имя]);
	КонецЦикла;
	
	ЗначенияПараметровПроведения = ЗначенияПараметровПроведения(Реквизиты);
	Для каждого КлючИЗначение Из ЗначенияПараметровПроведения Цикл
		Запрос.УстановитьПараметр(КлючИЗначение.Ключ, КлючИЗначение.Значение);
	КонецЦикла;
	
	РасчетСебестоимостиПрикладныеАлгоритмы.ЗаполнитьПараметрыИнициализации(Запрос, Реквизиты);
	
КонецПроцедуры

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

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

Функция ТекстЗапросаТаблицаПрочиеДоходы(ТекстыЗапроса, Регистры)

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

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

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

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

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

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

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

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

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

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


#Область ВременныеТаблицыДляПроведения

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

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

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

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

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

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

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

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

#Область ПроведениеПоРеглУчету

Функция ТекстОтраженияВРеглУчете() Экспорт

	ТекстыЗапроса = Новый Массив;

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

	ТекстЗапроса = СтрСоединить(ТекстыЗапроса, ОбщегоНазначенияУТ.РазделительЗапросовВОбъединении());
	
	Возврат ТекстЗапроса;

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

Функция ТекстЗапросаВТОтраженияВРеглУчете() Экспорт

	Возврат "";

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

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

#Область СтандартныеПодсистемы

// Заполняет список команд печати.
//
// Параметры:
//   КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
КонецПроцедуры

// Определяет список команд отчетов.
//
// Параметры:
//   КомандыОтчетов - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.КомандыОтчетов
//   Параметры - См. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.Параметры
//
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
	
КонецПроцедуры

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

#Область РасчетВариантаПерерасчетаИСуммы

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

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

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

		ПериодРасчета = КонецМесяца(ДобавитьМесяц(НачалоМесяца(ПериодРасчета), 3));
		
		КоличествоДанныхЗамера = КоличествоДанныхЗамера + 1;
		
	КонецЦикла;
	
	Если РезультатРасчета.Количество() = 0 Тогда
		Возврат Неопределено;
	КонецЕсли;
	
	Возврат РезультатРасчета;
		
КонецФункции

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

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

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

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

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

#Область Прочее

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

// Определяет какие виды налогов доступны для выбранного ОС.
// 
// Параметры:
// 	Объект - ДокументОбъект.ПерерасчетИмущественныхНалогов -
// 	
// Возвращаемое значение:
// 	Структура - содержит доступные виды налогов:
// 		* ДоступенНалогНаИмущество - Булево -
// 		* ДоступенЗемельныйНалог - Булево -
// 		* ДоступенТранспортныйНалог - Булево -
Функция ДоступныеВидыНалогов(Объект) Экспорт

	ДоступенНалогНаИмущество = Истина;
	ДоступенЗемельныйНалог = Истина;
	ДоступенТранспортныйНалог = Истина;
	
	ТекстЗапроса = 
	"ВЫБРАТЬ
	|	ОбъектыЭксплуатации.Ссылка КАК Ссылка,
	|	ОбъектыЭксплуатации.ГруппаОС КАК ГруппаОС,
	|	ЕСТЬNULL(МАКСИМУМ(ПорядокУчетаОСБУ.НедвижимоеИмущество), ЛОЖЬ) КАК НедвижимоеИмущество
	|ИЗ
	|	Справочник.ОбъектыЭксплуатации КАК ОбъектыЭксплуатации
	|
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПорядокУчетаОСБУ КАК ПорядокУчетаОСБУ
	|		ПО (ПорядокУчетаОСБУ.ОсновноеСредство = ОбъектыЭксплуатации.Ссылка)
	|			И (ПорядокУчетаОСБУ.Организация = &Организация)
	|			И (ПорядокУчетаОСБУ.Период >= &НачалоПериода)
	|			И (ПорядокУчетаОСБУ.Период <= &КонецПериода
	|					ИЛИ &КонецПериода = ДАТАВРЕМЯ(1,1,1))
	|ГДЕ
	|	ОбъектыЭксплуатации.Ссылка = &ОсновноеСредство
	|
	|СГРУППИРОВАТЬ ПО
	|	ОбъектыЭксплуатации.Ссылка,
	|	ОбъектыЭксплуатации.ГруппаОС";
	
	Запрос = Новый Запрос(ТекстЗапроса);
	Запрос.УстановитьПараметр("НачалоПериода", Объект.НачалоПериода);
	Запрос.УстановитьПараметр("КонецПериода", Объект.КонецПериода);
	Запрос.УстановитьПараметр("Организация", Объект.Организация);
	Запрос.УстановитьПараметр("ОсновноеСредство", Объект.ОсновноеСредство);
	
	Результат = Запрос.Выполнить();
	Выборка = Результат.Выбрать();
	
	Если Выборка.Следующий() Тогда
		
		ГруппыНедвижимогоИмущества = ВнеоборотныеАктивыКлиентСерверЛокализация.ГруппыНедвижимогоИмущества();
			
		ДоступенНалогНаИмущество = 
			Выборка.ГруппаОС <> Перечисления.ГруппыОС.ЗемельныеУчастки
			И (Выборка.НедвижимоеИмущество = Истина
				ИЛИ Выборка.НедвижимоеИмущество = Неопределено
						И ГруппыНедвижимогоИмущества.Найти(Выборка.ГруппаОС) <> Неопределено);
		
		ДоступенЗемельныйНалог = (Выборка.ГруппаОС = Перечисления.ГруппыОС.ЗемельныеУчастки);
		
		ДоступенТранспортныйНалог = 
			Выборка.ГруппаОС = Перечисления.ГруппыОС.ТранспортныеСредства
			ИЛИ Выборка.ГруппаОС = Перечисления.ГруппыОС.МашиныИОборудование;
	
	КонецЕсли;
	
	ДоступныеВидыНалогов = Новый Структура;
	ДоступныеВидыНалогов.Вставить("ДоступенНалогНаИмущество", ДоступенНалогНаИмущество);
	ДоступныеВидыНалогов.Вставить("ДоступенЗемельныйНалог", ДоступенЗемельныйНалог);
	ДоступныеВидыНалогов.Вставить("ДоступенТранспортныйНалог", ДоступенТранспортныйНалог);
	
	Возврат ДоступныеВидыНалогов;
	
КонецФункции

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

// Получить таблицу расчета налога по имени табличной части.
// 
// Возвращаемое значение:
//  ТаблицаЗначений - Пустая ТаблицаЗначений - Табличная часть документа с добавленной колонкой "основное средство".
Функция ПолучитьТаблицуРасчетаНалога(ИмяТабличнойЧасти)
	Запрос = Новый Запрос();
	
	ТекстЗапроса =
	"ВЫБРАТЬ
	|	ЗНАЧЕНИЕ(Справочник.ОбъектыЭксплуатации.ПустаяСсылка) КАК ОсновноеСредство,
	|	ТабЧастьРасчетНалога.*
	|ИЗ
	|	&ТабличнаяЧастьДокумента КАК ТабЧастьРасчетНалога
	|ГДЕ
	|	ЛОЖЬ";
	
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТабличнаяЧастьДокумента", "Документ.ПерерасчетИмущественныхНалогов."+ИмяТабличнойЧасти);
	
	Запрос.Текст = ТекстЗапроса;
	
	ПустаяТаблица = Запрос.Выполнить().Выгрузить();
	
	Возврат ПустаяТаблица;
КонецФункции

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

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

#КонецЕсли

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