Распределение расходов / Форма настроек на ФР / Модуль формы

файл
#Область ОписаниеПеременных

&НаКлиенте
Перем КэшированныеЗначения; //используется механизмом обработки изменения реквизитов ТЧ

&НаКлиенте
Перем КэшРеквизитов;

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

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

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

	//++ Локализация
	УправлениеЭлементамиФормы();
	//-- Локализация

	//-- НЕ УТ
	
	ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
	
КонецПроцедуры

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
	
	// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
	
	ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
	ПриЧтенииСозданииНаСервере();
	
	СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ОбновитьНадписьПериод();
	
	КэшРеквизитов = Новый Структура;
	КэшРеквизитов.Вставить("УправленческийУчет", Объект.УправленческийУчет);
	КэшРеквизитов.Вставить("РегламентированныйУчет", Объект.РегламентированныйУчет);
	//++ НЕ УТ

	//++ Локализация
	КэшРеквизитов.Вставить("НалоговыйУчет", Объект.НалоговыйУчет);
	//-- Локализация

	//-- НЕ УТ
	
	// СтандартныеПодсистемы.Свойства
	УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.Свойства
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
КонецПроцедуры

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
	
	СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
	
	РеквизитыОтборов = Новый Массив;
	РеквизитыОтборов.Добавить(Новый Структура("ОтборПоНаправлениямДеятельности", "НаправлениеДеятельности"));
	//++ НЕ УТ

	//++ Локализация
	РеквизитыОтборов.Добавить(Новый Структура("ОтборПоГруппамПродукции", "ГруппаПродукции"));
	РеквизитыОтборов.Добавить(Новый Структура("ОтборПоМатериалам", "Материал"));
	РеквизитыОтборов.Добавить(Новый Структура("ОтборПоВидамРабот", "ВидРабот"));
	//-- Локализация

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

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

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

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)

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

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

	Если Объект.Проведен Тогда

		ДокументПередачи = Объект.Ссылка;
		Состояние = ПредопределенноеЗначение("Перечисление.СостоянияРаспределенияРасходов.ГотовоКРаспределениюПоБазе");

	Иначе

		ДокументПередачи = Неопределено;
		Состояние = ПредопределенноеЗначение(
			"Перечисление.СостоянияРаспределенияРасходов.ТребуетсяСформироватьДокумент");

	КонецЕсли;

	Если Объект.УправленческийУчет Или КэшРеквизитов.УправленческийУчет Тогда

		Если Не Объект.УправленческийУчет И КэшРеквизитов.УправленческийУчет Тогда

			ПараметрыПередачи.Вставить("ДокументУпр", Неопределено);
			ПараметрыПередачи.Вставить("СостояниеУпр", ПредопределенноеЗначение(
				"Перечисление.СостоянияРаспределенияРасходов.ТребуетсяСформироватьДокумент"));

		Иначе

			ПараметрыПередачи.Вставить("ДокументУпр", ДокументПередачи);
			ПараметрыПередачи.Вставить("СостояниеУпр", Состояние);

		КонецЕсли;

	КонецЕсли;

	Если Объект.РегламентированныйУчет Или КэшРеквизитов.РегламентированныйУчет Тогда

		Если Не Объект.РегламентированныйУчет И КэшРеквизитов.РегламентированныйУчет Тогда

			ПараметрыПередачи.Вставить("ДокументРегл", Неопределено);
			ПараметрыПередачи.Вставить("СостояниеРегл", ПредопределенноеЗначение(
				"Перечисление.СостоянияРаспределенияРасходов.ТребуетсяСформироватьДокумент"));

		Иначе

			ПараметрыПередачи.Вставить("ДокументРегл", ДокументПередачи);
			ПараметрыПередачи.Вставить("СостояниеРегл", Состояние);

		КонецЕсли;

	КонецЕсли;
		
	//++ НЕ УТ

	//++ Локализация
	Если Объект.НалоговыйУчет Или КэшРеквизитов.НалоговыйУчет Тогда

		Если Не Объект.НалоговыйУчет И КэшРеквизитов.НалоговыйУчет Тогда

			ПараметрыПередачи.Вставить("ДокументНал", Неопределено);
			ПараметрыПередачи.Вставить("СостояниеНал", ПредопределенноеЗначение(
				"Перечисление.СостоянияРаспределенияРасходов.ТребуетсяСформироватьДокумент"));

		Иначе

			ПараметрыПередачи.Вставить("ДокументНал", ДокументПередачи);
			ПараметрыПередачи.Вставить("СостояниеНал", Состояние);

		КонецЕсли;

	КонецЕсли;
	//-- Локализация

	//-- НЕ УТ

	Оповестить("Запись_РаспределениеПрочихЗатрат", ПараметрыПередачи);
	
