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