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