КонецПроцедуры

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

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
	
	ОбновитьНадписьПериод();
	
КонецПроцедуры

&НаКлиенте
Процедура ВидУчетаПриИзменении(Элемент)
	УстановитьДоступностьВидовУчета();
	//++ НЕ УТ

	//++ Локализация
	СинхронизироватьВидыУчетаБУиНУ(Элемент.Имя);
	//-- Локализация

	//-- НЕ УТ
КонецПроцедуры

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

#Область ОбработчикиСобытийПравилаРаспределения

&НаКлиенте
Процедура ПоказательРаспределенияПриИзменении(Элемент)
	
	ОбработатьИзменениеПоказательРаспределения();
	
КонецПроцедуры

&НаКлиенте
Процедура НаправлениеРаспределенияПриИзменении(Элемент)
	
	ОбработатьИзменениеНаправленияРаспределения();
	
КонецПроцедуры

&НаКлиенте
Процедура БазаРаспределенияПоПартиямПриИзменении(Элемент)
	
	//++ НЕ УТ
	ОбработатьИзменениеБазаРаспределенияПоПартиям();
	//-- НЕ УТ

	// В УТ обработчик пустой.
	Возврат;
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ТекстДобавитьИзменитьОтборБазыРаспределенияПоПартиямНажатие(Элемент, СтандартнаяОбработка)

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

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

	//-- НЕ УТ

	// В УТ пустой обработчик.
	Возврат;

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

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

	//-- НЕ УТ
	
	// В УТ пустой обработчик.
	Возврат;
	
КонецПроцедуры

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

#Область ОбработчикиСобытийЭлементовТаблицыФормыНаправленияДеятельности

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

	ЭлементОтбора = ГруппаОтбораДатаНачалаДеятельности.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ЭлементОтбора.ЛевоеЗначение    = Новый ПолеКомпоновкиДанных("ДатаНачалаДеятельности");
	ЭлементОтбора.ВидСравнения     = ВидСравненияКомпоновкиДанных.Равно;
	ЭлементОтбора.Использование    = Истина;
	ЭлементОтбора.ПравоеЗначение   = '00010101';

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

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

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

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

&НаКлиенте
Процедура НаправленияДеятельностиНаправлениеДеятельностиПриИзменении(Элемент)
	
	ТекущиеДанные = Элементы.НаправленияДеятельности.ТекущиеДанные;
	
	НаправлениеДеятельностиАктуально = НаправлениеДеятельностиАктуально(ТекущиеДанные.НаправлениеДеятельности, Объект.Дата);
	Если НЕ НаправлениеДеятельностиАктуально Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'К выбору доступны только актуальные направления деятельности, 
			|которые действуют в выбранном периоде.'"),,
			Элемент);
		ТекущиеДанные.НаправлениеДеятельности = ПустоеНаправлениеДеятельности();
	КонецЕсли;
	
КонецПроцедуры

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

#Область ОбработчикиКомандФормы

&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры


&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
	ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры


&НаКлиенте
Процедура ПровестиДокумент(Команда)
	
	ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма);
	
КонецПроцедуры

&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
	
	ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма);
	
КонецПроцедуры

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

#Область БСП

// ИнтеграцияС1СДокументооборотом
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
	
	ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
	
КонецПроцедуры
// Конец ИнтеграцияС1СДокументооборотом

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
	УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры

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

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

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

#Область Подбор

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

	//++ Локализация
	ИначеЕсли ДополнительныеПараметры = "ОтборПоГруппамПродукции" Тогда
		
		Модифицированность = Истина;
		ОтборПоГруппамПродукции.ЗагрузитьЗначения(Результат);
		ОбработатьИзмененияОтбораПоГруппамПродукции(ЭтаФорма);
		
	ИначеЕсли ДополнительныеПараметры = "ОтборПоМатериалам" Тогда
		
		ОтборПоМатериалам.ЗагрузитьЗначения(Результат);
		Модифицированность = Истина;
		
		ОбработатьИзмененияНастроекБазыРаспределенияПоПартиям();
		
	ИначеЕсли ДополнительныеПараметры = "ОтборПоВидамРабот" Тогда
		
		ОтборПоВидамРабот.ЗагрузитьЗначения(Результат);
		Модифицированность = Истина;
		
		ОбработатьИзмененияНастроекБазыРаспределенияПоПартиям();
	//-- Локализация

	//-- НЕ УТ
	КонецЕсли;

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

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

