#Область ОписаниеПеременных
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем КэшРеквизитов;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
Элементы.ПоказательРаспределения.СписокВыбора.Очистить();
Элементы.ПоказательРаспределения.СписокВыбора.Добавить("ВыручкаОтПродаж", НСтр("ru = 'Выручка от продаж'"));
Элементы.ПоказательРаспределения.СписокВыбора.Добавить("СебестоимостьПродаж", НСтр("ru = 'Себестоимость продаж'"));
Элементы.ПоказательРаспределения.СписокВыбора.Добавить("ВаловаяПрибыль", НСтр("ru = 'Валовая прибыль'"));
Элементы.ПоказательРаспределения.СписокВыбора.Добавить("ПрямыеЗатраты", НСтр("ru = 'Прямые производственные затраты'"));
УТБазовая = ПолучитьФункциональнуюОпцию("БазоваяВерсия");
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
Если Объект.РегламентированныйУчет Тогда
СинхронизироватьВидыУчетаБУиНУ("РегламентированныйУчет");
ИначеЕсли Объект.НалоговыйУчет Тогда
СинхронизироватьВидыУчетаБУиНУ("НалоговыйУчет");
КонецЕсли;
ПриЧтенииСозданииНаСервере();
КонецЕсли;
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
УправлениеЭлементамиФормы();
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ПриЧтенииСозданииНаСервере();
СобытияФорм.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ЗаполнитьСлужебныеРеквизитыФормы();
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
СобытияФорм.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если Объект.НастройкиБазыРаспределенияПоПартиямИзменены Тогда
ТекущийОбъект.НастройкиБазыРаспределенияПоПартиям = Новый ХранилищеЗначения(
НастройкиБазыРаспределенияПоПартиям.ПолучитьНастройки());
Иначе
ТекущийОбъект.НастройкиБазыРаспределенияПоПартиям = Новый ХранилищеЗначения(Неопределено);
КонецЕсли;
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(
ЭтотОбъект,
ТекущийОбъект,
ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОбновитьНадписьПериод();
КэшРеквизитов = Новый Структура;
КэшРеквизитов.Вставить("УправленческийУчет", Объект.УправленческийУчет);
КэшРеквизитов.Вставить("РегламентированныйУчет", Объект.РегламентированныйУчет);
КэшРеквизитов.Вставить("НалоговыйУчет", Объект.НалоговыйУчет);
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);
РеквизитыОтборов = Новый Массив;
РеквизитыОтборов.Добавить(Новый Структура("ОтборПоНаправлениямДеятельности", "НаправлениеДеятельности"));
РеквизитыОтборов.Добавить(Новый Структура("ОтборПоГруппамПродукции", "ГруппаПродукции"));
РеквизитыОтборов.Добавить(Новый Структура("ОтборПоМатериалам", "Материал"));
РеквизитыОтборов.Добавить(Новый Структура("ОтборПоВидамРабот", "ВидРабот"));
Для Каждого РеквизитСОтбором Из РеквизитыОтборов Цикл
Для Каждого КлючИЗначение Из РеквизитСОтбором Цикл
Объект[КлючИЗначение.Ключ].Очистить();
Для Каждого Элемент Из ЭтаФорма[КлючИЗначение.Ключ] Цикл
НоваяСтрока = Объект[КлючИЗначение.Ключ].Добавить();
НоваяСтрока[КлючИЗначение.Значение] = Элемент.Значение;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Если ПоказательРаспределения = "ПрямыеЗатраты" Тогда
Возврат;
КонецЕсли;
ШаблонТипаБазы = "Перечисление.ТипыБазыРаспределенияРасходов.%1";
ЗначениеТипаБазы = СтрШаблон(ШаблонТипаБазы,
?(ПоказательРаспределения="","ПустаяСсылка",ПоказательРаспределения));
Объект.БазаРаспределенияПоПартиям = ПредопределенноеЗначение(ЗначениеТипаБазы);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
ПараметрыПередачи = Новый Структура;
ПараметрыПередачи.Вставить("Организация", Объект.Организация);
ПараметрыПередачи.Вставить("Подразделение", Объект.Подразделение);
ПараметрыПередачи.Вставить("СтатьяРасходов", Объект.СтатьяРасходов);
ПараметрыПередачи.Вставить("АналитикаРасходов", Объект.АналитикаРасходов);
ПараметрыПередачи.Вставить("НаправлениеДеятельности", Объект.НаправлениеДеятельности);
Если Объект.Проведен Тогда
ДокументПередачи = Объект.Ссылка;
Состояние = ПредопределенноеЗначение("Перечисление.СостоянияРаспределенияРасходов.ГотовоКРаспределениюПоБазе");
Иначе
ДокументПередачи = Неопределено;
Состояние = ПредопределенноеЗначение(
"Перечисление.СостоянияРаспределенияРасходов.ТребуетсяСформироватьДокумент");
КонецЕсли;
Если Объект.УправленческийУчет Или КэшРеквизитов.УправленческийУчет Тогда
Если Не Объект.УправленческийУчет И КэшРеквизитов.УправленческийУчет Тогда
ПараметрыПередачи.Вставить("ДокументУпр", Неопределено);
ПараметрыПередачи.Вставить("СостояниеУпр", ПредопределенноеЗначение(
"Перечисление.СостоянияРаспределенияРасходов.ТребуетсяСформироватьДокумент"));
Иначе
ПараметрыПередачи.Вставить("ДокументУпр", ДокументПередачи);
ПараметрыПередачи.Вставить("СостояниеУпр", Состояние);
КонецЕсли;
КонецЕсли;
Если Объект.РегламентированныйУчет Или КэшРеквизитов.РегламентированныйУчет Тогда
Если Не Объект.РегламентированныйУчет И КэшРеквизитов.РегламентированныйУчет Тогда
ПараметрыПередачи.Вставить("ДокументРегл", Неопределено);
ПараметрыПередачи.Вставить("СостояниеРегл", ПредопределенноеЗначение(
"Перечисление.СостоянияРаспределенияРасходов.ТребуетсяСформироватьДокумент"));
Иначе
ПараметрыПередачи.Вставить("ДокументРегл", ДокументПередачи);
ПараметрыПередачи.Вставить("СостояниеРегл", Состояние);
КонецЕсли;
КонецЕсли;
Если Объект.НалоговыйУчет Или КэшРеквизитов.НалоговыйУчет Тогда
Если Не Объект.НалоговыйУчет И КэшРеквизитов.НалоговыйУчет Тогда
ПараметрыПередачи.Вставить("ДокументНал", Неопределено);
ПараметрыПередачи.Вставить("СостояниеНал", ПредопределенноеЗначение(
"Перечисление.СостоянияРаспределенияРасходов.ТребуетсяСформироватьДокумент"));
Иначе
ПараметрыПередачи.Вставить("ДокументНал", ДокументПередачи);
ПараметрыПередачи.Вставить("СостояниеНал", Состояние);
КонецЕсли;
КонецЕсли;
Оповестить("Запись_РаспределениеПрочихЗатрат", ПараметрыПередачи);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ОбновитьНадписьПериод();
КонецПроцедуры
&НаКлиенте
Процедура ВидУчетаПриИзменении(Элемент)
УстановитьДоступностьВидовУчета();
СинхронизироватьВидыУчетаБУиНУ(Элемент.Имя);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийПравилаРаспределения
&НаКлиенте
Процедура ПоказательРаспределенияПриИзменении(Элемент)
ОбработатьИзменениеПоказательРаспределения();
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеРаспределенияПриИзменении(Элемент)
ОбработатьИзменениеНаправленияРаспределения();
КонецПроцедуры
&НаКлиенте
Процедура БазаРаспределенияПоПартиямПриИзменении(Элемент)
ОбработатьИзменениеБазаРаспределенияПоПартиям();
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если НавигационнаяСсылкаФорматированнойСтроки = "НаправленияДеятельности" Тогда
ПараметрыОтбора = Новый Структура("МассивНаправленийДеятельности", ОтборПоНаправлениямДеятельности.ВыгрузитьЗначения());
ДопПараметрОтбора = "ОтборПоНаправлениямДеятельности";
ОткрытьФорму("Справочник.ПравилаРаспределенияРасходов.Форма.ФормаОтбора",
ПараметрыОтбора,
ЭтаФорма,,,,
Новый ОписаниеОповещения("ЗавершитьПодборОтборов", ЭтотОбъект, ДопПараметрОтбора),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТекстДобавитьИзменитьОтборБазыРаспределенияПоПартиямНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если Не ЗначениеЗаполнено(Объект.БазаРаспределенияПоПартиям) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Перед добавлением отбора необходимо выбрать базу распределения.'"),,
"Объект.БазаРаспределенияПоПартиям");
Возврат;
КонецЕсли;
Если ПартионныйУчет21 Тогда
ПараметрыОтбора = Новый Структура();
ДопПараметрОтбора = "";
ГруппаБазы = ИмяСхемыБазыРаспределения(Объект.БазаРаспределенияПоПартиям);
Если ГруппаБазы = "МатериальныеЗатраты" Тогда
ПараметрыОтбора.Вставить("МассивМатериалов", ОтборПоМатериалам.ВыгрузитьЗначения());
ДопПараметрОтбора = "ОтборПоМатериалам";
ИначеЕсли ГруппаБазы = "Трудозатраты" Тогда
ПараметрыОтбора.Вставить("МассивВидовРабот", ОтборПоВидамРабот.ВыгрузитьЗначения());
ДопПараметрОтбора = "ОтборПоВидамРабот";
КонецЕсли;
ОткрытьФорму("Справочник.ПравилаРаспределенияРасходов.Форма.ФормаОтбора",
ПараметрыОтбора,
ЭтаФорма,,,,
Новый ОписаниеОповещения("ЗавершитьПодборОтборов", ЭтотОбъект, ДопПараметрОтбора),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Иначе
ПараметрыОткрытия = ПараметрыОткрытияНастройкиОтборов();
ПараметрыОткрытия.ИмяСхемы = ИмяСхемыБазыРаспределения(Объект.БазаРаспределенияПоПартиям);
ПараметрыОткрытия.ИмяНастроекКомпоновщика = "НастройкиБазыРаспределенияПоПартиям";
Если ПараметрыОткрытия.ИмяСхемы = "МатериальныеЗатраты"
Или ПараметрыОткрытия.ИмяСхемы = "МатериальныеИТрудозатраты" Тогда
ПараметрыОткрытия.НеНастраиватьПараметры = Ложь;
КонецЕсли;
ОткрытьФормуНастройкиОтборов(ПараметрыОткрытия, НСтр("ru = 'Настройка отбора базы распределения'"));
КонецЕсли;
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ТекстДобавитьИзменитьОтборПоГруппамПродукцииНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьФорму("Справочник.ПравилаРаспределенияРасходов.Форма.ФормаОтбора",
Новый Структура("МассивГруппПродукции", ОтборПоГруппамПродукции.ВыгрузитьЗначения()),
ЭтаФорма,,,,
Новый ОписаниеОповещения("ЗавершитьПодборОтборов", ЭтотОбъект, "ОтборПоГруппамПродукции"),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыНаправленияДеятельности
&НаКлиенте
Процедура НаправленияДеятельностиНаправлениеДеятельностиНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
НастройкиКомпоновки = Новый НастройкиКомпоновкиДанных;
ГруппаОтбора = НастройкиКомпоновки.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ГруппаОтбораДатаНачалаДеятельности = ГруппаОтбора.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораДатаНачалаДеятельности.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ЭлементОтбора = ГруппаОтбораДатаНачалаДеятельности.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаНачалаДеятельности");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = КонецМесяца(Объект.Дата);
ЭлементОтбора = ГруппаОтбораДатаНачалаДеятельности.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаНачалаДеятельности");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = '00010101';
ГруппаОтбораДатаОкончанияДеятельности = ГруппаОтбора.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораДатаОкончанияДеятельности.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ЭлементОтбора = ГруппаОтбораДатаОкончанияДеятельности.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаОкончанияДеятельности");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = НачалоМесяца(Объект.Дата);
ЭлементОтбора = ГруппаОтбораДатаОкончанияДеятельности.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаОкончанияДеятельности");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = '00010101';
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ФиксированныеНастройки", НастройкиКомпоновки);
ПараметрыФормы.Вставить("РежимВыбора", Истина);
ПараметрыФормы.Вставить("МножественныйВыбор", Ложь);
ОписаниеОповещения = Новый ОписаниеОповещения("НаправленияДеятельностиНаправлениеДеятельностиОкончаниеВыбора", ЭтотОбъект);
ОткрытьФорму("Справочник.НаправленияДеятельности.ФормаВыбора", ПараметрыФормы, ЭтотОбъект,,,,ОписаниеОповещения,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура НаправленияДеятельностиНаправлениеДеятельностиАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если СтрДлина(Текст) > 2 Тогда
ДанныеВыбора = Новый СписокЗначений;
ДанныеВыбора.ЗагрузитьЗначения(СписокПодобныхАктуальныхНаправленийДеятельности(Текст, Объект.Дата));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НаправленияДеятельностиНаправлениеДеятельностиПриИзменении(Элемент)
ТекущиеДанные = Элементы.НаправленияДеятельности.ТекущиеДанные;
НаправлениеДеятельностиАктуально = НаправлениеДеятельностиАктуально(ТекущиеДанные.НаправлениеДеятельности, Объект.Дата);
Если НЕ НаправлениеДеятельностиАктуально Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'К выбору доступны только актуальные направления деятельности,
|которые действуют в выбранном периоде.'"),,
Элемент);
ТекущиеДанные.НаправлениеДеятельности = ПустоеНаправлениеДеятельности();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура УстановитьПометкуУдаленияДокумента(Команда)
ОбщегоНазначенияУТКлиент.УстановитьПометкуУдаленияДокумента(ЭтотОбъект);
КонецПроцедуры
#Область БСП
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС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))
| И НаправленияДеятельности.Ссылка = &Ссылка)";
Возврат НЕ Запрос.Выполнить().Пустой();
КонецФункции
&НаСервереБезКонтекста
Функция ПустоеНаправлениеДеятельности()
Возврат Справочники.НаправленияДеятельности.ПустаяСсылка();
КонецФункции
#КонецОбласти
#КонецОбласти