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