#Область ОбработчикиИзмененийРеквизитов

&НаКлиенте
Процедура ОбработатьИзменениеНаправленияРаспределения()
	
	ОчиститьЗависимыеРеквизиты("НаправлениеРаспределения");
	
	УстановитьВидимостьСтраниц(ЭтаФорма, "НаправлениеРаспределения");
	УстановитьДоступностьЭлементов(ЭтаФорма, "НаправлениеРаспределения");
	УстановитьВидимостьЭлементов(ЭтаФорма, "НаправлениеРаспределения");
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработатьИзменениеПоказательРаспределения()
	
	ОчиститьЗависимыеРеквизиты("ПоказательРаспределения");		
	УстановитьВидимостьЭлементов(ЭтаФорма, "ПоказательРаспределения");	
	
КонецПроцедуры

//++ НЕ УТ

&НаКлиенте
Процедура ОбработатьИзменениеБазаРаспределенияПоПартиям()
	
	Если Не ИмяСхемыБазыРаспределения(КэшБазаРаспределенияПоПартиям) = 
		ИмяСхемыБазыРаспределения(Объект.БазаРаспределенияПоПартиям) Тогда
		ОчиститьЗависимыеРеквизиты("БазаРаспределенияПоПартиям");
	Иначе
		НастроитьЗаголовкиПолей(ЭтаФорма);
	КонецЕсли;
	
	КэшБазаРаспределенияПоПартиям = Объект.БазаРаспределенияПоПартиям;
	НастроитьОформлениеПолей(ЭтаФорма);
	
КонецПроцедуры

&НаСервере
Процедура ОбработатьИзмененияНастроекБазыРаспределенияПоПартиям()

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

//++ Локализация

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

//-- НЕ УТ

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

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


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

#Область Отборы

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

&НаСервереБезКонтекста
Функция ПредставлениеОтбора(СписокОтбора, ПредметИсчисления, Гиперссылка)
	
	Если СписокОтбора.Количество() = 0 Тогда
		Возврат "";
	КонецЕсли;
	
	Если СписокОтбора.Количество() = 1 Тогда
		ПредставлениеОтбора = СокрЛП(СписокОтбора[0]);
	Иначе
		
		КоличествоПозиций = СписокОтбора.Количество() - 1;
		ДляСклонения = ЧислоПрописью(КоличествоПозиций, , ПредметИсчисления);
		
		НачалоПредмета = СтрНайти(ДляСклонения, Лев(ПредметИсчисления, 3));
		СклоненныйПредмет = Сред(ДляСклонения, НачалоПредмета, СтрНайти(ДляСклонения, " ",, НачалоПредмета) - НачалоПредмета);
		
		Представление = НСтр("ru = '%1 и еще %2 %3'");
		
		ПредставлениеОтбора = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Представление, 
			СокрЛП(СписокОтбора[0]), КоличествоПозиций, 
			СклоненныйПредмет);
			
	КонецЕсли;
	
	ФорматированноеПредставлениеОтбора = Новый ФорматированнаяСтрока(ПредставлениеОтбора,, ЦветаСтиля.ПоясняющийТекст);
	ПодстрокаИзменить = Новый ФорматированнаяСтрока(НСтр("ru = '(Изменить)'"),,,, Гиперссылка);
	
	Возврат Новый ФорматированнаяСтрока(ФорматированноеПредставлениеОтбора,
		?(ПустаяСтрока(ФорматированноеПредставлениеОтбора), "", " "),
		ПодстрокаИзменить);
	
КонецФункции

//++ НЕ УТ

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

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

	РеквизитСНастройкамиКомпоновщика = ДокОбъект[ИмяРеквизитаСНастройками]; // ХранилищеЗначения
	НастройкиКомпоновщика = РеквизитСНастройкамиКомпоновщика.Получить();
	Если Не НастройкиКомпоновщика = Неопределено Тогда
		ЭтаФорма[ИмяРеквизитаСНастройками].ЗагрузитьНастройки(НастройкиКомпоновщика);		
	КонецЕсли;

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

