Распределение доходов по направлениям деятельности / Модуль объекта

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

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

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)

	ИнициализироватьДокумент(ДанныеЗаполнения);
	
	ПараметрыВыбораСтатейИАналитик = Документы.РаспределениеДоходовПоНаправлениямДеятельности.ПараметрыВыбораСтатейИАналитик();
	ДоходыИРасходыСервер.ОбработкаЗаполнения(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
	
	РаспределениеДоходовИРасходовПоНаправлениямДеятельностиЛокализация.ОбработкаЗаполнения(ЭтотОбъект, ДанныеЗаполнения, СтандартнаяОбработка);

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

Процедура ПриКопировании(ОбъектКопирования)

	Доходы.Очистить();
	Расходы.Очистить();
	
	ОбщегоНазначенияУТ.ОчиститьИдентификаторыДокумента(ЭтотОбъект);
	
	РаспределениеДоходовИРасходовПоНаправлениямДеятельностиЛокализация.ПриКопировании(ЭтотОбъект, ОбъектКопирования);

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

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

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

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

Процедура ПриЗаписи(Отказ)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	
	ПроведениеДокументов.ПриЗаписиДокумента(ЭтотОбъект, Отказ);
	
КонецПроцедуры

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

Процедура ОбработкаУдаленияПроведения(Отказ)
	
	ПроведениеДокументов.ОбработкаУдаленияПроведенияДокумента(ЭтотОбъект, Отказ);
	
	РаспределениеДоходовИРасходовПоНаправлениямДеятельностиЛокализация.ОбработкаУдаленияПроведения(ЭтотОбъект, Отказ);
	
КонецПроцедуры

#Область ЗаполнениеДокумента

Процедура ЗаполнитьДоходыПоОстаткам() Экспорт

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

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

Процедура ЗаполнитьРасходыПоОстаткам() Экспорт

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

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

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

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

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

#Область ИнициализацияИЗаполнение

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

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

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

Процедура ОбновитьПредставлениеОрганизации()

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

	Если ПустаяСтрока(ТекстПредставлениеОрганизаций) Тогда 
		ТекстПредставлениеОрганизаций = НСтр("ru = 'Укажите организацию'");
	КонецЕсли;

	Если ПредставлениеОрганизаций <> ТекстПредставлениеОрганизаций Тогда
		ПредставлениеОрганизаций = ТекстПредставлениеОрганизаций;
	КонецЕсли;

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

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

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

#КонецЕсли

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