Распределение расходов будущих периодов / Модуль менеджера

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

// Возвращает последнюю дату возникновения расхода в месяце оформления документа распределения РБП
//
// Параметры:
//  ДанныеЗаполнения - Структура - параметры для получения данных.
//
// Возвращаемое значение:
//   Дата   - последняя дата возникновения расхода
//
Функция ПолучитьДатуВозникновенияРБП(ДанныеЗаполнения) Экспорт 

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

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

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

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

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

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

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

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

// Текст запроса РБП к распределению (источники).
// 
// Возвращаемое значение:
//  Строка - Текст запроса
Функция ТекстЗапросаРасходыКРаспределениюИсточники(РежимОтладкиПоИсточникам = Ложь) Экспорт

// Тексты запроса источников РБП к распределению.
// Делится на области:
// 1. ТекстИзмененияРБП
// 2. ТекстРасходыРБП
// 3. ТекстСписаниеМатериаловРаботНаРБП
// 4. ТекстСписаниеРасходовНаРБП
// 5. ТекстПереходящийОстатокРБП
// 6. ТекстОстатокНераспределенныхРБП
// 7. ТекстПриходыРБПОВЗ
// 8. ТекстСписаниеМатериаловРаботНаРБПОВЗ
// 9. ТекстРБПизТранзитныхОВЗПостоянныеПоказатели
// 10. ТекстРБПизТранзитныхОВЗПеременныеПоказатели
// Каждая из областей, в свою очередь, делится на 3 текста запроса (по УУ, РУ и НУ).
// 
// Пункты 1, 2, 5 и 6 - это базовые показатели (начальный остаток (5), приход (1), расход (2) и конечный остаток (6)). Собираются по данным РН "Прочие расходы". Суммы заполнены.
// 
// По остальным пунктам выбираются строки с нулевыми суммами. Признаки "БезСумм..." установлены в ИСТИНА. Для запросов по ОВЗ, поле ЭтоОВЗ - ИСТИНА.
// - ТекстСписаниеМатериаловРаботНаРБП - отбираются расходные движения по РН "Себестоимость товаров", 
//    у которых СтатьяРасходовСписания с вариантом распределения расходов - НаРасходыБудущихПериодов.
// - ТекстСписаниеРасходовНаРБП - отбираются строки по документам распределения прочих затрат по статьям расходов с вариантом распределения расходов - НаРасходыБудущихПериодов.
// - ТекстПриходыРБПОВЗ - отбираются приходные движения по РН "Прочие расходы" с аналитикой расходов типа ОВЗ, у которых вариант распределения расходов - НаРасходыБудущихПериодов.
// - ТекстСписаниеМатериаловРаботНаРБПОВЗ - отбираются расходные движения по РН "Себестоимость товаров" с аналитикой расходов типа ОВЗ, 
//    у которых вариант распределения расходов - НаРасходыБудущихПериодов.
// - ТекстРБПизТранзитныхОВЗПостоянныеПоказатели - отбираются строки по документам распределения прочих расходов, 
//    где показатель совпадает с показателем из среза последних на конец периода по РС "ЗначенияПоказателейДляРаспределенияРасходовНаОВЗ" по ОВЗ, 
//    с вариантом распределения расходов - НаРасходыБудущихПериодов.
// - ТекстРБПизТранзитныхОВЗПеременныеПоказатели - похоже на прошлый пункт, но соединение по РС "ЗначенияПоказателейДляРаспределенияРасходовНаОВЗ" идет не по срезу последних, 
//    а по таблице движений. Кроме показателя, в соединении участвуют база распределения показателя (должна быть "ВводитсяЕжемесячно") и период.
// Для всех этих вариантов в выбранном периоде проверяется наличие проведенных документов распределения расходов будущих периодов, а так же наличие заданий к расчету себестоимости.
// 
// СуммыНДД выбираются в текстах запросов по НУ.
// Тексты запросов по НУ используются только в том случае, когда включена ФО "ИспользоватьРеглУчет".
// 
// Тексты запросов по ОВЗ используются только в том случае, когда включена ФО "ИспользоватьУчетПоОбъектамВозникновенияЗатрат"

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

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

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

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

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

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

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

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

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

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

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

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

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

	ИсточникиДанных = Новый Соответствие;

	Возврат ИсточникиДанных; 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ОбновлениеИнформационнойБазы

// см. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт

#Область Документы_РаспределениеРасходовБудущихПериодов_ОбработатьДанныеДляПереходаНаНовуюВерсию

	Обработчик = Обработчики.Добавить();
	Обработчик.Процедура = "Документы.РаспределениеРасходовБудущихПериодов.ОбработатьДанныеДляПереходаНаНовуюВерсию";
	Обработчик.Версия = "11.5.7.228";
	Обработчик.РежимВыполнения = "Отложенно";
	Обработчик.Идентификатор = Новый УникальныйИдентификатор("173afe82-319c-4c13-91f4-d2ca087cdc11");
	Обработчик.Многопоточный = Истина;
	Обработчик.ПроцедураЗаполненияДанныхОбновления = "Документы.РаспределениеРасходовБудущихПериодов.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
	Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
	Обработчик.Комментарий = НСтр("ru = 'Заполняет поле ""Идентификатор строки"" в табличных частях.'");
	
	Читаемые = Новый Массив;
	Читаемые.Добавить(Метаданные.ПланыВидовХарактеристик.СтатьиРасходов.ПолноеИмя());
	Читаемые.Добавить(Метаданные.Документы.РаспределениеРасходовБудущихПериодов.ПолноеИмя());
	Обработчик.ЧитаемыеОбъекты = СтрСоединить(Читаемые, ",");
	
	Изменяемые = Новый Массив;
	Изменяемые.Добавить(Метаданные.Документы.РаспределениеРасходовБудущихПериодов.ПолноеИмя());
	Обработчик.ИзменяемыеОбъекты = СтрСоединить(Изменяемые, ",");

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

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

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

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

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

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

#Область ФормированиеГиперссылкиВЖурналеПроизводства

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

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

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

#КонецЕсли

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