&НаКлиенте
Функция ПараметрыОткрытияНастройкиОтборов()
	
	ПараметрыОткрытия = Новый Структура;
	ПараметрыОткрытия.Вставить("ИмяСхемы", "");
	ПараметрыОткрытия.Вставить("ИмяНастроекКомпоновщика", "");
	ПараметрыОткрытия.Вставить("НеНастраиватьПараметры", Истина);
	
	Возврат ПараметрыОткрытия;
	
КонецФункции

// Открывает форму настройки отборов.
// Параметры:
//	ПараметрыОткрытия - Структура - описание структуры в ПараметрыОткрытияНастройкиОтборов
&НаКлиенте
Процедура ОткрытьФормуНастройкиОтборов(ПараметрыОткрытия, ЗаголовокФормы = "")

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

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

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

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

&НаКлиенте
Процедура РедактироватьСхемуКомпоновкиДанныхЗавершение(Результат, ДополнительныеПараметры) Экспорт

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

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

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

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

#Область БСП

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

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

&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
	УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры

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

#Область УправлениеФормой

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

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

		Элементы.ПоказательРаспределения.Видимость = Объект.УправленческийУчет ИЛИ Объект.РегламентированныйУчет;
	
	КонецЕсли;
	
КонецПроцедуры

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

&НаСервере
Процедура УстановитьДоступностьВидовУчета()
	
	Документы.РаспределениеПрочихЗатрат.УстановитьДоступностьВидовУчета(ЭтаФорма);
	
КонецПроцедуры

&НаСервере
Процедура СинхронизироватьВидыУчетаБУиНУ(ВидУчета)
	
	Документы.РаспределениеПрочихЗатрат.СинхронизироватьВидыУчетаБУиНУ(ЭтаФорма, ВидУчета);
	
КонецПроцедуры

//++ НЕ УТ

//++ Локализация

&НаСервере
Процедура УстановитьВидимостьЭлементовПоФО()
	
	Элементы.ГруппаОтборПоГруппамПродукции.Видимость = ПартионныйУчет21
		 И (ПолучитьФункциональнуюОпцию("АналитическийУчетПоГруппамПродукции")
			Или ОтборПоГруппамПродукции.Количество());
	
КонецПроцедуры
//-- Локализация

&НаКлиентеНаСервереБезКонтекста
Процедура НастроитьОформлениеПолей(Форма)
	
	Элементы = Форма.Элементы;
	Объект = Форма.Объект;
	
	Элементы.БазаРаспределенияНаФР.ОтметкаНезаполненного = Форма.ПоказательРаспределения = "ПрямыеЗатраты" 
		И Не ЗначениеЗаполнено(Объект.БазаРаспределенияПоПартиям);
		
КонецПроцедуры

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

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

//++ Локализация

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

//-- НЕ УТ
#КонецОбласти

#Область ИнициализацияФормы

&НаСервере
Процедура ПриЧтенииСозданииНаСервере()

	РаспределениеИзОВЗ = НЕ ЗначениеЗаполнено(Объект.СтатьяРасходов);

	ОпределитьВидимостьИСуммуРасходовПоСтатье();
	
	ЗаполнитьСлужебныеРеквизитыФормы();
	
	УстановитьВидимостьСтраниц(ЭтаФорма);
	УстановитьВидимостьЭлементов(ЭтаФорма);
	УстановитьДоступностьЭлементов(ЭтаФорма);
	//++ НЕ УТ

	//++ Локализация
	УстановитьВидимостьЭлементовПоФО();
	//-- Локализация
	НастроитьОформлениеПолей(ЭтаФорма);
	НастроитьЗаголовкиПолей(ЭтаФорма);
	//-- НЕ УТ
	УстановитьДоступностьВидовУчета();
		
КонецПроцедуры

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

	//++ Локализация
	ОтборПоВидамРабот.ЗагрузитьЗначения(Объект.ОтборПоВидамРабот.Выгрузить(, "ВидРабот").ВыгрузитьКолонку("ВидРабот"));
	ОтборПоГруппамПродукции.ЗагрузитьЗначения(Объект.ОтборПоГруппамПродукции.Выгрузить(, "ГруппаПродукции").ВыгрузитьКолонку("ГруппаПродукции"));
	ОтборПоМатериалам.ЗагрузитьЗначения(Объект.ОтборПоМатериалам.Выгрузить(, "Материал").ВыгрузитьКолонку("Материал"));
	//-- Локализация

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

