Правила распределения расходов / Модуль менеджера

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

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

//++ НЕ УТ

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

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

//++ НЕ УТ

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

//-- НЕ УТ

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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