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