&НаСервере
Процедура УстановитьЗаголовокФормы()
	
	ПредставлениеОбъекта = Метаданные.Документы.РаспределениеПрочихЗатрат.Синоним;
	УточнениеПредставленияОбъекта = НСтр("ru = 'между направлениями деятельности'");
	
	Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
		
		ШаблонЗаголовка = НСтр("ru = '%1 %2 (создание)'");
		Заголовок = СтрШаблон(ШаблонЗаголовка, ПредставлениеОбъекта, УточнениеПредставленияОбъекта);
		
	Иначе
		
		ШаблонЗаголовка = НСтр("ru = '%1 %2 №%3 от %4'");
		Заголовок = СтрШаблон(ШаблонЗаголовка, ПредставлениеОбъекта, 
								УточнениеПредставленияОбъекта,
								Объект.Номер,
								Формат(Объект.Дата, "ДЛФ=DT"));
		
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьНадписьПериод()

	НадписьПериод = ПредставлениеПериода(НачалоМесяца(Объект.Дата), КонецМесяца(Объект.Дата), "ДЛФ=D");
	
КонецПроцедуры

#КонецОбласти
//++ НЕ УТ
#Область РаботаСТипамиБаз

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

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

	ГруппыБаз = Новый Структура;
	ГруппыБаз.Вставить("Материалы", Материалы);
	ГруппыБаз.Вставить("Трудозатраты", Трудозатраты);
	ГруппыБаз.Вставить("МатериальныеИТрудозатраты", МатериальныеИТрудозатраты);
	
	Возврат ГруппыБаз;
	
КонецФункции

#КонецОбласти
//-- НЕ УТ

#Область КонтрольИзмененийРеквизитов

&НаКлиенте
Процедура ОбработатьИзменениеРеквизитов(ИмяРеквизита)
	
	Если ИмяРеквизита = "ПоказательРаспределения" Тогда
		ОбработатьИзменениеПоказательРаспределения();
	ИначеЕсли ИмяРеквизита = "НаправлениеРаспределения" Тогда
		ОбработатьИзменениеНаправленияРаспределения();
	//++ НЕ УТ	

	//++ Локализация

	ИначеЕсли ИмяРеквизита = "ОтборПоГруппамПродукции" Тогда
		ОбработатьИзмененияОтбораПоГруппамПродукции(ЭтаФорма);
	//-- Локализация
	ИначеЕсли ИмяРеквизита = "НастройкиБазыРаспределенияПоПартиям" Тогда
		ОбработатьИзмененияНастроекБазыРаспределенияПоПартиям();
	//-- НЕ УТ
	КонецЕсли;
	
КонецПроцедуры

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

&НаКлиенте
Функция ЗависимыеРеквизиты(Реквизит)
	
	РеквизитыФормы = Новый Массив;
	РеквизитыОбъекта = Новый Массив;
	
	Если Реквизит = "НаправлениеРаспределения" Тогда
		
		РеквизитыФормы.Добавить("ОтборПоНаправлениямДеятельности");
		РеквизитыОбъекта.Добавить("НаправленияДеятельности");
		
		Если Объект.НаправлениеРаспределения = ПредопределенноеЗначение("Перечисление.НаправлениеРаспределенияПоПодразделениям.ПоКоэффициентам") Тогда
			РеквизитыФормы.Добавить("ПоказательРаспределения");
		КонецЕсли;
		
	ИначеЕсли Реквизит = "ПоказательРаспределения" Тогда
		
		//++ НЕ УТ

		//++ Локализация
		РеквизитыФормы.Добавить("ОтборПоГруппамПродукции");
		//-- Локализация

		//-- НЕ УТ
		РеквизитыОбъекта.Добавить("БазаРаспределенияПоПартиям");

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

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

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

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

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

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

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

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

&НаСервереБезКонтекста
Функция ПустоеНаправлениеДеятельности()
	Возврат Справочники.НаправленияДеятельности.ПустаяСсылка();
КонецФункции

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

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

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