#Область ОписаниеПеременных
&НаКлиенте
Перем ФормаМодифицирована;
&НаКлиенте
Перем ОтветПередЗаписью;
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не ЗначениеЗаполнено(Объект.Ссылка)
И ПолучитьФункциональнуюОпцию("ИспользоватьПроизводствоНаСтороне2_5") Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'При использовании производства на стороне версии 2.5 создание новых заказов версии 2.4 запрещено.'"),,,,
Отказ);
Возврат;
КонецЕсли;
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтаФорма);
СкладПоУмолчанию = ОбщегоНазначенияУТ.ПолучитьПроверитьСкладПоУмолчанию();
ПараметрыВстраивания = Документы.ЗаказПереработчику.ДоступныеОстаткиПараметрыВстраивания(Объект);
ОбеспечениеВДокументахСервер.ДоступныеОстаткиПриСозданииНаСервере(ЭтотОбъект, ПараметрыВстраивания);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
СтатусДокумента = Перечисления.СтатусыЗаказовПереработчикам.ПустаяСсылка();
КонецЕсли;
ИспользоватьПодразделения = ПолучитьФункциональнуюОпцию("ИспользоватьПодразделения");
ЗаполнитьСписокВыбораГруппировкиЗатрат();
ИспользоватьПричиныОтменыЗаказовПоставщикам = ПолучитьФункциональнуюОпцию("ИспользоватьПричиныОтменыЗаказовПоставщикам");
Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
Элементы.ГруппаИтогоПродукция.ЦветФона = Новый Цвет();
КонецЕсли;
НастроитьЭлементыФормыПоФункциональнымОпциям(ЭтаФорма);
УстановитьВидимостьВидаЦен();
ЗаполнятьВидыЦенПоУмолчанию = ЗначениеЗаполнено(Объект.ВидЦены);
НастроитьВидимостьИЗаполнениеУслуг(ЭтаФорма);
Элементы.ЗакрытьЗаказ.Доступность = ПравоДоступа("Изменение", Метаданные.Документы.ЗаказПереработчику);
УстановитьДоступностьКомандБуфераОбмена(ЭтаФорма, РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена());
Элементы.ВозвратныеОтходыВидЦены.БыстрыйВыбор = Не ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовЦен");
ПараметрыВыбораСтатейИАналитик = Документы.ЗаказПереработчику.ПараметрыВыбораСтатейИАналитик();
ДоходыИРасходыСервер.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ЭлементыДляЗаполнения = Новый Массив;
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиС);
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиПо);
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиС1);
ЭлементыДляЗаполнения.Добавить(Элементы.ВремяДоставкиПо1);
ДоставкаТоваровКлиентСервер.ЗаполнитьСписокВыбораПоляВремени(ЭлементыДляЗаполнения);
ВзаиморасчетыСервер.ФормаПриСозданииНаСервере(ЭтаФорма);
#Область СтандартныеМеханизмы
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, ДополнительныеПараметры);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма, "Продукция,ВозвратныеОтходы,Материалы");
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
#КонецОбласти
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПараметрыВстраивания = Документы.ЗаказПереработчику.ДоступныеОстаткиПараметрыВстраивания(Объект);
ОбеспечениеВДокументахСервер.ДоступныеОстаткиПриЧтенииНаСервере(ЭтотОбъект, ПараметрыВстраивания);
ПриЧтенииСозданииНаСервере();
ПараметрыВыбораСтатейИАналитик = Документы.ЗаказПереработчику.ПараметрыВыбораСтатейИАналитик();
ДоходыИРасходыСервер.ПриЧтенииНаСервере(ЭтотОбъект, ПараметрыВыбораСтатейИАналитик);
ВзаиморасчетыСервер.ФормаПриЧтенииНаСервере(ЭтаФорма);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
Если Объект.Проведен Тогда
СтатусДокумента = Объект.Статус;
Иначе
СтатусДокумента = Перечисления.СтатусыЗаказовПереработчикам.ПустаяСсылка();
КонецЕсли;
Если Объект.ПереработкаПоЗаказу Тогда
ИсходныеРаспоряжения.Очистить();
Для каждого ДанныеСтроки Из Объект.Услуги Цикл
ИсходныеРаспоряжения.Добавить(ДанныеСтроки.Распоряжение);
КонецЦикла;
КонецЕсли;
СобытияФорм.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ТребуетсяЗаполнитьДанныеРаспоряжения = Ложь;
ТребуетсяУточнитьДанныеРаспоряжения = Ложь;
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
ПроверитьЗаполнениеГруппыЗатрат(Отказ);
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрыЗаписи", ПараметрыЗаписи);
Отказ = Истина;
МногооборотнаяТараКлиент.ПредложитьПодобратьМногооборотнуюТару(
ЭтаФорма,
"Материалы",
"Номенклатура,Характеристика,Количество,Склад,ДатаОтгрузки",
Новый ОписаниеОповещения("ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение", ЭтотОбъект, ДополнительныеПараметры));
Возврат;
КонецЕсли;
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи, Отказ);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
ВзаиморасчетыСервер.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
УстановитьДоступностьЭлементовПоСтатусуСервер();
Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
СтатусДокумента = Объект.Статус;
Иначе
СтатусДокумента = Перечисления.СтатусыЗаказовПереработчикам.ПустаяСсылка();
КонецЕсли;
ЗаполнитьСлужебныеРеквизиты();
ЗаполнитьСлужебныеРеквизитыТабличныхЧастей();
ИспользоватьУправлениеПроизводством2_2 = ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеПроизводством2_2");
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(
Объект.Материалы,
ЗависимыеРеквизитыМатериалы());
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(
Объект.ВозвратныеОтходы,
ЗависимыеРеквизитыВозвратныеОтходы());
ОбновитьСостояниеСервер();
ДоходыИРасходыСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
ВзаиморасчетыСервер.ФормаПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект.ДополнительныеСвойства);
СобытияФорм.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
ТребуетсяЗаполнитьДанныеРаспоряжения = Ложь;
ТребуетсяУточнитьДанныеРаспоряжения = Ложь;
ОбеспечениеВДокументахСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
УстановитьВидимостьОбеспечения();
КонецПроцедуры
&НаСервере
Процедура ПередЗагрузкойДанныхИзНастроекНаСервере(Настройки)
СкрыватьОтмененныеСтрокиМатериалы = Настройки.Получить("СкрыватьОтмененныеСтрокиМатериалы");
Если СкрыватьОтмененныеСтрокиМатериалы Тогда
Элементы.Материалы.ОтборСтрок = Новый ФиксированнаяСтруктура("Отменено", Ложь);
Иначе
Элементы.Материалы.ОтборСтрок = Неопределено;
КонецЕсли;
СкрыватьОтмененныеСтрокиПродукция = Настройки.Получить("СкрыватьОтмененныеСтрокиПродукция");
Если СкрыватьОтмененныеСтрокиПродукция Тогда
Элементы.Продукция.ОтборСтрок = Новый ФиксированнаяСтруктура("Отменено", Ложь);
Иначе
Элементы.Продукция.ОтборСтрок = Неопределено;
КонецЕсли;
Элементы.МатериалыСкрыватьОтмененныеСтроки.Пометка = СкрыватьОтмененныеСтрокиМатериалы;
Элементы.ПродукцияСкрыватьОтмененныеСтроки.Пометка = СкрыватьОтмененныеСтрокиПродукция;
Если Не Объект.Ссылка.Пустая() Тогда
Настройки.Удалить("Объект.НеОтгружатьЧастями");
Настройки.Удалить("Объект.ПоступлениеОднойДатой");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
УстановитьВидимостьЭлементовФормыДатОтгрузки();
УстановитьВидимостьЭлементовФормыДатПоступления();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
Данные = МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр);
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаМатериалы Тогда
ОбработатьШтрихкоды(Данные, "Материалы");
Иначе
ОбработатьШтрихкоды(Данные, "Продукция");
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
КэшированныеЗначения.Штрихкоды.Очистить();
ДанныеШтрихкодов = Новый Массив;
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаМатериалы Тогда
ОбработатьШтрихкоды(ДанныеШтрихкодов, "Материалы");
Иначе
ОбработатьШтрихкоды(ДанныеШтрихкодов, "Продукция");
КонецЕсли;
КонецЕсли;
Если ВзаиморасчетыКлиент.НуженВызовОбработкиОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда
ИзмененаОплатаСервер(ИмяСобытия, Параметр);
КонецЕсли;
Если ИмяСобытия = "ИзмененРеквизитЗависящийОтСтатуса"
И Параметр.УникальныйИдентификатор = УникальныйИдентификатор Тогда
Если Объект.Согласован Тогда
Объект.Согласован = Ложь;
КонецЕсли;
ПодключитьОбработчикОжидания("Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса", 0.1, Истина);
КонецЕсли;
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбмена(ЭтаФорма, Истина);
КонецЕсли;
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СобытияФормКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПодключитьОбработчикОжидания("Подключаемый_ПриИзмененииМодифицированностиФормы", 1);
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
ПринудительноЗакрытьФорму = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ФормаМодифицирована = Неопределено;
Подключаемый_ПриИзмененииМодифицированностиФормы();
ПараметрыОповещения = Новый Массив;
Если Объект.ПереработкаПоЗаказу Тогда
Для каждого ДанныеСтроки Из Объект.Услуги Цикл
ПараметрыОповещения.Добавить(ДанныеСтроки.Распоряжение);
КонецЦикла;
Для каждого ЭлементСписка Из ИсходныеРаспоряжения Цикл
Если ПараметрыОповещения.Найти(ЭлементСписка.Значение) = Неопределено Тогда
ПараметрыОповещения.Добавить(ЭлементСписка.Значение);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Оповестить("Запись_ЗаказПереработчику", ПараметрыОповещения, Объект.Ссылка);
ОповеститьОбИзменении(Объект.Ссылка);
ОбеспечениеВДокументахКлиент.ПослеЗаписи(ЭтотОбъект, "Подключаемый_ПроверитьВыполнениеЗаданияРаспределенияЗапасов");
ВзаиморасчетыКлиент.ФормаПослеЗаписи(ЭтаФорма);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
ОбщегоНазначенияУТКлиент.ВыполнитьДействияПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ЗаказПереработчику.Форма.ФормаДокумента.Событие.ОбработкаВыбора");
Если ИсточникВыбора.ИмяФормы = "Обработка.СостояниеОбеспеченияЗаказов.Форма.Форма" Тогда
Если Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства") Тогда
Иначе
АдресТаблицыДвижений = ЗаполнитьОбеспечениеИзФормыСостоянияОбеспечения(
ВыбранноеЗначение.КодДействия,
ВыбранноеЗначение.АдресАналитик,
ВыбранноеЗначение.ПараметрыЗаполнения);
КонецЕсли;
ВыполнитьОбработкуОповещения(ВыбранноеЗначение.ВыполняемоеОповещение, АдресТаблицыДвижений);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборМногооборотнойТары.Форма.Форма" Тогда
ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(ВыбранноеЗначение.АдресМногооборотнойТарыВХранилище);
МногооборотнаяТараКлиент.ОповеститьПользователяОЗаполненииМногооборотнойТарой();
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
Если ВыбранноеЗначение.ИмяТЧ = "ОбеспечениеМатериаламиИРаботами" Тогда
Иначе
НоменклатураКлиент.ОбработатьУказаниеСерии(
ЭтаФорма,
ПараметрыУказанияСерий,
ВыбранноеЗначение);
КонецЕсли;
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументПродажи.Форма.Форма" Тогда
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаМатериалы Тогда
ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение,"Материалы");
ИначеЕсли Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаМатериалыЭтапов Тогда
ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение,"РедактированиеЭтаповОбеспечениеМатериаламиИРаботами");
КонецЕсли;
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия" Тогда
РезультатОтмены = СкорректироватьСтрокиЗаказа(ВыбранноеЗначение);
ПоказатьОповещениеПользователя(НСтр("ru = 'Отмена неотработанных строк'"), , РезультатОтмены.Оповещение);
ИначеЕсли ИсточникВыбора <> Неопределено
И ТипЗнч(ИсточникВыбора) = Тип("ФормаКлиентскогоПриложения")
И ИсточникВыбора.ИмяФормы = "ОбщаяФорма.ВводДолиСтоимости" Тогда
ТекущиеДанные = ТекущийЭлемент.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Модифицированность = Истина;
ОбработкаВводаДолиСтоимости(ТекущийЭлемент, ТекущиеДанные, ВыбранноеЗначение);
КонецЕсли;
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Материалы, ДатаОтгрузкиОбязательна, СкладОбязателен);
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ВидЦеныПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.ВидЦены)
И (Объект.ВозвратныеОтходы.Количество() + Объект.Материалы.Количество()) > 0 Тогда
ПоказатьВопрос(Новый ОписаниеОповещения("ВидЦеныПриИзмененииЗавершение", ЭтотОбъект), НСтр("ru = 'Перезаполнить цены в табличных частях документа?'"), РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВидЦеныПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
КодОтвета = РезультатВопроса;
Если КодОтвета = КодВозвратаДиалога.Да Тогда
ЦеныРассчитаны = Ложь;
ПриИзмененииВидаЦеныСервер(ЦеныРассчитаны);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, Объект.ВидЦены);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнятьВидЦенПоУмолчаниюПриИзменении(Элемент)
Если ЗаполнятьВидыЦенПоУмолчанию Тогда
ДоступныеВидыЦен = ОпределитьДоступныеВидыЦен();
Если ДоступныеВидыЦен.Количество() = 1 Тогда
Объект.ВидЦены = ДоступныеВидыЦен[0];
Иначе
ЗаполнятьВидыЦенПоУмолчанию = Ложь;
ПоказатьПредупреждение(Неопределено, НСтр("ru='Не найден вид цен по умолчанию'"));
Возврат;
КонецЕсли;
Если (Объект.ВозвратныеОтходы.Количество() + Объект.Материалы.Количество()) > 0 Тогда
ПоказатьВопрос(
Новый ОписаниеОповещения("ЗаполнятьВидЦенПоУмолчаниюПриИзмененииЗавершение", ЭтотОбъект),
НСтр("ru = 'Перезаполнить цены в табличных частях документа?'"),
РежимДиалогаВопрос.ДаНет);
КонецЕсли;
ИначеЕсли ЗначениеЗаполнено(Объект.ВидЦены) Тогда
Объект.ВидЦены = ПредопределенноеЗначение("Справочник.ВидыЦен.ПустаяСсылка");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнятьВидЦенПоУмолчаниюПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
КодОтвета = РезультатВопроса;
Если КодОтвета = КодВозвратаДиалога.Да Тогда
ЦеныРассчитаны = Ложь;
ПриИзмененииВидаЦеныСервер(ЦеныРассчитаны);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, Объект.ВидЦены);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
Если Не ЗначениеЗаполнено(Объект.Партнер) Тогда
ДоставкаТоваровКлиентСервер.ОчиститьРеквизитыДоставки(Элементы, Объект);
Возврат;
КонецЕсли;
ПриИзмененииПартнераСервер();
КонецПроцедуры
&НаКлиенте
Процедура КонтактноеЛицоПриИзменении(Элемент)
Если Объект.КонтактноеЛицо.Пустая() Тогда
Возврат;
ИначеЕсли Не Объект.Партнер.Пустая() Тогда
Возврат;
КонецЕсли;
ПартнерИзменился = Ложь;
ПриИзмененииКонтактногоЛицаСервер(ПартнерИзменился);
Если ПартнерИзменился И Не ЗначениеЗаполнено (Объект.Партнер) Тогда
ДоставкаТоваровКлиентСервер.ОчиститьРеквизитыДоставки(Элементы, Объект);
Возврат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НомерВходящегоДокументаОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка)
ПроверитьНаличиеЗаказовПоДаннымПереработчика(Текст);
КонецПроцедуры
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
ПриИзмененииКонтрагентаСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДоговорПриИзменении(Элемент)
ПриИзмененииДоговораСервер();
КонецПроцедуры
&НаКлиенте
Процедура СтатусПриИзменении(Элемент)
Если Объект.Согласован
И Объект.Статус <> ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.КОбеспечению")
И Объект.Статус <> ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.КИсполнению")
И Объект.Статус <> ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.Закрыт") Тогда
Объект.Согласован = Ложь;
КонецЕсли;
ПриИзмененииСтатусаСервер();
КонецПроцедуры
&НаКлиенте
Процедура ВалютаПриИзменении(Элемент)
СпособРаспределенияЗатратНаВыходныеИзделияПриИзмененииНаСервере();
Если ЗначениеЗаполнено(Объект.Валюта) Тогда
ПересчитатьСуммы = Истина;
Если Не ЗначениеЗаполнено(ВалютаДокумента) Тогда
ПересчитатьСуммы = Ложь;
ИначеЕсли ВалютаДокумента = Объект.Валюта Тогда
ПересчитатьСуммы = Ложь;
ИначеЕсли Объект.Сумма = 0
И Объект.ВозвратныеОтходы.Итог("Цена") = 0
И Объект.Материалы.Итог("Цена") = 0
И Объект.Услуги.Итог("Сумма") = 0 Тогда
ПересчитатьСуммы = Ложь;
КонецЕсли;
Если ПересчитатьСуммы Тогда
ТекстВопроса = НСтр("ru='Пересчитать суммы в документе в валюту ""%Валюта%""?'");
ТекстВопроса = СтрЗаменить(ТекстВопроса, "%Валюта%", Объект.Валюта);
ОписаниеОповещения = Новый ОписаниеОповещения("ПересчитатьСуммыПриИзмененииВалюты", ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ВалютаПриИзмененииЗавершение(ПересчитатьСуммы);
Иначе
ВалютаДокумента = Объект.Валюта;
ВалютаПриИзмененииНаСервере();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ПриИзмененииОрганизацииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ПриИзмененииДатыСервер();
КонецПроцедуры
&НаКлиенте
Процедура ЖелаемаяДатаПоступленияНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
МаксДатаАванса = МаксимальнаяДатаАванса();
Если ЗначениеЗаполнено(МаксДатаАванса) Тогда
ПредставлениеМаксДатаАванса = НСтр("ru='%МаксДатаАванса%'");
ПредставлениеМаксДатаАванса = СтрЗаменить(ПредставлениеМаксДатаАванса, "%МаксДатаАванса%", Формат(МаксДатаАванса,"ДЛФ=DD"));
СписокВыбора = Новый СписокЗначений;
СписокВыбора.Добавить(МаксДатаАванса, ПредставлениеМаксДатаАванса);
ПоказатьВыборИзСписка(Новый ОписаниеОповещения("ЖелаемаяДатаПоступленияНачалоВыбораИзСпискаЗавершение", ЭтотОбъект), СписокВыбора, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДатаОтгрузкиПриИзменении(Элемент)
ЗаполнитьДатуОтгрузкиСервер(Объект.ДатаОтгрузки, "Материалы");
КонецПроцедуры
&НаКлиенте
Процедура НеОтгружатьЧастямиПриИзменении(Элемент)
НеОтгружатьЧастямиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ПоступлениеОднойДатойПриИзменении(Элемент)
ПриИзмененииПоступлениеОднойДатойСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДатаПоступленияПриИзменении(Элемент)
ЗаполнитьДатыПоступленияСервер(Объект.ДатаПоступления);
КонецПроцедуры
&НаКлиенте
Процедура ВернутьМногооборотнуюТаруПриИзменении(Элемент)
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура МенеджерПриИзменении(Элемент)
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Менеджер");
КонецПроцедуры
&НаКлиенте
Процедура СуммаПриИзменении(Элемент)
ПриИзмененииСуммыУслугиСервер();
КонецПроцедуры
&НаКлиенте
Процедура СтавкаНДСПриИзменении(Элемент)
ПриИзмененииСуммыУслугиСервер();
КонецПроцедуры
&НаКлиенте
Процедура СуммаНДСПриИзменении(Элемент)
ПриИзмененииСтавкиНДССервер();
КонецПроцедуры
&НаКлиенте
Процедура НоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Новый Структура("Номенклатура, Характеристика, ХарактеристикиИспользуются, СтавкаНДС, Сумма, СуммаНДС, СуммаСНДС");
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, Объект);
ТекущаяСтрока.ХарактеристикиИспользуются = ХарактеристикиИспользуются;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВТЧ(ЭтаФорма);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", Объект.Характеристика);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Объект.СтавкаНДС = ТекущаяСтрока.СтавкаНДС;
Объект.СуммаНДС = ТекущаяСтрока.СуммаНДС;
Объект.СуммаСНДС = ТекущаяСтрока.СуммаСНДС;
ХарактеристикиИспользуются = ТекущаяСтрока.ХарактеристикиИспользуются;
Элементы.Характеристика.Доступность = ХарактеристикиИспользуются;
Объект.ПроверятьУказаниеРаботы = Истина;
ОбновитьДанныеТаблицыУслуг(Объект);
КонецПроцедуры
&НаКлиенте
Процедура ХарактеристикаПриИзменении(Элемент)
ОбновитьДанныеТаблицыУслуг(Объект);
КонецПроцедуры
&НаКлиенте
Процедура СтатьяКалькуляцииПриИзменении(Элемент)
ОбновитьДанныеТаблицыУслуг(Объект);
КонецПроцедуры
&НаКлиенте
Процедура ГруппировкаЗатратПриИзменении(Элемент)
Если ГруппировкаЗатратДоИзменения = Объект.ГруппировкаЗатрат Тогда
Возврат;
КонецЕсли;
Если (Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства")
ИЛИ ГруппировкаЗатратДоИзменения = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства")
ИЛИ Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЗаказамНаПроизводство")
ИЛИ ГруппировкаЗатратДоИзменения = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЗаказамНаПроизводство")
)
И (Объект.Продукция.Количество() <> 0
ИЛИ Объект.ВозвратныеОтходы.Количество() <> 0
ИЛИ Объект.Материалы.Количество() <> 0
)
Тогда
ТекстВопроса = НСтр("ru = 'Продукция, возвратные отходы, сырье и материалы будут очищены.
|Изменить группировку затрат?'");
ОписаниеОповещения = Новый ОписаниеОповещения("ГруппировкаЗатратПриИзмененииЗавершение", ЭтотОбъект);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ГруппировкаЗатратПриИзмененииЗавершение(КодВозвратаДиалога.Да, Неопределено);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СпособМестоДоставкиПеревозчикПриИзменении(Элемент)
ЗаполнитьУстановитьРеквизитыДоставкиСервер(Элемент.Имя);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПриИзменении(Элемент)
ОбработатьИзменениеАдреса(Элемент, "АдресДоставки");
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначение]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставки");
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, Объект, Элемент.Имя, ВыбранноеЗначение);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаПриИзменении(Элемент)
ОбработатьИзменениеАдреса(Элемент, "АдресДоставкиПеревозчика");
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитовАдресовДоставки.ИмяРеквизитаАдресаДоставкиЗначение]);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ИменаРеквизитовАдресовДоставки = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки("АдресДоставкиПеревозчика");
ДоставкаТоваровКлиент.ОткрытьФормуВыбораАдресаИОбработатьРезультат(
Элемент,
Объект,
ИменаРеквизитовАдресовДоставки,
СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура АдресДоставкиПеревозчикаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДоставкаТоваровКлиент.АдресДоставкиОбработкаВыбора(Элементы, Объект, Элемент.Имя, ВыбранноеЗначение);
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ТекущаяСтраница.Имя = "ГруппаДополнительно"
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
ВзаиморасчетыКлиент.ОбновитьТекстГиперссылкиЭтапыОплаты(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура НадписьЗаголовокЗаказыОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
Если НавигационнаяСсылкаФорматированнойСтроки = "#ДобавитьРаспоряжения" Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПроизводствоОднойДатойПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповДатаПроизводстваПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповНеОтгружатьЧастямиПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповДатаОтгрузкиПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура СпособРаспределенияЗатратНаВыходныеИзделияПриИзменении(Элемент)
СпособРаспределенияЗатратНаВыходныеИзделияПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ЗакупкаПодДеятельностьОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура СостояниеОбеспеченияДинамическаяСтруктураНажатие(Элемент)
Возврат;
КонецПроцедуры
#Область Обеспечение
&НаКлиенте
Процедура МатериалыГиперссылкаСостояниеОбеспеченияНажатие(Элемент)
ГиперссылкаСостояниеОбеспеченияНажатиеОбщий();
КонецПроцедуры
&НаКлиенте
Процедура МатериалыГиперссылкаСостояниеОбеспеченияОтгружаетсяНажатие(Элемент)
ГиперссылкаСостояниеОбеспеченияНажатиеОбщий();
КонецПроцедуры
&НаКлиенте
Процедура МатериалыГиперссылкаСостояниеОбеспеченияПроблемаНажатие(Элемент)
ГиперссылкаСостояниеОбеспеченияНажатиеОбщий();
КонецПроцедуры
&НаКлиенте
Процедура МатериалыГиперссылкаСостояниеОбеспеченияЗаказовНаПроизводствоНажатие(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыЭтаповГиперссылкаСостояниеОбеспеченияОтгружаетсяНажатие(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыЭтаповГиперссылкаСостояниеОбеспеченияПроблемаНажатие(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыЭтаповГиперссылкаСостояниеОбеспеченияНажатие(Элемент)
Возврат;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыПродукция
&НаКлиенте
Процедура ПродукцияПриИзменении(Элемент)
ОпределитьКоличествоВыходныхИзделий(ЭтаФорма);
Если ВзаиморасчетыКлиент.ТабличнаяЧастьПриИзмененииЕстьИзменениеДатОтгрузок(ЭтотОбъект) Тогда
ПродукцияПриИзмененииНаСервере();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияПередУдалением(Элемент, Отказ)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Продукция, ЭтотОбъект);
ВзаиморасчетыКлиент.ТабличнаяЧастьПередУдалением(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияПослеУдаления(Элемент)
ПродукцияПослеУдаленияСервер();
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение, "Продукция");
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Продукция, ЭтотОбъект);
ТекущиеДанные = Элементы.Продукция.ТекущиеДанные;
Если НоваяСтрока Тогда
ТекущиеДанные.КодСтроки = 0;
КонецЕсли;
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, ТекущиеДанные, "Объект.Продукция");
ОграничениеТипаПолучателя(ТекущиеДанные, "ПродукцияПолучатель");
ВзаиморасчетыКлиент.ТабличнаяЧастьПриНачалеРедактирования(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТекущиеДанные = Элементы.Продукция.ТекущиеДанные;
Если Поле = Элементы.МатериалыЦена Тогда
Если ЗначениеЗаполнено(ТекущиеДанные.ВидЦены) И Не Объект.Согласован Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru='Для редактирования цены очистите вид цены'"),
Объект.Ссылка,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.Продукция", ТекущиеДанные.НомерСтроки, "ВидЦены"));
КонецЕсли;
ИначеЕсли (Поле = Элементы.ПродукцияДоляСтоимости
Или Поле = Элементы.ПродукцияДоляСтоимостиПроцент
Или Поле = Элементы.ПродукцияЕстьОшибкиЗаполненияДолиСтоимости)
И Объект.СпособРаспределенияЗатратНаВыходныеИзделия <> ПредопределенноеЗначение("Перечисление.СпособыРаспределенияЗатратНаВыходныеИзделия.ПоДолямСтоимости") Тогда
СтандартнаяОбработка = Ложь;
ОткрытьФормуВводаДолиСтоимости(ТекущиеДанные);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если НоваяСтрока
И ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элементы.Продукция.ТекущиеДанные;
КэшСтроки = РаботаСТабличнымиЧастямиКлиентСервер.КэшСтроки(Элементы.Продукция, ЭтотОбъект);
Если ТекущиеДанные <> Неопределено И Объект.ПоступлениеОднойДатой Тогда
ТекущиеДанные.ДатаПоступления = Объект.ДатаПоступления;
КонецЕсли;
Если Не ОтменаРедактирования Тогда
ЗаполнитьНомерГруппыЗатратВСтрокеПродукцииПередОкончаниемРедактирования(ТекущиеДанные, Объект, КэшСтроки, НоваяСтрока);
РезультатЗаполнения = ЗаполнитьУслугиПоПродукции(Объект);
ПриИзмененииСуммыУслуг(ЭтаФорма);
Если РезультатЗаполнения.УдаленыСтрокиМатериалов Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецЕсли;
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
Если НоваяСтрока Тогда
Если Не ОтменаРедактирования Тогда
ЗаполнитьПолучателяПоУмолчанию(ТекущиеДанные);
КонецЕсли;
ТребуетсяЗаполнитьДанныеРаспоряжения = Истина;
КонецЕсли;
Если ПроизводствоКлиент.НеобходимоРассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(
Элемент, ПараметрыРаспределенияЗатрат, КэшСтроки, НоваяСтрока) Тогда
ТекущиеДанные = Элементы.Продукция.ТекущиеДанные;
Группировки = Новый Массив;
Группировки.Добавить(КэшСтроки.НомерГруппыЗатрат);
Группировки.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Продукция.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьДолюСтоимости", ПараметрыРаспределенияЗатрат);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Продукция"));
ПроизводствоКлиентСервер.ДобавитьВСтруктуруДействияПроверитьЗаполнитьСкладПроизводства(Объект.Подразделение, СтруктураДействий, "Получатель");
ДоходыИРасходыКлиентСервер.ВставитьДействиеЗаполнитьСтатьюАналитикуРасходовНоменклатуры(
СтруктураДействий,
ЭтотОбъект,
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию"),
Объект.Организация,
"Объект.Продукция");
ПродукцияНоменклатураПриИзмененииНаСервере(ТекущаяСтрока.ПолучитьИдентификатор(), СтруктураДействий, КэшированныеЗначения);
ПриИзмененииСписатьНаРасходы("Продукция");
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ТребуетсяЗаполнитьДанныеРаспоряжения = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Продукция.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Продукция"));
СтруктураДействий.Вставить("ПроверитьЗаполнитьДолюСтоимости", ПараметрыРаспределенияЗатрат);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
Если Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции")
ИЛИ Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям") Тогда
ПродукцияХарактеристикаПриИзмененииНаСервере(Элементы.Продукция.ТекущаяСтрока);
КонецЕсли;
ТребуетсяЗаполнитьДанныеРаспоряжения = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Продукция.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ПересчитатьДолюСтоимости", ПараметрыРаспределенияЗатрат);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ТребуетсяЗаполнитьДанныеРаспоряжения = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Продукция.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ПересчитатьДолюСтоимости", ПараметрыРаспределенияЗатрат);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ТребуетсяЗаполнитьДанныеРаспоряжения = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияОтмененоПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Продукция.ТекущиеДанные;
Если Не ТекущаяСтрока.Отменено Тогда
ТекущаяСтрока.ПричинаОтмены = ПредопределенноеЗначение("Справочник.ПричиныОтменыЗаказовПоставщикам.ПустаяСсылка");
КонецЕсли;
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияГруппаЗатратНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ВыбратьГруппуЗатрат("Продукция");
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияГруппаЗатратОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Продукция.ТекущиеДанные;
ОткрытьРаспоряжениеГруппы(ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияГруппаЗатратОчистка(Элемент, СтандартнаяОбработка)
ТекущиеДанные = Элементы.Продукция.ТекущиеДанные;
ТекущиеДанные.НомерГруппыЗатрат = 0;
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияПолучательПриИзменении(Элемент)
ТекущиеДанные = Элементы.Продукция.ТекущиеДанные;
ПриИзмененииПолучателя(ТекущиеДанные);
ТребуетсяУточнитьДанныеРаспоряжения = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияСписатьНаРасходыПриИзменении(Элемент)
ПриИзмененииСписатьНаРасходы("Продукция");
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияСтатьяРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтатьяРасходовВыбор(Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияСтатьяРасходовПриИзменении(Элемент)
СтатьяРасходовПриИзменении(Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияАналитикаРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыВозвратныеОтходы
&НаКлиенте
Процедура ВозвратныеОтходыПриИзменении(Элемент)
ОпределитьКоличествоВыходныхИзделий(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыПослеУдаления(Элемент)
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ТребуетсяУточнитьДанныеРаспоряжения = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение, "ВозвратныеОтходы");
Если Окно <> Неопределено Тогда
Окно.Активизировать();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущиеДанные = Элементы.ВозвратныеОтходы.ТекущиеДанные;
Если НоваяСтрока Тогда
ТекущиеДанные.КодСтроки = 0;
Если Не Копирование Тогда
ТекущиеДанные.ВидЦены = Объект.ВидЦены;
КонецЕсли;
КонецЕсли;
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, ТекущиеДанные, "Объект.ВозвратныеОтходы");
ОграничениеТипаПолучателя(ТекущиеДанные, "ВозвратныеОтходыПолучатель");
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле = Элементы.ВозвратныеОтходыЦена Тогда
ТекущиеДанные = Элементы.ВозвратныеОтходы.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущиеДанные.ВидЦены) И Не Объект.Согласован Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru='Для редактирования цены очистите вид цены'"),
Объект.Ссылка,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.ВозвратныеОтходы", ТекущиеДанные.НомерСтроки, "ВидЦены"));
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если НоваяСтрока
И ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элементы.ВозвратныеОтходы.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено И Объект.ПоступлениеОднойДатой Тогда
ТекущиеДанные.ДатаПоступления = Объект.ДатаПоступления;
КонецЕсли;
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
Если НоваяСтрока Тогда
Если Не ОтменаРедактирования Тогда
ЗаполнитьПолучателяПоУмолчанию(ТекущиеДанные);
КонецЕсли;
ТребуетсяУточнитьДанныеРаспоряжения = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвратныеОтходы());
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
ПроизводствоКлиентСервер.ДобавитьВСтруктуруДействияПроверитьЗаполнитьСкладПроизводства(Объект.Подразделение, СтруктураДействий, "Получатель");
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
ДоходыИРасходыКлиентСервер.ВставитьДействиеЗаполнитьСтатьюАналитикуРасходовНоменклатуры(
СтруктураДействий,
ЭтотОбъект,
ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СписаниеТоваровПоТребованию"),
Объект.Организация,
"Объект.ВозвратныеОтходы");
ВозвратныеОтходыНоменклатураПриИзмененииНаСервере(ТекущаяСтрока.ПолучитьИдентификатор(), СтруктураДействий, КэшированныеЗначения);
ПриИзмененииСписатьНаРасходы("ВозвратныеОтходы");
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ТребуетсяУточнитьДанныеРаспоряжения = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвратныеОтходы());
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ТребуетсяУточнитьДанныеРаспоряжения = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
Если ТекущаяСтрока.Количество > 0 Тогда
СтруктураДействий.Вставить("ПересчитатьЦенуЗаУпаковку", ТекущаяСтрока.Количество);
ИначеЕсли ЗначениеЗаполнено(ТекущаяСтрока.ВидЦены) Тогда
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвратныеОтходы());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ТребуетсяУточнитьДанныеРаспоряжения = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок("ВозвратныеОтходы", СтруктураДействий);
СтруктураДействий.Вставить("ПересчитатьСумму");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ТребуетсяУточнитьДанныеРаспоряжения = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыВидЦеныПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвратныеОтходы());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвратныеОтходы());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ЗначениеЗаполнено(ТекущаяСтрока.ВидЦены) И ТекущаяСтрока.Цена <> 0 Тогда
ТекущаяСтрока.ВидЦены = Неопределено;
КонецЕсли;
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьЦенуПоСумме", "КоличествоУпаковок");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвратныеОтходы());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыОтмененоПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
Если Не ТекущаяСтрока.Отменено Тогда
ТекущаяСтрока.ПричинаОтмены = ПредопределенноеЗначение("Справочник.ПричиныОтменыЗаказовПоставщикам.ПустаяСсылка");
КонецЕсли;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвратныеОтходы());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыГруппаЗатратНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ВыбратьГруппуЗатрат("ВозвратныеОтходы");
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыГруппаЗатратОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.ВозвратныеОтходы.ТекущиеДанные;
ОткрытьРаспоряжениеГруппы(ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыГруппаЗатратОчистка(Элемент, СтандартнаяОбработка)
ТекущиеДанные = Элементы.ВозвратныеОтходы.ТекущиеДанные;
ТекущиеДанные.НомерГруппыЗатрат = 0;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыПолучательПриИзменении(Элемент)
ТекущиеДанные = Элементы.ВозвратныеОтходы.ТекущиеДанные;
ПриИзмененииПолучателя(ТекущиеДанные);
ТребуетсяУточнитьДанныеРаспоряжения = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыСписатьНаРасходыПриИзменении(Элемент)
ПриИзмененииСписатьНаРасходы("ВозвратныеОтходы");
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыСтатьяРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтатьяРасходовВыбор(Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыСтатьяРасходовПриИзменении(Элемент)
СтатьяРасходовПриИзменении(Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыАналитикаРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСырьеИМатериалы
&НаКлиенте
Процедура МатериалыПослеУдаления(Элемент)
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Материалы, ДатаОтгрузкиОбязательна, СкладОбязателен);
ТребуетсяУточнитьДанныеРаспоряжения = Истина;
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаКлиенте
Процедура МатериалыПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если НоваяСтрока
И ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Элементы.Материалы.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено И Объект.НеОтгружатьЧастями Тогда
ТекущиеДанные.ДатаОтгрузки = Объект.ДатаОтгрузки;
КонецЕсли;
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
МногооборотнаяТараКлиент.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
Если НоваяСтрока Тогда
ТребуетсяУточнитьДанныеРаспоряжения = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущиеДанные = Элементы.Материалы.ТекущиеДанные;
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Материалы, ЭтотОбъект);
Если НоваяСтрока И Не Копирование Тогда
ТекущиеДанные.ВидЦены = Объект.ВидЦены;
КонецЕсли;
Если НоваяСтрока Тогда
ТекущиеДанные.КодСтроки = 0;
СкладыКлиентСервер.ЗаполнитьСкладПоУмолчанию(
ИспользоватьНесколькоСкладов,
СкладПоУмолчанию,
ТекущиеДанные);
КонецЕсли;
Если Копирование Тогда
СтруктураДействий = Новый Структура;
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ВариантОбеспечения,Доступно,СкладОбязателен,ДатаОтгрузкиОбязательна");
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущиеДанные.Склад, ПараметрыУказанияСерий));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Материалы, ДатаОтгрузкиОбязательна, СкладОбязателен);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ЗаказПереработчику.Форма.ФормаДокумента.Элементы.Материалы.Выбор");
Если Элемент.ТекущийЭлемент = Элементы.МатериалыДоступно И Не ТолькоПросмотр Тогда
СтандартнаяОбработка = Ложь;
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерийМатериалы(Неопределено);
Если ПараметрыФормы <> Неопределено Тогда
ОткрытьФорму("Обработка.ЗапросКоличестваИСерий.Форма", ПараметрыФормы, ЭтотОбъект);
КонецЕсли;
ИначеЕсли Поле = Элементы.МатериалыЦена Тогда
ТекущиеДанные = Элементы.Материалы.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущиеДанные.ВидЦены) И Не Объект.Согласован Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru='Для редактирования цены очистите вид цены'"),
Объект.Ссылка,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.Материалы", ТекущиеДанные.НомерСтроки, "ВидЦены"));
КонецЕсли;
ИначеЕсли Поле = Элементы.ПродукцияГруппаЗатрат Тогда
ТекущиеДанные = Элементы.Продукция.ТекущиеДанные;
Если ТекущиеДанные.НомерГруппыЗатрат = 0 Тогда
СтандартнаяОбработка = Ложь;
ВыбратьГруппуЗатрат("Продукция");
КонецЕсли;
ИначеЕсли Поле = Элементы.ВозвратныеОтходыГруппаЗатрат Тогда
ТекущиеДанные = Элементы.ВозвратныеОтходы.ТекущиеДанные;
Если ТекущиеДанные.НомерГруппыЗатрат = 0 Тогда
СтандартнаяОбработка = Ложь;
ВыбратьГруппуЗатрат("ВозвратныеОтходы");
КонецЕсли;
ИначеЕсли Поле = Элементы.МатериалыГруппаЗатрат Тогда
ТекущиеДанные = Элементы.Материалы.ТекущиеДанные;
Если ТекущиеДанные.НомерГруппыЗатрат = 0 Тогда
СтандартнаяОбработка = Ложь;
ВыбратьГруппуЗатрат("Материалы");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Материалы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыМатериалы());
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу", ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураСкладМатериалов = Новый Структура("Склад", СкладПоУмолчанию);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад",
ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруЗаполненияСкладаВСтрокеТЧ(СтруктураСкладМатериалов, Ложь));
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий));
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ВариантОбеспечения,ДоступноВДругихСтроках,СкладОбязателен,ДатаОтгрузкиОбязательна");
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Материалы"));
ДобавитьДействиеПроверитьЗаполнитьСклад("Материалы", ЭтаФорма, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ТребуетсяУточнитьДанныеРаспоряжения = Истина;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Материалы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыМатериалы());
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ВариантОбеспечения,ДоступноВДругихСтроках,СкладОбязателен,ДатаОтгрузкиОбязательна");
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Материалы"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Материалы, ДатаОтгрузкиОбязательна, СкладОбязателен);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ТребуетсяУточнитьДанныеРаспоряжения = Истина;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Материалы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыМатериалы());
Если ТекущаяСтрока.Количество > 0 Тогда
СтруктураДействий.Вставить("ПересчитатьЦенуЗаУпаковку", ТекущаяСтрока.Количество);
ИначеЕсли ЗначениеЗаполнено(ТекущаяСтрока.ВидЦены) Тогда
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
КонецЕсли;
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ТребуетсяУточнитьДанныеРаспоряжения = Истина;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Материалы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок("Материалы", СтруктураДействий);
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках");
СтруктураДействий.Вставить("ПересчитатьСумму");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыВидЦеныПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Материалы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыМатериалы());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Материалы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыМатериалы());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыОтмененоПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Материалы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыМатериалы());
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках,СкладОбязателен,ДатаОтгрузкиОбязательна");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Материалы, ДатаОтгрузкиОбязательна, СкладОбязателен);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Материалы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьЦенуПоСумме", "КоличествоУпаковок");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыМатериалы());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыСкладПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Материалы.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", ТекущаяСтрока.Склад, ПараметрыУказанияСерий));
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ВариантОбеспечения,ДоступноВДругихСтроках,СкладОбязателен,ДатаОтгрузкиОбязательна");
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая");
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Материалы, ДатаОтгрузкиОбязательна, СкладОбязателен);
ТребуетсяУточнитьДанныеРаспоряжения = Истина;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыСерияПриИзменении(Элемент)
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = Элементы.Материалы.ТекущиеДанные.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = Элементы.Материалы.ТекущиеДанные.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий, ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыГруппаЗатратНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ВыбратьГруппуЗатрат("Материалы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыГруппаЗатратОткрытие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.Материалы.ТекущиеДанные;
ОткрытьРаспоряжениеГруппы(ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыГруппаЗатратОчистка(Элемент, СтандартнаяОбработка)
ТекущиеДанные = Элементы.Материалы.ТекущиеДанные;
ТекущиеДанные.НомерГруппыЗатрат = 0;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыСкладНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерийМатериалы(ОбеспечениеВДокументахКлиентСервер.РежимПодборСкладов());
Если ТипЗнч(ПараметрыФормы) = Тип("Структура") Тогда
СтандартнаяОбработка = Ложь;
ОткрытьФорму(
"Обработка.ЗапросКоличестваИСерий.Форма",
ПараметрыФормы,
ЭтотОбъект,
,
,
,
Новый ОписаниеОповещения("ОбработатьВыборСкладаИСерииМатериалы", ЭтотОбъект, ПараметрыФормы));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыВариантОбеспеченияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбеспечениеВДокументахКлиент.ВариантОбеспеченияОбработкаВыбора(
ЭтотОбъект,
Элементы.Материалы.ТекущиеДанные,
ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыВариантОбеспеченияПриИзменении(Элемент)
Перем ПараметрыФормы;
Если ОбеспечениеВДокументахКлиент.ОткрытьФормуВыбораСкладаИСерий(ЭтотОбъект) Тогда
ВариантПолученияПараметров = ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия();
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерийМатериалы(ВариантПолученияПараметров);
КонецЕсли;
ОбеспечениеВДокументахКлиент.ВариантОбеспеченияПриИзменении(
ЭтотОбъект,
ПараметрыФормы,
"ОбработатьВыборСкладаИСерииМатериалы",
Истина,
"МатериалыВариантОбеспеченияПриИзмененииПослеВопроса");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыВариантОбеспеченияОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыОбособленноПриИзменении(Элемент)
СтрокаТаблицы = Элементы.Материалы.ТекущиеДанные;
ОбеспечениеВДокументахКлиент.ОбособленноПриИзменении(СтрокаТаблицы);
СтруктураДействий = Новый Структура();
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(СтрокаТаблицы, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыУслуги
&НаКлиенте
Процедура УслугиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ТекущиеДанные = Элементы.Услуги.ТекущиеДанные;
Если Поле = Элементы.УслугиГруппаЗатрат Тогда
СтандартнаяОбработка = Ложь;
Если ЗначениеЗаполнено(ТекущиеДанные.Распоряжение) Тогда
ПоказатьЗначение(, ТекущиеДанные.Распоряжение);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УслугиНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Услуги.ТекущиеДанные;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВТЧ(ЭтаФорма);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Услуги"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
Объект.ПроверятьУказаниеРаботы = Истина;
КонецПроцедуры
&НаКлиенте
Процедура УслугиСуммаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Услуги.ТекущиеДанные;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВТЧ(ЭтаФорма);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПриИзмененииСуммыУслуг(ЭтаФорма);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура УслугиСтавкаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Услуги.ТекущиеДанные;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВТЧ(ЭтаФорма);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПриИзмененииСуммыУслуг(ЭтаФорма);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура УслугиСуммаНДСПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Услуги.ТекущиеДанные;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВТЧ(ЭтаФорма);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПриИзмененииСуммыУслуг(ЭтаФорма);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыРедактированиеЭтаповВыходныеИзделия
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияПередНачаломИзменения(Элемент, Отказ)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияПередУдалением(Элемент, Отказ)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если НоваяСтрока
И ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияПослеУдаления(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияНоменклатураПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияХарактеристикаПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияУпаковкаПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияКоличествоУпаковокПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияПолучательПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияГруппаЗатратНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияГруппаЗатратОчистка(Элемент, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияГруппаЗатратОткрытие(Элемент, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияОтмененоПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияЭтапПотребительНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияСписатьНаРасходыПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияСтатьяРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияСтатьяРасходовПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияАналитикаРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыходныеИзделияАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыРедактированиеЭтаповПобочныеИзделия
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияПередНачаломИзменения(Элемент, Отказ)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияПередУдалением(Элемент, Отказ)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияНоменклатураПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияХарактеристикаПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияУпаковкаПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияКоличествоУпаковокПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияПолучательПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияГруппаЗатратНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияГруппаЗатратОчистка(Элемент, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияГруппаЗатратОткрытие(Элемент, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияОтмененоПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияЭтапПотребительНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если НоваяСтрока
И ОтменаРедактирования Тогда
Возврат;
КонецЕсли;
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияСписатьНаРасходыПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияСтатьяРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияСтатьяРасходовПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияАналитикаРасходовНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияАналитикаРасходовАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповПобочныеИзделияАналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыРедактированиеЭтаповОбеспечениеМатериаламиИРаботами
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиПередНачаломИзменения(Элемент, Отказ)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиПередУдалением(Элемент, Отказ)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиНоменклатураПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиХарактеристикаПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиУпаковкаПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиКоличествоУпаковокПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиСерияПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиПроизводитсяПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиСпецификацияПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиСкладПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиГруппаЗатратНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиГруппаЗатратОчистка(Элемент, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиГруппаЗатратОткрытие(Элемент, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиОтмененоПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиПослеУдаления(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиВариантОбеспеченияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиВариантОбеспеченияПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиВариантОбеспеченияОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиОбособленноПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиНазначениеОбеспеченияПриИзменении(Элемент)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиСкладНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиВариантОбеспеченияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Возврат;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
#Область КомандыТЧ_Продукция
&НаКлиенте
Процедура ПродукцияЗаполнитьДатуПоступления(Команда)
Если Элементы.Продукция.ВыделенныеСтроки.Количество() > 0 Тогда
ЗаполнитьДатуПоступления("Продукция", Элементы.Продукция.ВыделенныеСтроки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияКопированиеВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.Продукция.Количество();
ПолучитьСтрокиИзБуфераОбмена("Продукция");
КоличествоВставленных = Объект.Продукция.Количество() - КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияКопированиеСкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Продукция) Тогда
СкопироватьСтрокиНаСервере("Продукция");
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.Продукция.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияОбщееЗагрузитьДанныеИзТСД(Команда)
ОчиститьСообщения();
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
Новый ОписаниеОповещения("ПродукцияОбщееЗагрузитьИзТСДЗавершение", ЭтотОбъект),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияОбщееЗагрузитьИзТСДЗавершение(Результат, Параметры) Экспорт
Если Результат.Результат Тогда
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.Материалы Тогда
ОбработатьШтрихкоды(Результат.ТаблицаТоваров, "Материалы");
Иначе
ОбработатьШтрихкоды(Результат.ТаблицаТоваров, "Продукция");
КонецЕсли;
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияОбщееПодобратьТовары(Команда)
ПодобратьТовар("Продукция");
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияОбщееПоискПоШтрихкоду(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ПродукцияОбщееПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияОбщееПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода, "Продукция");
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияОбщееРазбитьСтроку(Команда)
ТаблицаФормы = Элементы.Продукция;
ДанныеТаблицы = Объект.Продукция;
Оповещение = Новый ОписаниеОповещения("ПродукцияОбщееРазбитьСтрокуЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияОбщееРазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Продукция.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
НоваяСтрока.КодСтроки = 0;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок("Продукция", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
ПроизводствоКлиентСервер.ПересчитатьДолюСтоимостиПриРазбиенииСтроки(НоваяСтрока, ТекущаяСтрока, Объект.СпособРаспределенияЗатратНаВыходныеИзделия);
Группировки = Новый Массив;
Группировки.Добавить(ТекущаяСтрока.НомерГруппыЗатрат);
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияОтменаСтрокОтменитьВыделенныеСтроки(Команда)
Если Не ПродажиКлиент.НеобходимоЗаполнениеПричиныОтменыВыделенныхСтрок(Объект.Продукция,
НСтр("ru='Выпускаемая продукция'"), Элементы.Продукция.ВыделенныеСтроки) Тогда
Возврат;
КонецЕсли;
ПричинаОтмены = ПредопределенноеЗначение("Справочник.ПричиныОтменыЗаказовПоставщикам.ПустаяСсылка");
Если ИспользоватьПричиныОтменыЗаказовПоставщикам Тогда
ОткрытьФорму("Справочник.ПричиныОтменыЗаказовПоставщикам.ФормаВыбора",,,,,,
Новый ОписаниеОповещения("ПродукцияОтменитьВыделенныеСтрокиЗавершение", ЭтотОбъект),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецЕсли;
ПродукцияОтменитьВыделенныеСтрокиФрагмент(ПричинаОтмены);
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияОтменитьВыделенныеСтрокиЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПричинаОтмены = Результат;
Если ПричинаОтмены = Неопределено Тогда
Возврат;
КонецЕсли;
ПродукцияОтменитьВыделенныеСтрокиФрагмент(ПричинаОтмены);
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияОтменитьВыделенныеСтрокиФрагмент(ПричинаОтмены)
Группировки = Новый Массив;
Для Каждого ТекСтрока Из Элементы.Продукция.ВыделенныеСтроки Цикл
СтрокаТаблицы = Объект.Продукция.НайтиПоИдентификатору(ТекСтрока);
Если СтрокаТаблицы <> Неопределено Тогда
СтрокаТаблицы.ПричинаОтмены = ПричинаОтмены;
СтрокаТаблицы.Отменено = Истина;
Группировки.Добавить(СтрокаТаблицы.НомерГруппыЗатрат);
КонецЕсли;
КонецЦикла;
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ПоказатьОповещениеПользователя(
НСтр("ru = 'Выделенные строки отменены'"),
,
НСтр("ru='Выделенные строки отменены.'"),
БиблиотекаКартинок.Информация32);
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияОтменаСтрокОтменитьНепоставленныеСтроки(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ЗаказПереработчику.Форма.ФормаДокумента.Команда.ПродукцияОтменитьНеотработанные");
Если Объект.Продукция.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru='В документе не заполнен список Выпускаемая продукция. Строки не могут быть отменены.'");
ПоказатьПредупреждение(,ТекстПредупреждения);
Возврат;
ИначеЕсли Объект.Продукция.НайтиСтроки(Новый Структура("Отменено", Ложь)).Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru='В документе для списка Выпускаемая продукция все строки уже отменены.'");
ПоказатьПредупреждение(,ТекстПредупреждения);
Возврат;
КонецЕсли;
ПричинаОтмены = ПредопределенноеЗначение("Справочник.ПричиныОтменыЗаказовПоставщикам.ПустаяСсылка");
Если ИспользоватьПричиныОтменыЗаказовПоставщикам Тогда
ОткрытьФорму("Справочник.ПричиныОтменыЗаказовПоставщикам.ФормаВыбора",,,,,,
Новый ОписаниеОповещения("ПродукцияОтменитьНепоставленныеСтрокиЗавершение", ЭтотОбъект),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецЕсли;
ПродукцияОтменитьНепоставленныеСтрокиСервер(ПричинаОтмены);
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияОтменитьНепоставленныеСтрокиЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПричинаОтмены = Результат;
Если ПричинаОтмены = Неопределено Тогда
Возврат;
КонецЕсли;
РезультатОтмены = ПродукцияОтменитьНепоставленныеСтрокиСервер(ПричинаОтмены);
ПоказатьОповещениеПользователя(НСтр("ru = 'Отмена неотработанных строк'"), , РезультатОтмены.Оповещение);
КонецПроцедуры
&НаСервере
Функция ПродукцияОтменитьНепоставленныеСтрокиСервер(ПричинаОтмены)
СтруктураКорректировкиСтрокЗаказа = ЗаказыСервер.СтруктураКорректировкиСтрокЗаказа();
СтруктураКорректировкиСтрокЗаказа.ОтменитьНеотработанныеСтроки = Истина;
СтруктураКорректировкиСтрокЗаказа.ИмяТабличнойЧасти = "Продукция";
СтруктураКорректировкиСтрокЗаказа.ПричинаОтмены = ПричинаОтмены;
Возврат СкорректироватьСтрокиЗаказа(СтруктураКорректировкиСтрокЗаказа);
КонецФункции
&НаКлиенте
Процедура ПродукцияОтменаСтрокСкрыватьОтмененныеСтроки(Команда)
СкрыватьОтмененныеСтрокиПродукция = Не СкрыватьОтмененныеСтрокиПродукция;
Если СкрыватьОтмененныеСтрокиПродукция Тогда
Элементы.Продукция.ОтборСтрок = Новый ФиксированнаяСтруктура("Отменено", Ложь);
Иначе
Элементы.Продукция.ОтборСтрок = Неопределено;
КонецЕсли;
Элементы.ПродукцияСкрыватьОтмененныеСтроки.Пометка = СкрыватьОтмененныеСтрокиПродукция;
КонецПроцедуры
&НаКлиенте
Процедура Продукция_ПодобратьПоЗаказамНаПроизводство(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура Продукция_Заполнение_Перезаполнить(Команда)
ЗаполнитьВозвратныеОтходыИМатериалы();
КонецПроцедуры
&НаКлиенте
Процедура ПродукцияЗаполнитьПолучателя(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ЗаказПереработчику.Форма.ФормаДокумента.Команда.Продукция_Заполнить_ЗаполнитьПолучателя");
ПараметрыТЧ = Новый Структура;
ПараметрыТЧ.Вставить("ИмяТЧФорма" , "Продукция");
ПараметрыТЧ.Вставить("ИмяТЧОбъект" , "Продукция");
ПараметрыТЧ.Вставить("ПредставлениеТЧ" , НСтр("ru = 'Продукция'"));
ОписаниеОповещения = Новый ОписаниеОповещения("ЗаполнитьПолучателяЗавершение",
ЭтотОбъект, Новый Структура("ПараметрыТЧ", ПараметрыТЧ));
ПроизводствоКлиент.ОткрытьФормуВыбораПолучателя(ЭтаФорма, Объект, ПараметрыТЧ,, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПолучателяЗавершение(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт
Если Не ЗначениеЗаполнено(ВыбранноеЗначение) Тогда
Возврат;
КонецЕсли;
ПараметрыТЧ = ДополнительныеПараметры.ПараметрыТЧ;
ВыделенныеСтроки = Элементы[ПараметрыТЧ.ИмяТЧФорма].ВыделенныеСтроки;
ЗаполнитьПолучателяНаСервере(ПараметрыТЧ, ВыделенныеСтроки, ВыбранноеЗначение);
ОповеститьОбОкончанииЗаполненияПолучателей();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПолучателяНаСервере(ПараметрыТЧ, ВыделенныеСтроки, Получатель)
ИмяТЧОбъект = ПараметрыТЧ.ИмяТЧОбъект;
ИмяТЧФорма = ПараметрыТЧ.ИмяТЧФорма;
Для каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
ДанныеСтроки = Объект[ИмяТЧОбъект].НайтиПоИдентификатору(ИдентификаторСтроки);
ДанныеСтроки.Получатель = Получатель;
КонецЦикла;
ТребуетсяУточнитьДанныеРаспоряжения = Истина;
ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧФорма, ВыделенныеСтроки);
КонецПроцедуры
#КонецОбласти
#Область КомандыТЧ_ВозвратныеОтходы
&НаКлиенте
Процедура ВозвратныеОтходыЗаполнитьДатуПоступления(Команда)
Если Элементы.ВозвратныеОтходы.ВыделенныеСтроки.Количество() > 0 Тогда
ЗаполнитьДатуПоступления("ВозвратныеОтходы", Элементы.ВозвратныеОтходы.ВыделенныеСтроки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыЗаполнитьЦеныПоВидуЦен(Команда)
Если Элементы.ВозвратныеОтходы.ВыделенныеСтроки.Количество() = 0 Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'В таблице отсутствуют выделенные строки. Выделите строки для заполнения цен'"),
Объект.Ссылка,
"Объект.ВозвратныеОтходы");
Возврат;
КонецЕсли;
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВидуЦен(Объект, "ВозвратныеОтходы", НСтр("ru='Возвратные отходы'")) Тогда
ПараметрыВыбораЦен = ЦеныПредприятияЗаполнениеКлиент.НовыйПараметрыЗаполненияВыбратьВидЦен();
ПараметрыВыбораЦен.ОписаниеОповещения =
Новый ОписаниеОповещения("ВозвратныеОтходыЗаполнитьЦеныПоВидуЦенЗавершение", ЭтотОбъект);
ПараметрыВыбораЦен.ЦенаВключаетНДС = Ложь;
ЦеныПредприятияЗаполнениеКлиент.ВыбратьВидЦен(ПараметрыВыбораЦен);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыЗаполнитьЦеныПоВидуЦенЗавершение(ВидЦен, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(ВидЦен) Тогда
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦенСервер(ВидЦен, "ВозвратныеОтходы", Истина);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, ВидЦен);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыКопированиеВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.ВозвратныеОтходы.Количество();
ПолучитьСтрокиИзБуфераОбмена("ВозвратныеОтходы");
КоличествоВставленных = Объект.ВозвратныеОтходы.Количество() - КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыКопированиеСкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.ВозвратныеОтходы) Тогда
СкопироватьСтрокиНаСервере("ВозвратныеОтходы");
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.ВозвратныеОтходы.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыЗагрузитьДанныеИзТСД(Команда)
ОчиститьСообщения();
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
Новый ОписаниеОповещения("ВозвратныеОтходыЗагрузитьИзТСДЗавершение", ЭтотОбъект),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыЗагрузитьИзТСДЗавершение(Результат, Параметры) Экспорт
Если Результат.Результат Тогда
ОбработатьШтрихкоды(Результат.ТаблицаТоваров, "ВозвратныеОтходы");
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыОбщееПодобратьТовары(Команда)
ПодобратьТовар("ВозвратныеОтходы");
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыОбщееПоискПоШтрихкоду(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ВозвратныеОтходыОбщееПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыОбщееПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода, "ВозвратныеОтходы");
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыОбщееРазбитьСтроку(Команда)
ТаблицаФормы = Элементы.ВозвратныеОтходы;
ДанныеТаблицы = Объект.ВозвратныеОтходы;
Оповещение = Новый ОписаниеОповещения("ВозвратныеОтходыОбщееРазбитьСтрокуЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыОбщееРазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.ВозвратныеОтходы.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
НоваяСтрока.КодСтроки = 0;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок("ВозвратныеОтходы", СтруктураДействий);
СтруктураДействий.Вставить("ПересчитатьСумму");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок("ВозвратныеОтходы", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыОтменаСтрокОтменитьВыделенныеСтроки(Команда)
Если Не ПродажиКлиент.НеобходимоЗаполнениеПричиныОтменыВыделенныхСтрок(Объект.ВозвратныеОтходы,
НСтр("ru='Возвратные отходы'"), Элементы.ВозвратныеОтходы.ВыделенныеСтроки) Тогда
Возврат;
КонецЕсли;
ПричинаОтмены = ПредопределенноеЗначение("Справочник.ПричиныОтменыЗаказовПоставщикам.ПустаяСсылка");
Если ИспользоватьПричиныОтменыЗаказовПоставщикам Тогда
ОткрытьФорму("Справочник.ПричиныОтменыЗаказовПоставщикам.ФормаВыбора",,,,,,
Новый ОписаниеОповещения("ВозвратныеОтходыОтменитьВыделенныеСтрокиЗавершение", ЭтотОбъект),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецЕсли;
ВозвратныеОтходыОтменитьВыделенныеСтрокиФрагмент(ПричинаОтмены);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыОтменитьВыделенныеСтрокиЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПричинаОтмены = Результат;
Если ПричинаОтмены = Неопределено Тогда
Возврат;
КонецЕсли;
ВозвратныеОтходыОтменитьВыделенныеСтрокиФрагмент(ПричинаОтмены);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыОтменитьВыделенныеСтрокиФрагмент(ПричинаОтмены)
СтруктураДействий = Новый Структура();
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвратныеОтходы());
Для Каждого ТекСтрока Из Элементы.ВозвратныеОтходы.ВыделенныеСтроки Цикл
СтрокаТаблицы = Объект.ВозвратныеОтходы.НайтиПоИдентификатору(ТекСтрока);
Если СтрокаТаблицы <> Неопределено Тогда
СтрокаТаблицы.ПричинаОтмены = ПричинаОтмены;
СтрокаТаблицы.Отменено = Истина;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(СтрокаТаблицы, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
КонецЦикла;
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ПоказатьОповещениеПользователя(
НСтр("ru = 'Выделенные строки отменены'"),
,
НСтр("ru='Выделенные строки отменены.'"),
БиблиотекаКартинок.Информация32);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыОтменаСтрокОтменитьНепоставленныеСтроки(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ЗаказПереработчику.Форма.ФормаДокумента.Команда.ВозвратныеОтходыОтменитьНеотработанные");
Если Объект.ВозвратныеОтходы.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru='В документе не заполнен список Возвратные отходы. Строки не могут быть отменены.'");
ПоказатьПредупреждение(,ТекстПредупреждения);
Возврат;
ИначеЕсли Объект.ВозвратныеОтходы.НайтиСтроки(Новый Структура("Отменено", Ложь)).Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru='В документе для списка Возвратные отходы все строки уже отменены.'");
ПоказатьПредупреждение(,ТекстПредупреждения);
Возврат;
КонецЕсли;
ПричинаОтмены = ПредопределенноеЗначение("Справочник.ПричиныОтменыЗаказовПоставщикам.ПустаяСсылка");
Если ИспользоватьПричиныОтменыЗаказовПоставщикам Тогда
ОткрытьФорму("Справочник.ПричиныОтменыЗаказовПоставщикам.ФормаВыбора",,,,,,
Новый ОписаниеОповещения("ВозвратныеОтходыОтменитьНепоставленныеСтрокиЗавершение", ЭтотОбъект),
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Возврат;
КонецЕсли;
ВозвратныеОтходыОтменитьНепоставленныеСтрокиСервер(ПричинаОтмены);
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыОтменитьНепоставленныеСтрокиЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПричинаОтмены = Результат;
Если ПричинаОтмены = Неопределено Тогда
Возврат;
КонецЕсли;
РезультатОтмены = ВозвратныеОтходыОтменитьНепоставленныеСтрокиСервер(ПричинаОтмены);
ПоказатьОповещениеПользователя(НСтр("ru = 'Отмена неотработанных строк'"), , РезультатОтмены.Оповещение);
КонецПроцедуры
&НаСервере
Функция ВозвратныеОтходыОтменитьНепоставленныеСтрокиСервер(ПричинаОтмены)
СтруктураКорректировкиСтрокЗаказа = ЗаказыСервер.СтруктураКорректировкиСтрокЗаказа();
СтруктураКорректировкиСтрокЗаказа.ОтменитьНеотработанныеСтроки = Истина;
СтруктураКорректировкиСтрокЗаказа.ИмяТабличнойЧасти = "ВозвратныеОтходы";
СтруктураКорректировкиСтрокЗаказа.ПричинаОтмены = ПричинаОтмены;
Возврат СкорректироватьСтрокиЗаказа(СтруктураКорректировкиСтрокЗаказа);
КонецФункции
&НаКлиенте
Процедура ВозвратныеОтходыОтменаСтрокСкрыватьОтмененныеСтроки(Команда)
СкрыватьОтмененныеСтрокиПродукция = Не СкрыватьОтмененныеСтрокиПродукция;
Если СкрыватьОтмененныеСтрокиПродукция Тогда
Элементы.ВозвратныеОтходы.ОтборСтрок = Новый ФиксированнаяСтруктура("Отменено", Ложь);
Иначе
Элементы.ВозвратныеОтходы.ОтборСтрок = Неопределено;
КонецЕсли;
Элементы.ВозвратныеОтходыСкрыватьОтмененныеСтроки.Пометка = СкрыватьОтмененныеСтрокиПродукция;
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходы_Заполнить_ЗаполнитьГруппуЗатрат(Команда)
ВыбратьГруппуЗатрат("ВозвратныеОтходы");
КонецПроцедуры
&НаКлиенте
Процедура ВозвратныеОтходыЗаполнитьПолучателя(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ЗаказПереработчику.Форма.ФормаДокумента.Команда.ВозвратныеОтходы_Заполнить_ЗаполнитьПолучателя");
ПараметрыТЧ = Новый Структура;
ПараметрыТЧ.Вставить("ИмяТЧФорма" , "ВозвратныеОтходы");
ПараметрыТЧ.Вставить("ИмяТЧОбъект" , "ВозвратныеОтходы");
ПараметрыТЧ.Вставить("ПредставлениеТЧ" , НСтр("ru = 'Возвратные отходы'"));
ОписаниеОповещения = Новый ОписаниеОповещения("ЗаполнитьПолучателяЗавершение",
ЭтотОбъект, Новый Структура("ПараметрыТЧ", ПараметрыТЧ));
ПроизводствоКлиент.ОткрытьФормуВыбораПолучателя(ЭтаФорма, Объект, ПараметрыТЧ,, ОписаниеОповещения);
КонецПроцедуры
#КонецОбласти
#Область КомандыТЧ_Материалы
&НаКлиенте
Процедура МатериалыЗаполнитьДатуОтгрузки(Команда)
ЗаполнитьДатуОтгрузки("Материалы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыЗаполнитьСклад(Команда)
ВыделенныеСтроки = Элементы.Материалы.ВыделенныеСтроки;
ТребуетсяЗаполнение = СкладыКлиент.ПроверитьВозможностьЗаполненияСкладовВТабличнойЧасти(
Объект,
Объект.Материалы,
НСтр("ru='Сырье и материалы для производства'"),
ВыделенныеСтроки);
Если ТребуетсяЗаполнение Тогда
МассивОтбора = Новый Массив();
МассивОтбора.Добавить(ПредопределенноеЗначение("Перечисление.ВыборГруппыСкладов.РазрешитьВЗаказах"));
МассивОтбора.Добавить(ПредопределенноеЗначение("Перечисление.ВыборГруппыСкладов.РазрешитьВЗаказахИНакладных"));
СтруктураОтбора = Новый Структура("ЭтоГруппа", Ложь);
СтруктураПараметров = Новый Структура("Отбор", СтруктураОтбора);
СтруктураПараметров.Вставить("Отбор", СтруктураОтбора);
СтруктураПараметров.Вставить("ВыборГруппИЭлементов", ИспользованиеГруппИЭлементов.Элементы);
ОписаниеОповещения = Новый ОписаниеОповещения(
"МатериалыЗаполнитьСкладЗавершение",
ЭтотОбъект,
Новый Структура("ВыделенныеСтроки", ВыделенныеСтроки));
ОткрытьФорму(
"Справочник.Склады.ФормаВыбора",
СтруктураПараметров,
ЭтаФорма,,,,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыЗаполнитьСкладЗавершение(Результат, ДополнительныеПараметры) Экспорт
ВыделенныеСтроки = ДополнительныеПараметры.ВыделенныеСтроки;
ВыбранныйСклад = Результат;
Если ЗначениеЗаполнено(ВыбранныйСклад) Тогда
ЗаполненоСтрок = ЗаполнитьСкладВВыделенныхСтрокахНаСервере("Материалы", ВыделенныеСтроки, ВыбранныйСклад);
СкладыКлиент.ПоказатьОповещениеОЗаполненииСкладаВТабличнойЧасти(
ВыбранныйСклад,
ЗаполненоСтрок,
ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыЗаполнитьЦеныПоВидуЦен(Команда)
Если Элементы.Материалы.ВыделенныеСтроки.Количество() = 0 Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
НСтр("ru = 'В таблице отсутствуют выделенные строки. Выделите строки для заполнения цен'"),
Объект.Ссылка,
"Объект.Материалы");
Возврат;
КонецЕсли;
Если ЦеныПредприятияЗаполнениеКлиент.НеобходимоЗаполнениеЦенПоВидуЦен(Объект, "Материалы", НСтр("ru='Сырье и материалы для производства'")) Тогда
ПараметрыВыбораЦен = ЦеныПредприятияЗаполнениеКлиент.НовыйПараметрыЗаполненияВыбратьВидЦен();
ПараметрыВыбораЦен.ОписаниеОповещения =
Новый ОписаниеОповещения("МатериалыЗаполнитьЦеныПоВидуЦенЗавершение", ЭтотОбъект);
ПараметрыВыбораЦен.ЦенаВключаетНДС = Ложь;
ЦеныПредприятияЗаполнениеКлиент.ВыбратьВидЦен(ПараметрыВыбораЦен);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыЗаполнитьЦеныПоВидуЦенЗавершение(ВидЦен, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(ВидЦен) Тогда
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦенСервер(ВидЦен, "Материалы", Истина);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияЦенПоВидуЦен(ЦеныРассчитаны, ВидЦен);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыКопированиеВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.Материалы.Количество();
ПолучитьСтрокиИзБуфераОбмена("Материалы");
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Материалы, ДатаОтгрузкиОбязательна, СкладОбязателен);
КоличествоВставленных = Объект.Материалы.Количество() - КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыКопированиеСкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Материалы) Тогда
СкопироватьСтрокиНаСервере("Материалы");
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.Материалы.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыОбщееЗагрузитьДанныеИзТСД(Команда)
ОчиститьСообщения();
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
Новый ОписаниеОповещения("МатериалыОбщееЗагрузитьИзТСДЗавершение", ЭтотОбъект),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыОбщееЗагрузитьИзТСДЗавершение(Результат, Параметры) Экспорт
Если Результат.Результат Тогда
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.Материалы Тогда
ОбработатьШтрихкоды(Результат.ТаблицаТоваров, "Материалы");
Иначе
ОбработатьШтрихкоды(Результат.ТаблицаТоваров, "Продукция");
КонецЕсли;
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыОбщееПодобратьТовары(Команда)
ПодобратьТовар("Материалы");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыОбщееПоискПоШтрихкоду(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("МатериалыОбщееПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыОбщееПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода, "Материалы");
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьМногооборотнойТарой(Команда)
МногооборотнаяТараКлиент.ПодобратьМногооборотнуюТару(
ЭтаФорма,
"Материалы",
"Номенклатура,Характеристика,Количество,Склад,ДатаОтгрузки");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыОбщееРазбитьСтроку(Команда)
ТаблицаФормы = Элементы.Материалы;
ДанныеТаблицы = Объект.Материалы;
Оповещение = Новый ОписаниеОповещения("МатериалыОбщееРазбитьСтрокуЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыОбщееРазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Материалы.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
НоваяСтрока.КодСтроки = 0;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок("Материалы", СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура МатериалыОтменаСтрокОтменитьВыделенныеСтроки(Команда)
Если Не ПродажиКлиент.НеобходимоЗаполнениеПричиныОтменыВыделенныхСтрок(Объект.Материалы,
НСтр("ru='Сырье и материалы'"), Элементы.Материалы.ВыделенныеСтроки) Тогда
Возврат;
КонецЕсли;
МатериалыОтменитьВыделенныеСтрокиСервер();
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Материалы, ДатаОтгрузкиОбязательна, СкладОбязателен);
ПоказатьОповещениеПользователя(НСтр("ru = 'Отмена выделенных строк'"), , НСтр("ru = 'Выделенные строки отменены'"));
КонецПроцедуры
&НаСервере
Процедура МатериалыОтменитьВыделенныеСтрокиСервер()
ВыделенныеСтроки = Элементы.Материалы.ВыделенныеСтроки;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыМатериалы());
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "СкладОбязателен,ДатаОтгрузкиОбязательна");
КэшированныеЗначения = Неопределено;
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого Идентификатор Из ВыделенныеСтроки Цикл
Строка = Объект.Материалы.НайтиПоИдентификатору(Идентификатор);
Строка.Отменено = Истина;
ОбрабатываемыеСтроки.Добавить(Строка);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Материалы,
КэшированныеЗначения);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Материалы, ДатаОтгрузкиОбязательна, СкладОбязателен);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаКлиенте
Процедура МатериалыОтменаСтрокОтменитьНеотработанныеСтроки(Команда)
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ЗаказПереработчику.Форма.ФормаДокумента.Команда.МатериалыОтменитьНеотработанные");
РезультатОтмены = МатериалыОтменитьНеотработанныеСервер();
ПоказатьОповещениеПользователя(НСтр("ru = 'Отмена неотработанных строк'"), , РезультатОтмены.Оповещение);
КонецПроцедуры
&НаСервере
Функция МатериалыОтменитьНеотработанныеСервер()
СтруктураКорректировкиСтрокЗаказа = ЗаказыСервер.СтруктураКорректировкиСтрокЗаказа();
СтруктураКорректировкиСтрокЗаказа.ОтменитьНеотработанныеСтроки = Истина;
СтруктураКорректировкиСтрокЗаказа.ИмяТабличнойЧасти = "Материалы";
Возврат СкорректироватьСтрокиЗаказа(СтруктураКорректировкиСтрокЗаказа);
КонецФункции
&НаКлиенте
Процедура МатериалыОтменаСтрокСкрыватьОтмененныеСтроки(Команда)
СкрыватьОтмененныеСтрокиМатериалы = Не СкрыватьОтмененныеСтрокиМатериалы;
Если СкрыватьОтмененныеСтрокиМатериалы Тогда
Элементы.Материалы.ОтборСтрок = Новый ФиксированнаяСтруктура("Отменено", Ложь);
Иначе
Элементы.Материалы.ОтборСтрок = Неопределено;
КонецЕсли;
Элементы.МатериалыСкрыватьОтмененныеСтроки.Пометка = СкрыватьОтмененныеСтрокиМатериалы;
КонецПроцедуры
&НаКлиенте
Процедура Материалы_Заполнить_ЗаполнитьГруппуЗатрат(Команда)
ВыбратьГруппуЗатрат("Материалы", Истина);
КонецПроцедуры
&НаКлиенте
Процедура Материалы_Заполнить_ЗаполнитьСтатьюКалькуляции(Команда)
ЗаполнитьСтатьюКалькуляции("Материалы", ПредопределенноеЗначение("Перечисление.ТипыЗатрат.Материальные"));
КонецПроцедуры
&НаКлиенте
Процедура МатериалыВключитьОбособленноеОбеспечение(Команда)
ОбеспечениеУстановитьДействие("ФЛАГ_ОБОСОБЛЕННО");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыВыключитьОбособленноеОбеспечение(Команда)
ОбеспечениеУстановитьДействие("ФЛАГ_НЕОБОСОБЛЕННО");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыКОбеспечению(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_КОБЕСПЕЧЕНИЮ");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыРезервироватьПоМереПоступления(Команда)
ОбеспечениеУстановитьДействие("ДЕЙСТВИЕ_РЕЗЕРВИРОВАТЬПОМЕРЕПОСТУПЛЕНИЯ");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыНеОбеспечивать(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_НЕОБЕСПЕЧИВАТЬ");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыОтгрузить(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_ОТГРУЗИТЬ");
КонецПроцедуры
&НаКлиенте
Процедура МатериалыРезервировать(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_РЕЗЕРВИРОВАТЬ");
КонецПроцедуры
&НаКлиенте
Процедура СоздатьКорректировкуНазначенияРезервирование(Команда)
ДанныеДокумента = ОбеспечениеВДокументахВызовСервера.ДанныеДокументаДляСозданияКорректировкиНазначения(Объект.Ссылка,
Новый Структура("ИдентификаторВХранилище,ЭтоСнятиеРезерва", УникальныйИдентификатор, Ложь));
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.НеСогласован") Тогда
МинимальныйСтатус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.КИсполнению");
ОбеспечениеКлиент.СообщитьОНеобходимомМинимальномСтатусеДокумента(Ложь, МинимальныйСтатус);
ИначеЕсли Модифицированность Или Не ДанныеДокумента.Проведен Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Для резервирования под назначение необходимо предварительно провести документ.'"));
Иначе
ОписаниеКоманды = Новый Структура();
ОписаниеКоманды.Вставить("ОбъектыОснований", ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Ссылка));
ОписаниеКоманды.Вставить("Форма", ЭтотОбъект);
ОписаниеКоманды.Вставить("АдресТоваров", ДанныеДокумента.АдресТоваров);
Если ДанныеДокумента.ЕстьТоварыКОбособленномуОбеспечению Тогда
Если ДанныеДокумента.Назначения.Количество() = 1 Тогда
ОписаниеКоманды.Вставить("Назначение", ДанныеДокумента.Назначения[0]);
СозданиеНаОснованииУТКлиент.ОткрытьМастерРезервирования(ОписаниеКоманды);
Иначе
ОписаниеКоманды.Вставить("Назначения", ДанныеДокумента.Назначения);
СозданиеНаОснованииУТКлиент.ОткрытьМастерМассовогоРезервирования(ОписаниеКоманды);
КонецЕсли;
Иначе
ОбеспечениеКлиент.СообщитьОбОтсутствииТовараКОбособленномуОбеспечению();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьКорректировкуНазначенияСнятиеРезерва(Команда)
ДанныеДокумента = ОбеспечениеВДокументахВызовСервера.ДанныеДокументаДляСозданияКорректировкиНазначения(Объект.Ссылка,
Новый Структура("ИдентификаторВХранилище,ЭтоСнятиеРезерва", УникальныйИдентификатор, Истина));
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.НеСогласован") Тогда
МинимальныйСтатус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.КИсполнению");
ОбеспечениеКлиент.СообщитьОНеобходимомМинимальномСтатусеДокумента(Ложь, МинимальныйСтатус);
ИначеЕсли Модифицированность Или Не ДанныеДокумента.Проведен Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Для снятия резерва под назначение необходимо предварительно провести документ.'"));
Иначе
ОписаниеКоманды = Новый Структура();
ОписаниеКоманды.Вставить("ОбъектыОснований", ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Ссылка));
ОписаниеКоманды.Вставить("Форма", ЭтотОбъект);
ОписаниеКоманды.Вставить("АдресТоваров", ДанныеДокумента.АдресТоваров);
Если ДанныеДокумента.ЕстьТоварыКСнятиюРезерва Тогда
Если ДанныеДокумента.Назначения.Количество() = 1 Тогда
ОписаниеКоманды.Вставить("Назначение", ДанныеДокумента.Назначения[0]);
СозданиеНаОснованииУТКлиент.ОткрытьМастерСнятияРезерва(ОписаниеКоманды);
Иначе
ОписаниеКоманды.Вставить("Назначения", ДанныеДокумента.Назначения);
СозданиеНаОснованииУТКлиент.ОткрытьМастерМассовогоСнятияРезерва(ОписаниеКоманды);
КонецЕсли;
Иначе
ОбеспечениеКлиент.СообщитьОбОтсутствииТовараКСнятиюРезерва();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область КомандыТЧ_Услуги
&НаКлиенте
Процедура Услуги_ВыбратьИЗаполнитьУслугу(Команда)
Если Элементы.Услуги.ВыделенныеСтроки.Количество() = 0 Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Для заполнения услуги необходимо выбрать строки.'"));
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый ОписаниеОповещения("Услуги_ВыбратьИЗаполнитьУслугуЗавершение", ЭтотОбъект);
ПараметрыОтбора = Новый Структура("ТипНоменклатуры", ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа"));
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
ПараметрыФормы.Вставить("МножественныйВыбор", Ложь);
ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", ПараметрыФормы,,,,, ОписаниеОповещения);
КонецПроцедуры
#КонецОбласти
#Область КомандыТЧ_РедактированиеЭтаповПродукция
&НаКлиенте
Процедура РедактированиеЭтапов_Продукция_РазбитьСтроку(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтапов_Продукция_ВставитьСтроки(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтапов_Продукция_СкопироватьСтроки(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтапов_Продукция_ОтменитьВыделенныеСтроки(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтапов_Продукция_СкрыватьОтмененныеСтроки(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтапов_Продукция_ЗаполнитьПолучателя(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура ЭтапыЗаполнитьПолучателяЗавершение(ВыбранноеЗначение, ДополнительныеПараметры) Экспорт
Возврат;
КонецПроцедуры
#КонецОбласти
#Область КомандыТЧ_РедактированиеЭтаповОтходы
&НаКлиенте
Процедура РедактированиеЭтапов_Отходы_РазбитьСтроку(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтапов_Отходы_ВставитьСтроки(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтапов_Отходы_СкопироватьСтроки(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтапов_Отходы_ОтменитьВыделенныеСтроки(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтапов_Отходы_СкрыватьОтмененныеСтроки(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтапов_Отходы_ЗаполнитьПолучателя(Команда)
Возврат;
КонецПроцедуры
#КонецОбласти
#Область КомандыТЧ_РедактированиеЭтаповОбеспечениеМатериаламиИРаботами
&НаКлиенте
Процедура РедактированиеЭтапов_Обеспечение_ПодобратьТовары(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтапов_Обеспечение_ЗаполнитьГруппуЗатрат(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтапов_Обеспечение_ЗаполнитьДатуОтгрузки(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтапов_Обеспечение_ВставитьСтроки(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтапов_Обеспечение_СкопироватьСтроки(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтапов_Обеспечение_РазбитьСтроку(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтапов_Обеспечение_ОтменитьВыделенныеСтроки(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтапов_Обеспечение_СкрыватьОтмененныеСтроки(Команда)
Возврат;
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВключитьОбособленноеОбеспечение(Команда)
Возврат
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповВыключитьОбособленноеОбеспечение(Команда)
Возврат
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповКОбеспечению(Команда)
Возврат
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповНеОбеспечивать(Команда)
Возврат
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповРезервироватьПоМереПоступления(Команда)
Возврат
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповОтгрузить(Команда)
Возврат
КонецПроцедуры
&НаКлиенте
Процедура РедактированиеЭтаповРезервировать(Команда)
Возврат;
КонецПроцедуры
#КонецОбласти
#Область ПрочиеКоманды
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
Если Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства") Тогда
ОчиститьСообщения();
ПринудительноЗакрытьФорму = Истина;
ПараметрыЗаписи = Новый Структура;
ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Проведение);
ПараметрыЗаписи.Вставить("РежимПроведения", РежимПроведенияДокумента.Неоперативный);
ПараметрыЗаписи.Вставить("ПринудительноЗакрытьФорму", Истина);
ПараметрыЗаписи.Вставить("НовыйОбъект", Не ЗначениеЗаполнено(Объект.Ссылка));
Если ПровестиИЗакрытьНаСервере(ПараметрыЗаписи) Тогда
ПослеЗаписи(ПараметрыЗаписи);
Иначе
ТекстИсключения = СтрШаблон(
НСтр("ru='Не удалось провести ""%1""'"),
?(ЗначениеЗаполнено(Объект.Ссылка), Объект.Ссылка, НСтр("ru='Заказ переработчику'")));
ВызватьИсключение ТекстИсключения;
КонецЕсли;
Иначе
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма, Истина);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПометкаУдаления(Команда)
ТекстВопроса = НСтр("ru='Пометить ""%1"" на удаление?'");
Если Объект.ПометкаУдаления Тогда
ТекстВопроса = НСтр("ru='Снять с ""%1"" пометку на удаление?'");
КонецЕсли;
ТекстВопроса = СтрШаблон(ТекстВопроса, Объект.Ссылка);
ПоказатьВопрос(
Новый ОписаниеОповещения("ПометкаУдаленияОбработчикОповещения", ЭтаФорма),
ТекстВопроса,
РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ПометкаУдаленияОбработчикОповещения(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
Объект.ПометкаУдаления = Не Объект.ПометкаУдаления;
ПринудительноЗакрытьФорму = Ложь;
ПараметрыЗаписи = Новый Структура;
ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.ОтменаПроведения);
ПараметрыЗаписи.Вставить("РежимПроведения", РежимПроведенияДокумента.Неоперативный);
ПараметрыЗаписи.Вставить("ПринудительноЗакрытьФорму", Ложь);
ПараметрыЗаписи.Вставить("НовыйОбъект", Не ЗначениеЗаполнено(Объект.Ссылка));
Записать(ПараметрыЗаписи);
КонецПроцедуры
#КонецОбласти
#Область ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура ЗачетОплаты(Команда)
ВзаиморасчетыКлиент.ЗачетОплаты(ЭтаФорма, Элементы.ЗачетОплатыФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма, Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма, Истина);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область УсловноеОформление
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.МатериалыСтатьяКалькуляции.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СтатьяКалькуляции.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.УслугиСтатьяКалькуляции.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПартионныйУчетВерсии22");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
#Область СтандартноеОформление
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(
ЭтаФорма,
"СерииВсегдаВТЧТовары",
"МатериалыСерия",
"Объект.Материалы.СтатусУказанияСерий",
"Объект.Материалы.ТипНоменклатуры");
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(
ЭтаФорма,
"ПродукцияНазначение",
"Объект.Продукция.ТипНоменклатуры");
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(
ЭтаФорма,
"ВозвратныеОтходыНазначение",
"Объект.ВозвратныеОтходы.ТипНоменклатуры");
ЗаказыСервер.УстановитьОформлениеОтмененнойСтроки(УсловноеОформление,
Элементы.Продукция,
Элементы.ПродукцияОтменено.Имя,
Элементы.ПродукцияПричинаОтмены.Имя);
ЗаказыСервер.УстановитьОформлениеОтмененнойСтроки(УсловноеОформление,
Элементы.ВозвратныеОтходы,
Элементы.ВозвратныеОтходыОтменено.Имя,
Элементы.ВозвратныеОтходыПричинаОтмены.Имя);
ЗаказыСервер.УстановитьОформлениеОтмененнойСтроки(УсловноеОформление,
Элементы.Материалы,
Элементы.Материалы.Имя);
ПараметрыУсловногоОформления = НоменклатураСервер.НовыеПараметрыУсловногоОформленияЕдиницИзмерения();
ПараметрыУсловногоОформления.ИмяПоляЕдиницаИзмерения = "ПродукцияНоменклатураЕдиницаИзмерения";
ПараметрыУсловногоОформления.ПутьКПолюУпаковка = "Объект.Продукция.Упаковка";
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма, ПараметрыУсловногоОформления);
ПараметрыУсловногоОформления = НоменклатураСервер.НовыеПараметрыУсловногоОформленияЕдиницИзмерения();
ПараметрыУсловногоОформления.ИмяПоляЕдиницаИзмерения = "ВозвратныеОтходыНоменклатураЕдиницаИзмерения";
ПараметрыУсловногоОформления.ПутьКПолюУпаковка = "Объект.ВозвратныеОтходы.Упаковка";
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма, ПараметрыУсловногоОформления);
ПараметрыУсловногоОформления = НоменклатураСервер.НовыеПараметрыУсловногоОформленияЕдиницИзмерения();
ПараметрыУсловногоОформления.ИмяПоляЕдиницаИзмерения = "МатериалыНоменклатураЕдиницаИзмерения";
ПараметрыУсловногоОформления.ПутьКПолюУпаковка = "Объект.Материалы.Упаковка";
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма, ПараметрыУсловногоОформления);
ОбщегоНазначенияУТ.УстановитьУсловноеОформлениеПриоритета(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(
ЭтаФорма,
"РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиХарактеристика",
"РедактированиеЭтапов.ОбеспечениеМатериаламиИРаботами.ХарактеристикиИспользуются");
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(
ЭтаФорма,
"МатериалыХарактеристика",
"Объект.Материалы.ХарактеристикиИспользуются");
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(
ЭтаФорма,
"ПродукцияХарактеристика",
"Объект.Продукция.ХарактеристикиИспользуются");
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(
ЭтаФорма,
"ВозвратныеОтходыХарактеристика",
"Объект.ВозвратныеОтходы.ХарактеристикиИспользуются");
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(
ЭтаФорма,
"УслугиХарактеристика",
"Объект.Услуги.ХарактеристикиИспользуются");
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(
ЭтаФорма,
"Характеристика",
"ХарактеристикиИспользуются");
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеВидовЦен(
ЭтаФорма,
"МатериалыВидЦены",
"Объект.Материалы.ВидЦены");
ЦеныПредприятияЗаполнениеСервер.УстановитьУсловноеОформлениеВидовЦен(
ЭтаФорма,
"ВозвратныеОтходыВидЦены",
"Объект.ВозвратныеОтходы.ВидЦены");
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(УсловноеОформление,
"ДатаОтгрузки", "Объект.ДатаОтгрузки", "ДатаОтгрузкиОбязательна");
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(УсловноеОформление,
"МатериалыДатаОтгрузки", "Объект.Материалы.ДатаОтгрузки", "Объект.Материалы.ДатаОтгрузкиОбязательна");
ОбщегоНазначенияУТ.УстановитьСнятьОтметкуНезаполненного(УсловноеОформление,
"МатериалыСклад", "Объект.Материалы.Склад", "Объект.Материалы.СкладОбязателен");
СтатусыЧерновик = Новый СписокЗначений;
СтатусыЧерновик.Добавить(Перечисления.СтатусыЗаказовПереработчикам.НеСогласован);
ОбеспечениеВДокументахСервер.УстановитьСнятьОтметкуНезаполненногоПоСтатусу(УсловноеОформление,
"Подразделение", "Подразделение", "", СтатусыЧерновик);
ОбеспечениеВДокументахСервер.УстановитьСнятьОтметкуНезаполненногоПоСтатусу(УсловноеОформление,
"ДатаПоступления", "ДатаПоступления", "", СтатусыЧерновик);
ОбеспечениеВДокументахСервер.УстановитьСнятьОтметкуНезаполненногоПоСтатусу(УсловноеОформление,
"ПродукцияДатаПоступления", "ДатаПоступления", "Продукция", СтатусыЧерновик);
ОбеспечениеВДокументахСервер.УстановитьСнятьОтметкуНезаполненногоПоСтатусу(УсловноеОформление,
"ВозвратныеОтходыДатаПоступления", "ДатаПоступления", "ВозвратныеОтходы", СтатусыЧерновик);
#КонецОбласти
#Область ЦветГиперссылки
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.УслугиГруппаЗатрат.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПереработкаПоЗаказу");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ГиперссылкаЦвет);
#КонецОбласти
#Область ТекстПродукцияНеВыбрана
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыГруппаЗатрат.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратныеОтходы.НомерГруппыЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГруппировкаЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветОсобогоТекста);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<продукция не выбрана>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.МатериалыГруппаЗатрат.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Материалы.НомерГруппыЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГруппировкаЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветОсобогоТекста);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<продукция не выбрана>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.УслугиГруппаЗатрат.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Услуги.НомерГруппыЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = 0;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГруппировкаЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветОсобогоТекста);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<продукция не выбрана>'"));
#КонецОбласти
#Область УслугиСуммаНДС_ТолькоПросмотр
УчетНДСУП.УстановитьУсловноеОформлениеСуммНДСПоСтавкеНДСЗакупки(ЭтаФорма, "УслугиСтавкаНДС", "УслугиСуммаНДС");
#КонецОбласти
#Область ПродукцияСпецификация_ОтметкаНеЗаполненного
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПродукцияСпецификация.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГруппировкаЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНеЗаполненного", Ложь);
#КонецОбласти
СтароеЗначение = ДоступныеОстаткиПараметрыВстраивания;
#Область Продукция
#Область Продукция_ДоляСтоимости
ПроизводствоСервер.УстановитьУсловноеОформлениеПоляДоляСтоимостиПроцент(ЭтаФорма, "Объект", "Продукция");
ПроизводствоСервер.УстановитьУсловноеОформлениеПоляДоляСтоимостиОтмененныхСтрок(ЭтаФорма, "Объект", "Продукция");
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПродукцияДоляСтоимости.Имя);
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПродукцияДоляСтоимостиПроцент.Имя);
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПродукцияЕстьОшибкиЗаполненияДолиСтоимости.Имя);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ГруппировкаЗатрат");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
#КонецОбласти
#Область Продукция_СписаниеНаРасходы
УстановитьУсловноеОформлениеСписатьНаРасходы("Объект",, "Продукция");
#КонецОбласти
#Область Продукция_Получатель
УстановитьУсловноеОформлениеПолучатель("Объект",, "Продукция");
#КонецОбласти
#КонецОбласти
#Область ВозвратныеОтходы
#Область ВозвратныеОтходы_СписаниеНаРасходы
УстановитьУсловноеОформлениеСписатьНаРасходы("Объект",, "ВозвратныеОтходы");
#КонецОбласти
#Область ВозвратныеОтходы_Получатель
УстановитьУсловноеОформлениеПолучатель("Объект",, "ВозвратныеОтходы");
#КонецОбласти
#КонецОбласти
#Область Прочее
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Состояние.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СостояниеПросрочено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ПросроченныйДокумент);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Состояние.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Состояние");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СостоянияЗаказовПереработчикам.Закрыт;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЗакрытыйДокумент);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПродукцияДатаПоступления.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Продукция.Отменено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыДатаПоступления.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратныеОтходы.Отменено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.МатериалыЦена.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.МатериалыСумма.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Материалы.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыЦена.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыСумма.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ВозвратныеОтходы.ВидЦены");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДатаПоступления1.Имя);
ГруппаОтбора1 = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора1.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
СписокЗначений = Новый СписокЗначений;
СписокЗначений.Добавить(Перечисления.СтатусыЗаказовПереработчикам.КОбеспечению);
СписокЗначений.Добавить(Перечисления.СтатусыЗаказовПереработчикам.КИсполнению);
СписокЗначений.Добавить(Перечисления.СтатусыЗаказовПереработчикам.Закрыт);
ОтборЭлемента.ПравоеЗначение = СписокЗначений;
ОтборЭлемента = ГруппаОтбора1.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ДатаПоступления");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.МатериалыСклад.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СкладОтгрузкиГруппа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПродукцияОтменено.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПродукцияПричинаОтмены.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьПричиныОтменыЗаказовПоставщикам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.SpecialTextColor);
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыОтменено.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыПричинаОтмены.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьПричиныОтменыЗаказовПоставщикам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.SpecialTextColor);
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ПродукцияОтмененоПричиныОтменыНеИспользуются.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьПричиныОтменыЗаказовПоставщикам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.FieldSelectionBackColor);
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ВозвратныеОтходыОтмененоПричиныОтменыНеИспользуются.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьПричиныОтменыЗаказовПоставщикам");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветФона", ЦветаСтиля.FieldSelectionBackColor);
Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Номенклатура.Имя);
ГруппаОтбора = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПроверятьУказаниеРаботы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Номенклатура");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.УслугиНоменклатура.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПроверятьУказаниеРаботы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтаФорма);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Подразделение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Статус");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.СтатусыЗаказовПереработчикам.НеСогласован;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ПереработкаПоЗаказу");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
ДополнительныеПараметры = Новый Структура("ВернутьПараметрыРедактированияЭтапов", Ложь);
ДоступныеОстаткиПараметрыВстраивания = Документы.ЗаказПереработчику.ДоступныеОстаткиПараметрыВстраивания(
Неопределено,
ДополнительныеПараметры);
ОбеспечениеВДокументахСервер.ДоступныеОстаткиДобавитьОформлениеКолонкиДоступно(ЭтотОбъект);
ДоступныеОстаткиПараметрыВстраивания = СтароеЗначение;
ОбеспечениеВДокументахСервер.УстановитьУсловноеОформлениеОбособленно(
УсловноеОформление,
Элементы.МатериалыОбособленно,
"Объект.Материалы.ВариантОбеспечения",
"Объект.Материалы.ТипНоменклатуры");
#КонецОбласти
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформлениеСписатьНаРасходы(ИмяОбъекта, ПрефиксТЧ = "", ИмяТЧ)
НазванияПолей = НазванияПолей(ПрефиксТЧ, ИмяТЧ);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеСписатьНаРасходы = Элементы[НазванияПолей.СписатьНаРасходы];
ПолеСтатьяРасходов = Элементы[НазванияПолей.СтатьяРасходов];
ПолеАналитикаРасходов = Элементы[НазванияПолей.АналитикаРасходов];
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеСписатьНаРасходы.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеСтатьяРасходов.Имя);
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеАналитикаРасходов.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяОбъекта + "." + ИмяТЧ + ".ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Работа;
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр" , Истина);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст" , НСтр("ru = '<для работ>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста" , ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеНазначение = Элементы[НазванияПолей.Назначение];
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеНазначение.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяОбъекта + "." + ИмяТЧ + ".СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста" , ЦветаСтиля.НезаполненноеПолеТаблицы);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст" , НСтр("ru = '<не используется при списании на расходы>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр" , Истина);
КонецПроцедуры
&НаСервере
Функция НазванияПолей(ПрефиксТЧ, ИмяТЧ)
СтруктураВозврата = Новый Структура("СписатьНаРасходы, СтатьяРасходов, АналитикаРасходов, Назначение");
Если ПрефиксТЧ = "РедактированиеЭтапов" Тогда
Если ИмяТЧ = "ВыходныеИзделия" Тогда
СтруктураВозврата.СписатьНаРасходы = "РедактированиеЭтаповВыходныеИзделияСписатьНаРасходы";
СтруктураВозврата.СтатьяРасходов = "РедактированиеЭтаповВыходныеИзделияСтатьяРасходов";
СтруктураВозврата.АналитикаРасходов = "РедактированиеЭтаповВыходныеИзделияАналитикаРасходов";
СтруктураВозврата.Назначение = "РедактированиеЭтаповВыходныеИзделияНазначение";
ИначеЕсли ИмяТЧ = "ВозвратныеОтходы" Тогда
СтруктураВозврата.СписатьНаРасходы = "РедактированиеЭтаповВозвратныеОтходыСписатьНаРасходы";
СтруктураВозврата.СтатьяРасходов = "РедактированиеЭтаповВозвратныеОтходыСтатьяРасходов";
СтруктураВозврата.АналитикаРасходов = "РедактированиеЭтаповВозвратныеОтходыАналитикаРасходов";
СтруктураВозврата.Назначение = "РедактированиеЭтаповВозвратныеОтходыНазначение";
ИначеЕсли ИмяТЧ = "Продукция" Тогда
СтруктураВозврата.СписатьНаРасходы = "РедактированиеЭтаповПродукцияСписатьНаРасходы";
СтруктураВозврата.СтатьяРасходов = "РедактированиеЭтаповПродукцияСтатьяРасходов";
СтруктураВозврата.АналитикаРасходов = "РедактированиеЭтаповПродукцияАналитикаРасходов";
СтруктураВозврата.Назначение = "РедактированиеЭтаповПродукцияНазначение";
ИначеЕсли ИмяТЧ = "ПобочныеИзделия" Тогда
СтруктураВозврата.СписатьНаРасходы = "РедактированиеЭтаповПобочныеИзделияСписатьНаРасходы";
СтруктураВозврата.СтатьяРасходов = "РедактированиеЭтаповПобочныеИзделияСтатьяРасходов";
СтруктураВозврата.АналитикаРасходов = "РедактированиеЭтаповПобочныеИзделияАналитикаРасходов";
СтруктураВозврата.Назначение = "РедактированиеЭтаповПобочныеИзделияНазначение";
КонецЕсли;
Иначе
Если ИмяТЧ = "ВыходныеИзделия" Тогда
СтруктураВозврата.СписатьНаРасходы = "ВыходныеИзделияСписатьНаРасходы";
СтруктураВозврата.СтатьяРасходов = "ВыходныеИзделияСтатьяРасходов";
СтруктураВозврата.АналитикаРасходов = "ВыходныеИзделияАналитикаРасходов";
СтруктураВозврата.Назначение = "ВыходныеИзделияНазначение";
ИначеЕсли ИмяТЧ = "ВозвратныеОтходы" Тогда
СтруктураВозврата.СписатьНаРасходы = "ВозвратныеОтходыСписатьНаРасходы";
СтруктураВозврата.СтатьяРасходов = "ВозвратныеОтходыСтатьяРасходов";
СтруктураВозврата.АналитикаРасходов = "ВозвратныеОтходыАналитикаРасходов";
СтруктураВозврата.Назначение = "ВозвратныеОтходыНазначение";
ИначеЕсли ИмяТЧ = "Продукция" Тогда
СтруктураВозврата.СписатьНаРасходы = "ПродукцияСписатьНаРасходы";
СтруктураВозврата.СтатьяРасходов = "ПродукцияСтатьяРасходов";
СтруктураВозврата.АналитикаРасходов = "ПродукцияАналитикаРасходов";
СтруктураВозврата.Назначение = "ПродукцияНазначение";
ИначеЕсли ИмяТЧ = "ПобочныеИзделия" Тогда
СтруктураВозврата.СписатьНаРасходы = "ПобочныеИзделияСписатьНаРасходы";
СтруктураВозврата.СтатьяРасходов = "ПобочныеИзделияСтатьяРасходов";
СтруктураВозврата.АналитикаРасходов = "ПобочныеИзделияАналитикаРасходов";
СтруктураВозврата.Назначение = "ПобочныеИзделияНазначение";
КонецЕсли;
КонецЕсли;
Возврат СтруктураВозврата;
КонецФункции
&НаСервере
Процедура УстановитьУсловноеОформлениеПолучатель(ИмяОбъекта, ПрефиксТЧ = "", ИмяТЧ)
ПолеПолучатель = Элементы[ИмяЭлементаПолучатель(ПрефиксТЧ, ИмяТЧ)];
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеПолучатель.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяОбъекта + "." + ИмяТЧ + ".СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяОбъекта + "." + ИмяТЧ + ".ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Работа;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяОбъекта + "." + ИмяТЧ + ".Получатель");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Текст" , Новый ПолеКомпоновкиДанных("Объект.Подразделение"));
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста" , ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеПолучатель.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяОбъекта + "." + ИмяТЧ + ".СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяОбъекта + "." + ИмяТЧ + ".ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Работа;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяОбъекта + "." + ИмяТЧ + ".Получатель");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяОбъекта + "." + ИмяТЧ + ".Отменено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеПолучатель.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяОбъекта + "." + ИмяТЧ + ".ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Работа;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяОбъекта + "." + ИмяТЧ + ".Получатель");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьНесколькоСкладов");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяОбъекта + "." + ИмяТЧ + ".Отменено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеПолучатель.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяОбъекта + "." + ИмяТЧ + ".СписатьНаРасходы");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяОбъекта + "." + ИмяТЧ + ".ТипНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыНоменклатуры.Работа;
Отбор = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИспользоватьНесколькоСкладов");
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Отбор.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста" , ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного" , Ложь);
Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр" , Истина);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ПолеПолучатель.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяОбъекта + "." + ИмяТЧ + ".Отменено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
КонецПроцедуры
&НаСервере
Функция ИмяЭлементаПолучатель(ПрефиксТЧ, ИмяТЧ)
Если ПрефиксТЧ = "РедактированиеЭтапов" Тогда
Если ИмяТЧ = "ВыходныеИзделия" Тогда
Возврат "РедактированиеЭтаповВыходныеИзделияПолучатель"
ИначеЕсли ИмяТЧ = "ПобочныеИзделия" Тогда
Возврат "РедактированиеЭтаповПобочныеИзделияПолучатель"
ИначеЕсли ИмяТЧ = "ВозвратныеОтходы" Тогда
Возврат "РедактированиеЭтаповВозвратныеОтходыПолучатель"
ИначеЕсли ИмяТЧ = "Продукция" Тогда
Возврат "РедактированиеЭтаповПродукцияПолучатель"
КонецЕсли;
Иначе
Если ИмяТЧ = "ВыходныеИзделия" Тогда
Возврат "ВыходныеИзделияПолучатель"
ИначеЕсли ИмяТЧ = "ПобочныеИзделия" Тогда
Возврат "ПобочныеИзделияПолучатель"
ИначеЕсли ИмяТЧ = "ВозвратныеОтходы" Тогда
Возврат "ВозвратныеОтходыПолучатель"
ИначеЕсли ИмяТЧ = "Продукция" Тогда
Возврат "ПродукцияПолучатель"
ИначеЕсли ИмяТЧ = "РедактированиеЭтаповПобочныеИзделия" Тогда
Возврат "РедактированиеЭтаповПобочныеИзделияПолучатель"
ИначеЕсли ИмяТЧ = "РедактированиеЭтаповВыходныеИзделия" Тогда
Возврат "РедактированиеЭтаповВыходныеИзделияПолучатель"
КонецЕсли;
КонецЕсли;
КонецФункции
#КонецОбласти
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура ПриИзмененииСуммыУслугиСервер()
ТекущаяСтрока = Объект;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВТЧ(ЭтаФорма);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, Неопределено);
ОбновитьДанныеТаблицыУслуг(Объект);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСтатусаСервер()
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.КОбеспечению")
Или Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.КИсполнению")
Или Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.Закрыт") Тогда
ЗаполнитьПустыеДатыПоступленияСервер();
КонецЕсли;
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
УстановитьДоступностьЭлементовПоСтатусуСервер();
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииСтавкиНДССервер()
ТекущаяСтрока = Объект;
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВТЧ(ЭтаФорма);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, Неопределено);
ОбновитьДанныеТаблицыУслуг(Объект);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииПартнераСервер()
Документы.ЗаказПереработчику.ЗаполнитьУсловияЗакупокПоУмолчанию(Объект);
ОтветственныеЛицаСервер.ЗаполнитьМенеджера(Объект);
ВалютаДокумента = Объект.Валюта;
ПартнерыИКонтрагенты.ЗаполнитьКонтрагентаПартнераПоУмолчанию(Объект.Партнер, Объект.Контрагент);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Материалы, ЗависимыеРеквизитыМатериалы());
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.ВозвратныеОтходы, ЗависимыеРеквизитыВозвратныеОтходы());
УстановитьВидимостьДоговора();
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
ЗаполнитьУстановитьРеквизитыДоставкиСервер("Партнер");
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Партнер");
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, , Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
Объект.ОбосабливатьПоНазначениюПродукции = Константы.ВариантОбособленияМатериаловВПереработке.Получить()
= Перечисления.ВариантыОбособленияПриПередачеВПереработку.НазначениеПродукции;
АктуализироватьЗакупкуПодДеятельность();
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииКонтактногоЛицаСервер(ПартнерИзменился)
ВладелецКонтактногоЛица = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.КонтактноеЛицо, "Владелец");
Если ВладелецКонтактногоЛица <> Объект.Партнер Тогда
Объект.Партнер = ВладелецКонтактногоЛица;
ПриИзмененииПартнераСервер();
ПартнерИзменился = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииДоговораСервер()
ЗакупкиВызовСервера.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчет);
Если ЗначениеЗаполнено(Объект.Договор) Тогда
Объект.ОплатаВВалюте = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Договор,"ОплатаВВалюте");
КонецЕсли;
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, , Объект.Договор);
КонецЕсли;
ОтветственныеЛицаСервер.ЗаполнитьМенеджера(Объект);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Договор");
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
Объект.ОбосабливатьПоНазначениюПродукции = Константы.ВариантОбособленияМатериаловВПереработке.Получить()
= Перечисления.ВариантыОбособленияПриПередачеВПереработку.НазначениеПродукции;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Договор");
АктуализироватьЗакупкуПодДеятельность();
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииВидаЦеныСервер(ЦеныРассчитаны)
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦенСервер(Объект.ВидЦены, "ВозвратныеОтходы", Ложь);
ЦеныРассчитаны = ЗаполнитьЦеныПоВидуЦенСервер(Объект.ВидЦены, "Материалы", Ложь) И ЦеныРассчитаны;
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииВалютыСервер(НоваяВалюта, ПересчитатьСуммы)
ЗаполнитьДоговорПоУмолчанию();
Если ПересчитатьСуммы Тогда
СтараяВалюта = ВалютаДокумента;
ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса());
БазоваяВалюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
СтруктураКурсовСтаройВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(СтараяВалюта, ДатаДокумента, БазоваяВалюта);
СтруктураКурсовНовойВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(НоваяВалюта, ДатаДокумента, БазоваяВалюта);
Объект.Сумма = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
Объект.Сумма,
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты);
ПересчитатьСуммыТабличнойЧастиВВалюту(
Объект.ВозвратныеОтходы,
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты);
ПересчитатьСуммыТабличнойЧастиВВалюту(
Объект.Материалы,
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты);
ПересчитатьСуммыТабличнойЧастиВВалюту(
Объект.Услуги,
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты,
"СуммаСНДС");
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Материалы, ЗависимыеРеквизитыМатериалы());
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.ВозвратныеОтходы, ЗависимыеРеквизитыВозвратныеОтходы());
ПриИзмененииСуммыУслуг(ЭтаФорма);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
КонецЕсли;
ВалютаПриИзмененииНаСервере();
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Валюта");
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииКонтрагентаСервер()
УстановитьВидимостьДоговора();
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, , Объект.Договор);
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
Объект.ОбосабливатьПоНазначениюПродукции = Константы.ВариантОбособленияМатериаловВПереработке.Получить()
= Перечисления.ВариантыОбособленияПриПередачеВПереработку.НазначениеПродукции;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Контрагент");
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииОрганизацииСервер()
УстановитьВидимостьДоговора();
АктуализироватьСтавкуНДССервер();
Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
ЗаполнитьДоговорПоУмолчанию();
Если ИспользоватьНаправленияДеятельности Тогда
НаправленияДеятельностиСервер.ЗаполнитьНаправлениеПоУмолчанию(Объект.НаправлениеДеятельности, , Объект.Договор);
КонецЕсли;
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Организация");
АктуализироватьЗакупкуПодДеятельность();
ДенежныеСредстваСервер.ПроверитьЗаполнитьБанковскийСчетОрганизацииПоВладельцу(
Объект.Организация,
Объект.БанковскийСчет,
Объект.ФормаОплаты,
Объект.НаправлениеДеятельности);
ДенежныеСредстваСервер.ПроверитьЗаполнитьКассуОрганизацииПоВладельцу(
Объект.Организация,
Объект.Касса,
Объект.ФормаОплаты,
Объект.НаправлениеДеятельности);
ЗаполнитьПодчиненныеСвойстваПоСтатистике("Организация");
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
Объект.ОбосабливатьПоНазначениюПродукции = Константы.ВариантОбособленияМатериаловВПереработке.Получить()
= Перечисления.ВариантыОбособленияПриПередачеВПереработку.НазначениеПродукции;
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииПоступлениеОднойДатойСервер()
Если Объект.ПоступлениеОднойДатой Тогда
Объект.ДатаПоступления = МаксимальнаяДатаПоступления();
ЗаполнитьДатыПоступленияСервер(Объект.ДатаПоступления);
КонецЕсли;
УстановитьВидимостьЭлементовФормыДатПоступления();
КонецПроцедуры
&НаСервере
Процедура ПриИзмененииДатыСервер()
ПартионныйУчетВерсии22 = РасчетСебестоимостиПовтИсп.ПартионныйУчетВерсии22(Объект.Дата);
ОтветственныеЛицаСервер.ПриИзмененииСвязанныхРеквизитовДокумента(Объект);
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
УстановитьВидимостьЭлементовПоВерсииПартионногоУчета();
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Дата");
АктуализироватьЗакупкуПодДеятельность();
СпособРаспределенияЗатратНаВыходныеИзделияПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов Тогда
ЗаполнитьДоговорПоУмолчанию();
КонецЕсли;
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
Объект.ОбосабливатьПоНазначениюПродукции = Константы.ВариантОбособленияМатериаловВПереработке.Получить()
= Перечисления.ВариантыОбособленияПриПередачеВПереработку.НазначениеПродукции;
АктуализироватьЗакупкуПодДеятельность();
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция КоличествоУслуг(Количество, ГруппировкаЗатрат)
Если ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки") Тогда
Возврат 0;
Иначе
Возврат Количество;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ПриИзмененииСписатьНаРасходы(ИмяТаблицы)
ТекущиеДанные = Элементы[ИмяТаблицы].ТекущиеДанные;
Если ТекущиеДанные.СписатьНаРасходы
И ТекущиеДанные.ТипНоменклатуры <> ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа") Тогда
ТекущиеДанные.СписатьНаРасходы = Ложь;
КонецЕсли;
Если ТекущиеДанные.СписатьНаРасходы Тогда
ТекущиеДанные.Назначение = Неопределено;
КонецЕсли;
ДоходыИРасходыКлиентСервер.ПриИзмененииРеквизитаДоступностиСтатьиВСтроке(ЭтотОбъект, ТекущиеДанные, "Объект." + ИмяТаблицы);
ОграничениеТипаПолучателя(ТекущиеДанные, ИмяЭлементаПолучатель( "", ИмяТаблицы), Истина);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьДанныеТаблицыУслуг(ОбъектФормы)
Если Не ОбъектФормы.Услуги.Количество() = 1 Тогда
ОбъектФормы.Услуги.Очистить();
ТекущаяСтрока = ОбъектФормы.Услуги.Добавить();
Иначе
ТекущаяСтрока = ОбъектФормы.Услуги[0];
КонецЕсли;
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, ОбъектФормы);
КонецПроцедуры
#КонецОбласти
#Область Ценообразование
&НаСервере
Функция ЗаполнитьЦеныПоВидуЦенСервер(ВидЦен, ИмяТЧ, ПоВыделеннымСтрокам)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
ПараметрыЗаполнения.Вставить("ВидЦены", ВидЦен);
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "Цена, ВидЦены");
Если ПоВыделеннымСтрокам Тогда
МассивСтрок = Новый Массив;
Для Каждого Строка Из Элементы[ИмяТЧ].ВыделенныеСтроки Цикл
МассивСтрок.Добавить(Объект[ИмяТЧ].НайтиПоИдентификатору(Строка));
КонецЦикла;
Иначе
МассивСтрок = Неопределено;
КонецЕсли;
ЦеныРассчитаны = ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
Объект[ИмяТЧ],
МассивСтрок,
ПараметрыЗаполнения,
СтруктураДействий);
Если ИмяТЧ = "Материалы" Тогда
СтруктураЗависимыхРеквизитов = ЗависимыеРеквизитыМатериалы();
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект[ИмяТЧ], СтруктураЗависимыхРеквизитов);
ИначеЕсли ИмяТЧ = "ВозвратныеОтходы" Тогда
СтруктураЗависимыхРеквизитов = ЗависимыеРеквизитыВозвратныеОтходы();
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект[ИмяТЧ], СтруктураЗависимыхРеквизитов);
КонецЕсли;
Если ИмяТЧ = "Материалы" Тогда
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
КонецЕсли;
Возврат ЦеныРассчитаны;
КонецФункции
#КонецОбласти
#Область ПодборыИОбработкаПроверкиКоличества
&НаКлиенте
Процедура ПодобратьТовар(ИмяТЧ)
Отказ = Ложь;
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОчиститьСообщения();
СообщитьОбОшибкахОткрытияПодбора(Отказ);
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СкрыватьРучныеСкидки", Истина);
ПараметрыФормы.Вставить("ЦенаВключаетНДС", Ложь);
ПараметрыФормы.Вставить("Валюта", Объект.Валюта);
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("РежимПодбораИспользоватьСкладыВТабличнойЧасти", Истина);
Если ИмяТЧ = "Материалы"
ИЛИ ИмяТЧ = "РедактированиеЭтаповОбеспечениеМатериаламиИРаботами" Тогда
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
ПараметрыФормы.Вставить("РежимПодбораБезСуммовыхПараметров", Истина);
ПараметрыФормы.Вставить("ИспользоватьДатыОтгрузки", Истина);
ПараметрыФормы.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий);
ПараметрыФормы.Вставить("Назначение", Объект.Назначение);
ПараметрыФормы.Вставить("Подразделение", Объект.Подразделение);
ПараметрыФормы.Вставить("ПодборВариантовОбеспечения", Истина);
ПараметрыФормы.Вставить("ДоступныеОстаткиПараметрыДокумента",
ОбеспечениеВДокументахКлиент.ДоступныеОстаткиПараметрыДокумента(ЭтотОбъект));
ПараметрыФормы.Вставить("ОстаткиПоВсемСкладам", Истина);
ФормаПодбораТоваров = "Обработка.ПодборТоваровВДокументПродажи.Форма";
ОткрытьФорму(ФормаПодбораТоваров, ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);
Иначе
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры",
?(
Не ИспользоватьУправлениеПроизводством2_2
Или
Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЗаказамНаПроизводство")
Или
Не ИспользоватьПроизводство,
НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь), НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареРаботе(Ложь)));
ПараметрыФормы.Вставить("РежимПодбораБезСуммовыхПараметров", Истина);
ФормаПодбораТоваров = "Обработка.ПодборТоваровВДокументЗакупки.Форма";
ОткрытьФорму(ФормаПодбораТоваров, ПараметрыФормы, Элементы[ИмяТЧ], УникальныйИдентификатор);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СообщитьОбОшибкахОткрытияПодбора(Отказ)
Если Не ЗначениеЗаполнено(Объект.Валюта) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Поле ""Валюта"" не заполнено'"), Объект.Ссылка, "Объект.Валюта",,Отказ);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, ИмяТЧ)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
ТаблицаДокумента = ТабличнаяЧастьПоИмени(ИмяТЧ, ЭтаФорма);
Если ИмяТЧ = "Продукция" Тогда
СписокСвойств = "Номенклатура, Характеристика, Упаковка, КоличествоУпаковок";
ИначеЕсли ИмяТЧ = "ВозвратныеОтходы" Тогда
СписокСвойств = "Номенклатура, Характеристика, Упаковка, Цена, КоличествоУпаковок";
ИначеЕсли ИмяТЧ = "Материалы" Тогда
СписокСвойств = "Номенклатура,Характеристика,Упаковка,Склад,Цена,КоличествоУпаковок,ВидЦены,
|СрокПоставки,ВариантОбеспечения,Обособленно,Серия,ДатаОтгрузки";
ИначеЕсли ИмяТЧ = "РедактированиеЭтаповВыходныеИзделия" Тогда
СписокСвойств = "Номенклатура, Характеристика, Упаковка, КоличествоУпаковок";
ИначеЕсли ИмяТЧ = "РедактированиеЭтаповПобочныеИзделия" Тогда
СписокСвойств = "Номенклатура, Характеристика, Упаковка, Цена, КоличествоУпаковок";
ИначеЕсли ИмяТЧ = "РедактированиеЭтаповОбеспечениеМатериаламиИРаботами" Тогда
СписокСвойств = "Номенклатура,Характеристика,Упаковка,Склад,КоличествоУпаковок,ВариантОбеспечения,
|Обособленно,Серия,ДатаОтгрузки";
КонецЕсли;
ВыделенныеСтроки = Новый Массив;
НачалоДня = НачалоДня(ТекущаяДатаСеанса());
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив;
Для каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = ТаблицаДокумента.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара, СписокСвойств);
Если ИмяТЧ = "Продукция"
Или ИмяТЧ = "ВозвратныеОтходы"
Или ИмяТЧ = "РедактированиеЭтаповВыходныеИзделия"
Или ИмяТЧ = "РедактированиеЭтаповПобочныеИзделия" Тогда
Если ИмяТЧ = "Продукция"
Или ИмяТЧ = "ВозвратныеОтходы" Тогда
ПутьКДаннымТаблицы = "Объект." + ИмяТЧ;
ИначеЕсли ИмяТЧ = "РедактированиеЭтаповВыходныеИзделия" Тогда
ПутьКДаннымТаблицы = "РедактированиеЭтапов.ВыходныеИзделия";
ИначеЕсли ИмяТЧ = "РедактированиеЭтаповПобочныеИзделия" Тогда
ПутьКДаннымТаблицы = "РедактированиеЭтапов.ПобочныеИзделия";
КонецЕсли;
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, ТекущаяСтрока, ПутьКДаннымТаблицы);
КонецЕсли;
Если ИмяТЧ = "Материалы" Тогда
Если Объект.НеОтгружатьЧастями Тогда
ТекущаяСтрока.ДатаОтгрузки = Объект.ДатаОтгрузки;
КонецЕсли;
ИначеЕсли ИмяТЧ = "ВозвратныеОтходы" Тогда
ТекущаяСтрока.ВидЦены = Объект.ВидЦены;
ИначеЕсли ИмяТЧ = "Продукция" Тогда
Если Объект.ПоступлениеОднойДатой Тогда
ТекущаяСтрока.ДатаПоступления = Объект.ДатаПоступления;
КонецЕсли;
ВыделенныеСтроки.Добавить(ТекущаяСтрока.ПолучитьИдентификатор());
ПродукцияСтрокаЗаполнитьСпецификацию(ТекущаяСтрока);
ЗаполнитьНомерГруппыЗатратВСтрокеПродукции(ТекущаяСтрока, Объект);
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
Если ИмяТЧ = "Продукция"
Или ИмяТЧ = "ВозвратныеОтходы"
Или ИмяТЧ = "РедактированиеЭтаповВыходныеИзделия"
Или ИмяТЧ = "РедактированиеЭтаповПобочныеИзделия" Тогда
ТекущаяСтрока.Получатель = ?(ТекущаяСтрока.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Работа,
ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка"),
?(ЗначениеЗаполнено(СтрокаТовара.Склад), СтрокаТовара.Склад, СкладПоУмолчанию));
КонецЕсли;
Если ИмяТЧ = "Материалы" Тогда
ТекущаяСтрока.ДатаОтгрузки = ОбеспечениеВДокументахСервер.ДатаОтгрузкиОбработкаВыбораПодбор(
СтрокаТовара.ДатаОтгрузки,
ТекущаяСтрока.ВариантОбеспечения,
НачалоДня);
КонецЕсли;
КонецЦикла;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПоОбновлениюВспомРевизитовСтроки(СтруктураДействий);
Если Не ИмяТЧ = "Продукция"
И Не ИмяТЧ = "ВозвратныеОтходы"
И Не ИмяТЧ = "РедактированиеЭтаповВыходныеИзделия"
И Не ИмяТЧ = "РедактированиеЭтаповПобочныеИзделия" Тогда
ДобавитьДействиеПроверитьЗаполнитьСклад(ИмяТЧ, ЭтотОбъект, СтруктураДействий);
КонецЕсли;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ИмяТЧ, СтруктураДействий);
Если ИмяТЧ = "Материалы" Тогда
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "СкладОбязателен,ДатаОтгрузкиОбязательна");
ИначеЕсли ИмяТЧ = "ВозвратныеОтходы" Тогда
Если ЗначениеЗаполнено(Объект.ВидЦены) Тогда
СтруктураДействий.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
СтруктураДействий.Вставить("ПересчитатьСумму", "КоличествоУпаковок");
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвратныеОтходы());
КонецЕсли;
ИначеЕсли ИмяТЧ = "Продукция" Тогда
СтруктураДействий.Вставить("ПроверитьЗаполнитьДолюСтоимости", ПараметрыРаспределенияЗатрат);
КонецЕсли;
Если ИмяТЧ = "ВозвратныеОтходы" Или ИмяТЧ = "Продукция" Тогда
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
ТаблицаДокумента,
КэшированныеЗначения);
Если ИмяТЧ = "Материалы" Тогда
ОбеспечениеВДокументахСервер.АктуализироватьДатуОтгрузкиОднойДатой(
Объект.НеОтгружатьЧастями,
Объект.ДатаОтгрузки,
Объект.Материалы,
"ДатаОтгрузки");
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
Если ИмяТЧ = "РедактированиеЭтаповОбеспечениеМатериаламиИРаботами" Тогда
ОбеспечениеВДокументахСервер.АктуализироватьДатуОтгрузкиОднойДатой(
РедактированиеЭтапов.НеОтгружатьЧастями,
РедактированиеЭтапов.ДатаОтгрузки,
РедактированиеЭтапов.ОбеспечениеМатериаламиИРаботами,
"ДатаОтгрузки");
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
РассчитатьИтоговыеПоказателиДокумента(ЭтотОбъект);
Если ИмяТЧ = "Продукция" ИЛИ ИмяТЧ = "ВозвратныеОтходы" Тогда
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецЕсли;
Если ИмяТЧ = "Продукция" Тогда
ЗаполнитьУслугиПоПродукции(Объект);
ЗаполнитьВозвратныеОтходыИМатериалыНаСервере(ВыделенныеСтроки);
ПриИзмененииСуммыУслуг(ЭтотОбъект);
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧ,, СтруктураДействий);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение, ИмяТЧ)
Если Не ЗначениеЗаполнено(ВыбранноеЗначение) Тогда
Возврат;
КонецЕсли;
Если ИмяТЧ = "Материалы" Тогда
ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатойПослеПодбора(
ЭтотОбъект,
ВыбранноеЗначение,
"ОбработкаВыбораПодборНаКлиентеПослеВопросаМатериалы");
ИначеЕсли ИмяТЧ = "РедактированиеЭтаповОбеспечениеМатериаламиИРаботами" Тогда
ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатойПослеПодбора(
ЭтотОбъект,
ВыбранноеЗначение,
"ОбработкаВыбораПодборНаКлиентеПослеВопросаРедактированиеЭтапов");
Иначе
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение, ИмяТЧ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбораПодборНаКлиентеПослеВопросаМатериалы(Ответ, ДополнительныеПараметры) Экспорт
Если Ответ = КодВозвратаДиалога.Отмена Тогда
Возврат;
КонецЕсли;
Если Ответ = КодВозвратаДиалога.Да Тогда
Объект.НеОтгружатьЧастями = Ложь;
УстановитьВидимостьЭлементовФормыДатОтгрузки();
КонецЕсли;
ОбработкаВыбораПодборНаСервере(ДополнительныеПараметры, "Материалы");
КонецПроцедуры
#КонецОбласти
#Область ШтрихкодыИТорговоеОборудование
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов, ИмяТабличнойЧасти)
Если ИмяТабличнойЧасти = "Материалы" Тогда
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьВидЦены", Новый Структура("ВидЦены", Объект.ВидЦены));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
ДобавитьДействиеПроверитьЗаполнитьСклад(ИмяТабличнойЧасти, ЭтаФорма, СтруктураДействийСДобавленнымиСтроками);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ИмяТабличнойЧасти, СтруктураДействийСДобавленнымиСтроками);
ДобавитьВСтруктуруДействияПоОбновлениюВспомРевизитовСтроки(СтруктураДействийСДобавленнымиСтроками);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ИмяТабличнойЧасти, СтруктураДействийСИзмененнымиСтроками);
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий;
СтруктураДействий.ИмяТЧ = ИмяТабличнойЧасти;
СтруктураДействий.ИзменятьКоличество = Истина;
СтруктураДействий.ТолькоТовары = Истина;
ОбработатьШтрихкодыСервер(СтруктураДействий,КэшированныеЗначения, ИмяТабличнойЧасти);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Материалы, ДатаОтгрузкиОбязательна, СкладОбязателен);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий,КэшированныеЗначения, ЭтаФорма);
Если ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(СтруктураДействий) Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
ПодключитьОбработчикОжидания("ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры", 0.1, Истина);
КонецЕсли;
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элементы.Материалы.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
Иначе
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
Если ИмяТабличнойЧасти = "ВозвратныеОтходы" Тогда
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьВидЦены", Новый Структура("ВидЦены", Объект.ВидЦены));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьЦенуПродажи", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияЦеныВСтрокеТЧ(Объект));
Иначе
СтруктураДействийСДобавленнымиСтроками.Вставить("ПроверитьЗаполнитьДолюСтоимости", ПараметрыРаспределенияЗатрат);
СтруктураДействийСИзмененнымиСтроками.Вставить("ПроверитьЗаполнитьДолюСтоимости", ПараметрыРаспределенияЗатрат);
КонецЕсли;
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействийСДобавленнымиСтроками);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ИмяТабличнойЧасти, СтруктураДействийСДобавленнымиСтроками);
ПроизводствоКлиентСервер.ДобавитьВСтруктуруДействияПроверитьЗаполнитьСкладПроизводства(Объект.Подразделение, СтруктураДействийСДобавленнымиСтроками, "Получатель");
ДобавитьВСтруктуруДействияПоОбновлениюВспомРевизитовСтроки(СтруктураДействийСДобавленнымиСтроками);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ИмяТабличнойЧасти, СтруктураДействийСИзмененнымиСтроками);
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = Неопределено;
СтруктураДействий.ИмяТЧ = ИмяТабличнойЧасти;
СтруктураДействий.ИзменятьКоличество = Истина;
СтруктураДействий.ТолькоТоварыИРабота = Истина;
ОбработатьШтрихкодыСервер(СтруктураДействий,КэшированныеЗначения, ИмяТабличнойЧасти);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий,КэшированныеЗначения,ЭтаФорма);
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элементы[ИмяТабличнойЧасти].ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
ТекущиеДанные = Элементы[ИмяТабличнойЧасти].ТекущиеДанные;
ЗаполнитьПолучателяПоУмолчанию(ТекущиеДанные);
Если ИмяТабличнойЧасти = "Продукция"
Или ИмяТабличнойЧасти = "ВозвратныеОтходы" Тогда
ПутьКДаннымТаблицы = "Объект." + ИмяТабличнойЧасти;
Иначе
ПутьКДаннымТаблицы = "РедактированиеЭтапов." + ИмяТаблицы(ИмяТабличнойЧасти);
КонецЕсли;
ДоходыИРасходыКлиентСервер.ПриДобавленииСтрокиВТаблицу(ЭтотОбъект, ТекущиеДанные, ПутьКДаннымТаблицы);
КонецЕсли;
КонецЕсли;
ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТабличнойЧасти);
РассчитатьИтоговыеПоказателиДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия, КэшированныеЗначения, ИмяТабличнойЧасти)
Если ИмяТабличнойЧасти = "Материалы" Тогда
ДобавитьДействияОбеспеченияНаСервере(
СтруктураПараметровДействия.СтруктураДействийСДобавленнымиСтроками,
"ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
КонецЕсли;
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтаФорма, Объект, СтруктураПараметровДействия, КэшированныеЗначения);
Если ИмяТабличнойЧасти = "Материалы" Тогда
ОбеспечениеВДокументахКлиентСервер.УдалитьДействияОбеспечения(СтруктураПараметровДействия.СтруктураДействийСДобавленнымиСтроками);
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаКлиенте
Процедура ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.Материалы.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
Если Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаМатериалы Тогда
ОткрытьПодборСерий(,ТекущиеДанные);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПодготовитьЗаполнитьУстановитьВидимостьСерий()
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ЗаказПереработчику));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерийМатериалы(
ОбеспечениеВДокументахКлиентСервер.РежимПодборСерий());
Если ПараметрыФормы <> Неопределено Тогда
ОткрытьФорму(
"Обработка.ЗапросКоличестваИСерий.Форма",
ПараметрыФормы,
ЭтотОбъект,
,
,
,
Новый ОписаниеОповещения("ОбработатьВыборСкладаИСерииМатериалы", ЭтотОбъект, ПараметрыФормы));
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Обеспечение
&НаКлиенте
Процедура Подключаемый_ПроверитьВыполнениеЗаданияРаспределенияЗапасов()
Ошибка = Ложь;
Если ОбеспечениеВДокументахКлиент.НужноОбновитьДоступностьПослеЗаписи(ЭтотОбъект,
"Подключаемый_ПроверитьВыполнениеЗаданияРаспределенияЗапасов", Ошибка) Тогда
Если Объект.ГруппировкаЗатрат
= ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЗаказамНаПроизводство") Тогда
Элементы.МатериалыСтраницыГиперссылкаСостояниеОбеспечения.ТекущаяСтраница
= Элементы.МатериалыСтраницаГиперссылкаСостояниеОбеспеченияЗаказовНаПроизводство;
Иначе
ОбеспечениеВДокументахКлиент.НастроитьГиперссылкиСостояниеОбеспеченияПослеЗаписи(ЭтотОбъект, Ошибка);
КонецЕсли;
ОбновлятьКолонку = ОбеспечениеВДокументахКлиент.ОбновлятьКолонкуДоступноПослеРаспределенияЗапасов(ЭтотОбъект);
Если ОбновлятьКолонку Тогда
ОбновитьКолонкуДоступноПослеРаспределенияЗапасов();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьКолонкуДоступноПослеРаспределенияЗапасов()
ОбеспечениеВДокументахСервер.ОбновитьДоступностьПослеЗаписи(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ДатыОтгрузки
&НаКлиенте
Процедура ЗаполнитьДатуОтгрузки(ИмяТЧ)
МассивВыделенныхСтрок = Элементы[ИмяТЧ].ВыделенныеСтроки;
Если МассивВыделенныхСтрок.Количество() > 0 Тогда
ДатаОтгрузки = Объект.ДатаОтгрузки;
ДопПараметры = Новый Структура("МассивВыделенныхСтрок,ИмяТЧ", МассивВыделенныхСтрок, ИмяТЧ);
Оповещение = Новый ОписаниеОповещения("ЗаполнитьДатуОтгрузкиЗавершение", ЭтотОбъект, ДопПараметры);
ОбщегоНазначенияУТКлиент.ВвестиДатуСКонтролемПустогоЗначения(ДатаОтгрузки, НСтр("ru='Введите дату отгрузки'"), ЧастиДаты.Дата, Оповещение);
Иначе
ТекстПредупреждения = НСтр("ru='В документе не выбраны строки для заполнения. Дата отгрузки не будет заполнена.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьДатуОтгрузкиЗавершение(ВыбраннаяДата, ДополнительныеПараметры) Экспорт
Если ВыбраннаяДата <> Неопределено И ЗначениеЗаполнено(ВыбраннаяДата) Тогда
ДатаОтгрузки = ВыбраннаяДата;
МассивВыделенныхСтрок = ДополнительныеПараметры.МассивВыделенныхСтрок;
ЗаполнитьДатуОтгрузкиСервер(ДатаОтгрузки, ДополнительныеПараметры.ИмяТЧ, МассивВыделенныхСтрок);
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияДатОтгрузки(ДатаОтгрузки, Истина);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДатуОтгрузкиСервер(ДатаОтгрузки, ИмяТЧ, МассивВыделенныхСтрок = Неопределено)
ТабличнаяЧасть = ТабличнаяЧастьПоИмени(ИмяТЧ, ЭтаФорма);
ОбеспечениеВДокументахСервер.ЗаполнитьРеквизитВКоллекции(
ТабличнаяЧасть,
"ДатаОтгрузки",
ДатаОтгрузки,
МассивВыделенныхСтрок);
КонецПроцедуры
&НаСервере
Процедура НеОтгружатьЧастямиПриИзмененииСервер()
Если Объект.НеОтгружатьЧастями Тогда
Объект.ДатаОтгрузки = ОбеспечениеВДокументахСервер.МаксимальноеЗначениеВКоллекции(Объект.Материалы, "ДатаОтгрузки", '00010101');
ОбеспечениеВДокументахСервер.ЗаполнитьРеквизитВКоллекции(Объект.Материалы, "ДатаОтгрузки", Объект.ДатаОтгрузки);
КонецЕсли;
УстановитьВидимостьЭлементовФормыДатОтгрузки();
КонецПроцедуры
#КонецОбласти
#Область ДоступностьИВидимостьЭлементовНаФорме
&НаСервере
Процедура УстановитьВидимостьЭлементовФормыДатПоступления()
Элементы.ПродукцияЗаполнитьДатуПоступления.Видимость = Не Объект.ПоступлениеОднойДатой;
Элементы.ПродукцияДатаПоступления.Видимость = Не Объект.ПоступлениеОднойДатой;
Элементы.ВозвратныеОтходыЗаполнитьДатуПоступления.Видимость = Не Объект.ПоступлениеОднойДатой;
Элементы.ВозвратныеОтходыДатаПоступления.Видимость = Не Объект.ПоступлениеОднойДатой;
Элементы.ДатаПоступления1.Видимость = Объект.ПоступлениеОднойДатой;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовФормыДатОтгрузки()
Элементы.МатериалыЗаполнитьДатуОтгрузки.Видимость = Не Объект.НеОтгружатьЧастями;
Элементы.МатериалыДатаОтгрузки.Видимость = Не Объект.НеОтгружатьЧастями;
Элементы.ДатаОтгрузки.Видимость = Объект.НеОтгружатьЧастями;
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьЭлементовПоСтатусуСервер()
УстановитьПодписку = Ложь;
Если Объект.Статус = Перечисления.СтатусыЗаказовПереработчикам.НеСогласован
Или Объект.Статус = Перечисления.СтатусыЗаказовПереработчикам.Закрыт Тогда
УстановитьПодписку = Ложь;
ИначеЕсли Объект.Статус = Перечисления.СтатусыЗаказовПереработчикам.КОбеспечению
Или Объект.Статус = Перечисления.СтатусыЗаказовПереработчикам.КИсполнению Тогда
УстановитьПодписку = Объект.Согласован;
КонецЕсли;
МассивЭлементов = Новый Массив;
МассивЭлементов.Добавить("Дата");
МассивЭлементов.Добавить("Договор");
МассивЭлементов.Добавить("Валюта");
МассивЭлементов.Добавить("Организация");
МассивЭлементов.Добавить("Партнер");
МассивЭлементов.Добавить("Контрагент");
МассивЭлементов.Добавить("ЖелаемаяДатаПоступления");
МассивЭлементов.Добавить("НеОтгружатьЧастями");
МассивЭлементов.Добавить("ДатаОтгрузки");
МассивЭлементов.Добавить("ПоступлениеОднойДатой");
МассивЭлементов.Добавить("ДатаПоступления");
МассивЭлементов.Добавить("ВернутьМногооборотнуюТару");
МассивЭлементов.Добавить("СрокВозвратаМногооборотнойТары");
МассивЭлементов.Добавить("БанковскийСчет");
МассивЭлементов.Добавить("ПродукцияНоменклатура");
МассивЭлементов.Добавить("ПродукцияХарактеристика");
МассивЭлементов.Добавить("ПродукцияКоличествоУпаковок");
МассивЭлементов.Добавить("ПродукцияУпаковка");
МассивЭлементов.Добавить("ПродукцияЦена");
МассивЭлементов.Добавить("ПродукцияСтавкаНДС");
МассивЭлементов.Добавить("ПродукцияСумма");
МассивЭлементов.Добавить("МатериалыНоменклатура");
МассивЭлементов.Добавить("МатериалыХарактеристика");
МассивЭлементов.Добавить("МатериалыКоличествоУпаковок");
МассивЭлементов.Добавить("МатериалыУпаковка");
МассивЭлементов.Добавить("МатериалыВидЦены");
МассивЭлементов.Добавить("МатериалыЦена");
МассивЭлементов.Добавить("МатериалыСумма");
МассивЭлементов.Добавить("Продукция;ПередНачаломДобавления,ПередУдалением");
МассивЭлементов.Добавить("Материалы;ПередНачаломДобавления,ПередУдалением;МатериалыДатаОтгрузки,МатериалыВариантОбеспечения");
МассивЭлементов.Добавить("ПродукцияКонтекстноеМенюДобавить");
МассивЭлементов.Добавить("ПродукцияКонтекстноеМенюСкопировать");
МассивЭлементов.Добавить("ПродукцияКонтекстноеМенюУдалить");
МассивЭлементов.Добавить("ПродукцияДобавить");
МассивЭлементов.Добавить("ПродукцияИзменить");
МассивЭлементов.Добавить("ПродукцияСкопировать");
МассивЭлементов.Добавить("ПродукцияУдалить");
МассивЭлементов.Добавить("ПродукцияЗаполнитьПоСпецификации");
МассивЭлементов.Добавить("ПродукцияЗаполнитьДатуПоступления");
МассивЭлементов.Добавить("ПродукцияОткрытьПодбор");
МассивЭлементов.Добавить("ПродукцияПоискПоШтрихкоду");
МассивЭлементов.Добавить("ПродукцияЗагрузитьДанныеИзТСД");
МассивЭлементов.Добавить("МатериалыКонтекстноеМенюДобавить");
МассивЭлементов.Добавить("МатериалыКонтекстноеМенюСкопировать");
МассивЭлементов.Добавить("МатериалыКонтекстноеМенюУдалить");
МассивЭлементов.Добавить("МатериалыДобавить");
МассивЭлементов.Добавить("МатериалыИзменить");
МассивЭлементов.Добавить("МатериалыСкопировать");
МассивЭлементов.Добавить("МатериалыУдалить");
МассивЭлементов.Добавить("МатериалыЗаполнитьПоСпецификации");
МассивЭлементов.Добавить("МатериалыЗаполнитьЦеныПоВидуЦен");
МассивЭлементов.Добавить("МатериалыЗаполнитьДатуОтгрузки");
МассивЭлементов.Добавить("МатериалыЗаполнитьСклад");
МассивЭлементов.Добавить("МатериалыДополнитьМногооборотнойТарой");
МассивЭлементов.Добавить("МатериалыОткрытьПодбор");
МассивЭлементов.Добавить("МатериалыПоискПоШтрихкоду");
МассивЭлементов.Добавить("МатериалыЗагрузитьДанныеИзТСД");
ОбщегоНазначенияУТ.УстановитьПодпискуНаСобытияИзмененияЭлементовФормы(ЭтаФорма, МассивЭлементов, УстановитьПодписку);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьВидаЦен()
ДоступныеВидыЦен = ОпределитьДоступныеВидыЦен();
Если ДоступныеВидыЦен = Неопределено Тогда
Элементы.ВидЦены.Видимость = Истина;
Элементы.ЗаполнятьВидыЦенПоУмолчанию.Видимость = Ложь;
ИначеЕсли ДоступныеВидыЦен.Количество() > 1 Тогда
Элементы.ВидЦены.Видимость = Ложь;
Элементы.ЗаполнятьВидыЦенПоУмолчанию.Видимость = Истина;
ИначеЕсли ДоступныеВидыЦен.Количество() = 1 Тогда
Элементы.ВидЦены.Видимость = Ложь;
Элементы.ЗаполнятьВидыЦенПоУмолчанию.Видимость = Истина;
Иначе
Элементы.ВидЦены.Видимость = Ложь;
Элементы.ЗаполнятьВидыЦенПоУмолчанию.Видимость = Ложь;
КонецЕсли;
Если ДоступныеВидыЦен <> Неопределено И ДоступныеВидыЦен.Количество() = 0 Тогда
Объект.ВидЦены = Справочники.ВидыЦен.ПустаяСсылка();
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ОпределитьДоступныеВидыЦен()
Если Не ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовЦен") Тогда
СтруктураОтбора = Новый Структура;
СтруктураОтбора.Вставить("ПометкаУдаления", Ложь);
СтруктураОтбора.Вставить("ЦенаВключаетНДС", Ложь);
СтруктураОтбора.Вставить("Статус", Перечисления.СтатусыДействияВидовЦен.Действует);
Возврат Справочники.ВидыЦен.ДоступныеВидыЦен(СтруктураОтбора);
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
&НаСервере
Процедура УстановитьВидимостьДоговора()
ВидимостьДоговора = Ложь;
ПараметрыОбъекта = Новый Структура("Партнер, Контрагент, Организация, Соглашение, Договор");
ЗаполнитьЗначенияСвойств(ПараметрыОбъекта, Объект);
ЗакупкиСервер.УстановитьДоступностьДоговора(
ПараметрыОбъекта,
Элементы.Договор.Доступность,
ВидимостьДоговора,
Объект.Договор);
Элементы.Договор.Видимость = ВидимостьДоговора;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьОбеспечения()
ЕстьПраво = ОбеспечениеВДокументахСервер.ЕстьПравоПросмотраГиперссылкиСостоянияОбеспечения();
Элементы.МатериалыСтраницыГиперссылкаСостояниеОбеспечения.Видимость = ЕстьПраво;
Если Не ПравоДоступа("Добавление", Метаданные.Документы.КорректировкаНазначенияТоваров)
Или Не ПолучитьФункциональнуюОпцию("ИспользоватьОбособленноеОбеспечениеЗаказов") Тогда
Элементы.СоздатьКорректировкуНазначенияСнятиеРезерва.Видимость = Ложь;
Элементы.СоздатьКорректировкуНазначенияРезервирование.Видимость = Ложь;
КонецЕсли;
НастроитьГиперссылкиСостояниеОбеспечения();
Элементы.ДатаОтгрузки.Подсказка = ОбеспечениеВДокументахСервер.ПодсказкаДатаОтгрузки();
КонецПроцедуры
&НаСервере
Процедура НастроитьГиперссылкиСостояниеОбеспечения()
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЗаказамНаПроизводство Тогда
Элементы.МатериалыСтраницыГиперссылкаСостояниеОбеспечения.ТекущаяСтраница
= Элементы.МатериалыСтраницаГиперссылкаСостояниеОбеспеченияЗаказовНаПроизводство;
Иначе
ОбеспечениеВДокументахСервер.НастроитьГиперссылкиСостояниеОбеспечения(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НастроитьГиперссылкиСостояниеОбеспеченияКлиент()
Если Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЗаказамНаПроизводство") Тогда
Элементы.МатериалыСтраницыГиперссылкаСостояниеОбеспечения.ТекущаяСтраница
= Элементы.МатериалыСтраницаГиперссылкаСостояниеОбеспеченияЗаказовНаПроизводство;
ИначеЕсли Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства") Тогда
ОбеспечениеВДокументахКлиент.НастроитьГиперссылкиСостояниеОбеспечения(ЭтотОбъект);
Иначе
ОбеспечениеВДокументахКлиент.НастроитьГиперссылкиСостояниеОбеспечения(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьЭлементовПоВерсииПартионногоУчета()
Элементы.ВозвратныеОтходыСтатьяКалькуляции.Видимость = ПартионныйУчетВерсии22;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура НастроитьЭлементыФормыПоФункциональнымОпциям(Форма)
Элементы = Форма.Элементы;
Если Не Форма.ИспользоватьНесколькоСкладов Тогда
Элементы.ПродукцияПолучатель.Заголовок = НСтр("ru = 'Подразделение'");
Элементы.ВозвратныеОтходыПолучатель.Заголовок = НСтр("ru = 'Подразделение'");
КонецЕсли;
Элементы.РедактированиеЭтаповОбеспечениеМатериаламиИРаботамиВходитВНабор.Видимость =
Форма.ДоступноИспользованиеНаборовВПроизводстве;
КонецПроцедуры
#КонецОбласти
#Область Доставка
&НаСервере
Процедура ЗаполнитьУстановитьРеквизитыДоставкиСервер(ИмяЭлементаФормы)
ДоставкаТоваров.ЗаполнитьРеквизитыДоставки(Элементы, ИмяЭлементаФормы, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьИзменениеАдреса(Элемент, ИмяРеквизитаАдреса)
ИменаРеквизитов = ДоставкаТоваровКлиентСервер.ИменаРеквизитовАдресовДоставки(ИмяРеквизитаАдреса);
Если ПустаяСтрока(Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки]) Тогда
ДоставкаТоваровКлиент.ОчиститьПредставлениеАдреса(
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначенияПолей],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначение]);
Иначе
ДоставкаТоваровКлиент.ПриИзмененииПредставленияАдреса(
Элемент,
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначение]);
АдресДоставкиПриИзмененииНаСервере(
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставки],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначение],
Объект[ИменаРеквизитов.ИмяРеквизитаАдресаДоставкиЗначенияПолей]);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура АдресДоставкиПриИзмененииНаСервере(Адрес, АдресЗначение, АдресЗначенияПолей)
АдресВСвободнойФорме = УправлениеКонтактнойИнформацией.АдресВведенВСвободнойФорме(АдресЗначение);
Если НЕ АдресВСвободнойФорме Тогда
ДанныеСтраны = УправлениеКонтактнойИнформацией.СтранаАдресаКонтактнойИнформации(АдресЗначение);
НоваяСтруктураАдреса = УправлениеКонтактнойИнформацией.СведенияОбАдресе();
НоваяСтруктураАдреса.Представление = Адрес;
НоваяСтруктураАдреса.Страна = ДанныеСтраны.Наименование;
НоваяСтруктураАдреса.КодСтраны = ДанныеСтраны.Код;
АдресЗначение = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВJSON(
НоваяСтруктураАдреса,
Перечисления.ТипыКонтактнойИнформации.Адрес);
УстановитьТипАдресаВСвободнойФорме(АдресЗначение);
КонецЕсли;
АдресЗначенияПолей = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияВXML(
АдресЗначение,
Адрес,
Перечисления.ТипыКонтактнойИнформации.Адрес);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура УстановитьТипАдресаВСвободнойФорме(АдресДоставкиЗначение)
СтрокаЗаменяемыйТип = """addressType"": ""Административно-территориальный""";
СтрокаСвободныйТип = """addressType"": ""ВСвободнойФорме""";
АдресДоставкиЗначение = СтрЗаменить(АдресДоставкиЗначение, СтрокаЗаменяемыйТип, СтрокаСвободныйТип);
КонецПроцедуры
#КонецОбласти
#Область КонтрольНесогласованныхИзменений
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент)
Если Элемент.Имя = "Дата" Тогда
ДатаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Договор" Тогда
ДоговорПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Валюта" Тогда
ВалютаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Организация" Тогда
ОрганизацияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Партнер" Тогда
ПартнерПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "Контрагент" Тогда
КонтрагентПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "НеОтгружатьЧастями" Тогда
НеОтгружатьЧастямиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ДатаОтгрузки" Тогда
ДатаОтгрузкиПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ПоступлениеОднойДатой" Тогда
ПоступлениеОднойДатойПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ДатаПоступления" Тогда
ДатаПоступленияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ВернутьМногооборотнуюТару" Тогда
ВернутьМногооборотнуюТаруПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ПродукцияНоменклатура" Тогда
ПродукцияНоменклатураПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ПродукцияХарактеристика" Тогда
ПродукцияХарактеристикаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ПродукцияПолучатель" Тогда
ПродукцияПолучательПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ПродукцияКоличествоУпаковок" Тогда
ПродукцияКоличествоУпаковокПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ПродукцияУпаковка" Тогда
ПродукцияУпаковкаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ПродукцияСписатьНаРасходы" Тогда
ПродукцияСписатьНаРасходыПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ПродукцияСтатьяРасходов" Тогда
ПродукцияСтатьяРасходовПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "МатериалыНоменклатура" Тогда
МатериалыНоменклатураПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "МатериалыХарактеристика" Тогда
МатериалыХарактеристикаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "МатериалыКоличествоУпаковок" Тогда
МатериалыКоличествоУпаковокПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "МатериалыОбособленно" Тогда
МатериалыОбособленноПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "МатериалыУпаковка" Тогда
МатериалыУпаковкаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "МатериалыВидЦены" Тогда
МатериалыВидЦеныПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "МатериалыЦена" Тогда
МатериалыЦенаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "МатериалыСумма" Тогда
МатериалыСуммаПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ПродукцияОтмененоПричиныОтменыНеИспользуются" Тогда
ПродукцияОтмененоПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "ПродукцияОтменено" Тогда
ПродукцияОтмененоПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "МатериалыСерия" Тогда
МатериалыСерияПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "МатериалыСклад" Тогда
МатериалыСкладПриИзменении(Элемент);
ИначеЕсли Элемент.Имя = "МатериалыОтменено" Тогда
МатериалыОтмененоПриИзменении(Элемент);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда)
Если Команда.Имя = "Продукция_Заполнить_ЗаполнитьДатуПоступления" Тогда
ПродукцияЗаполнитьДатуПоступления(Команда);
ИначеЕсли Команда.Имя = "Продукция_Заполнить_ЗаполнитьПолучателя" Тогда
ПродукцияЗаполнитьПолучателя(Команда);
ИначеЕсли Команда.Имя = "Продукция_Общее_ПодобратьТовары" Тогда
ПродукцияОбщееПодобратьТовары(Команда);
ИначеЕсли Команда.Имя = "Продукция_Общее_ПоискПоШтрихкоду" Тогда
ПродукцияОбщееПоискПоШтрихкоду(Команда);
ИначеЕсли Команда.Имя = "Продукция_Общее_ЗагрузитьДанныеИзТСД" Тогда
ПродукцияОбщееЗагрузитьДанныеИзТСД(Команда);
ИначеЕсли Команда.Имя = "Материалы_Заполнить_ЗаполнитьЦеныПоВидуЦен" Тогда
МатериалыЗаполнитьЦеныПоВидуЦен(Команда);
ИначеЕсли Команда.Имя = "Материалы_Заполнить_ЗаполнитьДатуОтгрузки" Тогда
МатериалыЗаполнитьДатуОтгрузки(Команда);
ИначеЕсли Команда.Имя = "Материалы_Заполнить_ЗаполнитьСклад" Тогда
МатериалыЗаполнитьСклад(Команда);
ИначеЕсли Команда.Имя = "Материалы_Заполнить_ДополнитьМногооборотнойТарой" Тогда
ДополнитьМногооборотнойТарой(Команда);
ИначеЕсли Команда.Имя = "Материалы_Общее_ПодобратьТовары" Тогда
МатериалыОбщееПодобратьТовары(Команда);
ИначеЕсли Команда.Имя = "Материалы_Общее_ПоискПоШтрихкоду" Тогда
МатериалыОбщееПоискПоШтрихкоду(Команда);
ИначеЕсли Команда.Имя = "Материалы_Общее_ЗагрузитьДанныеИзТСД" Тогда
МатериалыОбщееЗагрузитьДанныеИзТСД(Команда);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеНажатие(Элемент)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ)
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ)
Если Элемент.Имя = "Продукция" Тогда
ПродукцияПередУдалением(Элемент, Отказ);
ИначеЕсли Не Элемент.Имя = "Материалы" Тогда
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Если Элемент.Имя = "Продукция" Тогда
ПродукцияПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Неопределено);
Иначе
ОбщегоНазначенияУТКлиент.КонтрольНеСогласованныхИзмененийВызватьИсключение(ЭтаФорма, Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзменении_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПриИзменении.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПриИзменении(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Нажатие_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Нажатие.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеНажатие(Элемент);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_Команда_УстановитьДоступностьЭлементовПоСтатусуСервер(Команда)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.Команды.Свойство(Команда.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеКоманды(Команда);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломИзменения_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломИзменения.Свойство(Элемент.Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломИзменения(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередУдалением_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередУдалением.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередУдалением(Элемент, Отказ);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПередНачаломДобавления_УстановитьДоступностьЭлементовПоСтатусуСервер(Элемент, Отказ, Копирование, Родитель, Группа)
Если ОбщегоНазначенияУТКлиент.ПриДействииСЭлементомЗависящимОтСтатуса(ЭтаФорма) Тогда
Возврат;
КонецЕсли;
Имя = Элемент.Имя;
Если СтруктураДействийКонтрольНеСогласованныхИзменений.ПередНачаломДобавления.Свойство(Имя) Тогда
КонтрольНеСогласованныхИзмененийОбработатьСобытиеПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизитаЗависящегоОтСтатуса()
ИзменитьДокументСервер();
ОбщегоНазначенияУТКлиент.ПослеИзмененияРеквизитаЗависящегоОтСтатуса(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область ГруппировкаЗатрат
&НаСервере
Процедура ЗаполнитьСписокВыбораГруппировкиЗатрат()
ПараметрыИспользования = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПараметрыИспользования();
ПараметрыИспользования.ПоЗаказамНаПроизводство = ПолучитьФункциональнуюОпцию("УправлениеПредприятием");
ПараметрыИспользования.ПоЭтапамПроизводства = ПолучитьФункциональнуюОпцию("УправлениеПредприятием");
ПараметрыИспользования.БезГруппировки = Не Объект.ОбосабливатьПоНазначениюПродукции
Или (Объект.Проведен
И Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки);
ПараметрыИспользования.ПоСпецификациям =
ИспользоватьПроизводство
И (Не Объект.ОбосабливатьПоНазначениюПродукции
Или (Объект.Проведен
И Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям));
Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ЗаполнитьДанныеВыбора(
Элементы.ГруппировкаЗатрат.СписокВыбора, ПараметрыИспользования);
КонецПроцедуры
&НаСервере
Процедура ГруппировкаЗатратПриИзмененииНаСервере()
Если Не ЗначениеЗаполнено(Объект.ГруппировкаЗатрат) Тогда
Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки;
КонецЕсли;
ПерепривязатьМатериалы = ГруппировкаЗатратДоИзменения = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции
И Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям;
Если ПерепривязатьМатериалы Тогда
ПродукцияКопия = Объект.Продукция.Выгрузить(, "НомерГруппыЗатрат,Спецификация");
ПродукцияКопия.Свернуть("НомерГруппыЗатрат,Спецификация");
ВсегоСтрок = ПродукцияКопия.Количество();
ПродукцияКопия.Свернуть("НомерГруппыЗатрат");
ПерепривязатьМатериалы = ВсегоСтрок = ПродукцияКопия.Количество();
КонецЕсли;
Объект.ПереработкаПоЗаказу = (
Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЗаказамНаПроизводство
Или
Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства);
Если ПерепривязатьМатериалы Тогда
ВыполнитьСменуГруппировкиЗатратСПродукцииНаСпецификации();
ИначеЕсли Объект.ПереработкаПоЗаказу Тогда
Объект.Продукция.Очистить();
Объект.ВозвратныеОтходы.Очистить();
Объект.Материалы.Очистить();
Объект.Услуги.Очистить();
Иначе
Для каждого ДанныеСтроки Из Объект.ВозвратныеОтходы Цикл
ДанныеСтроки.НомерГруппыЗатрат = 0;
КонецЦикла;
Для каждого ДанныеСтроки Из Объект.Материалы Цикл
ДанныеСтроки.НомерГруппыЗатрат = 0;
КонецЦикла;
Для каждого ДанныеСтроки Из Объект.Продукция Цикл
ДанныеСтроки.НомерГруппыЗатрат = 0;
КонецЦикла;
Для каждого ДанныеСтроки Из Объект.Продукция Цикл
ЗаполнитьНомерГруппыЗатратВСтрокеПродукции(ДанныеСтроки, Объект);
КонецЦикла;
Объект.Услуги.Очистить();
НадписьЗаголовокЗаказы = Новый ФорматированнаяСтрока("");
КонецЕсли;
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции Тогда
Объект.СпособРаспределенияЗатратНаВыходныеИзделия = Перечисления.СпособыРаспределенияЗатратНаВыходныеИзделия.ПустаяСсылка();
ИначеЕсли Не ЗначениеЗаполнено(Объект.СпособРаспределенияЗатратНаВыходныеИзделия) Тогда
Объект.СпособРаспределенияЗатратНаВыходныеИзделия = Перечисления.СпособыРаспределенияЗатратНаВыходныеИзделия.ПоДолямСтоимости;
КонецЕсли;
СпособРаспределенияЗатратНаВыходныеИзделияПриИзмененииНаСервере();
ЗаполнитьУслугиПоПродукции(Объект);
ПриИзмененииСуммыУслуг(ЭтаФорма);
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки Тогда
ПриИзмененииСуммыУслугиСервер();
Иначе
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
КонецЕсли;
ЗаполнитьПредставлениеГруппыЗатрат();
НастроитьФормуПоСпособуГруппировкиЗатрат();
ГруппировкаЗатратДоИзменения = Объект.ГруппировкаЗатрат;
ОпределитьКоличествоВыходныхИзделий(ЭтаФорма);
ПараметрыВстраивания = Документы.ЗаказПереработчику.ДоступныеОстаткиПараметрыВстраивания(Объект);
ДоступныеОстаткиПараметрыВстраивания = Неопределено;
ОбеспечениеВДокументахСервер.ДоступныеОстаткиПриСозданииНаСервере(ЭтотОбъект, ПараметрыВстраивания);
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
УстановитьВидимостьОбеспечения();
КонецПроцедуры
&НаСервере
Процедура ВыполнитьСменуГруппировкиЗатратСПродукцииНаСпецификации()
Для каждого СтрокаПродукция Из Объект.Продукция Цикл
СтруктураПоиска = Новый Структура("Спецификация", СтрокаПродукция.Спецификация);
СписокСтрок = Объект.Продукция.НайтиСтроки(СтруктураПоиска);
Для каждого СтрокаПродукцияСТакойжеСпецификацией Из СписокСтрок Цикл
Если СтрокаПродукцияСТакойжеСпецификацией.НомерГруппыЗатрат = СтрокаПродукция.НомерГруппыЗатрат Тогда
Продолжить;
КонецЕсли;
СтруктураПоиска = Новый Структура("НомерГруппыЗатрат", СтрокаПродукцияСТакойжеСпецификацией.НомерГруппыЗатрат);
СписокСтрок = Объект.ВозвратныеОтходы.НайтиСтроки(СтруктураПоиска);
Для каждого Строкаотход Из СписокСтрок Цикл
Строкаотход.НомерГруппыЗатрат = СтрокаПродукция.НомерГруппыЗатрат;
КонецЦикла;
СписокСтрок = Объект.Материалы.НайтиСтроки(СтруктураПоиска);
Для каждого СтрокаМатериал Из СписокСтрок Цикл
СтрокаМатериал.НомерГруппыЗатрат = СтрокаПродукция.НомерГруппыЗатрат;
КонецЦикла;
СтрокаПродукцияСТакойжеСпецификацией.НомерГруппыЗатрат = СтрокаПродукция.НомерГруппыЗатрат ;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура НастроитьФормуПоСпособуГруппировкиЗатрат()
#Область Заголовки
ЗаголовокГруппы = ПереработкаНаСторонеКлиентСервер.ЗаголовокПоляГруппыЗатрат(
Объект.ГруппировкаЗатрат, Объект.ОбосабливатьПоНазначениюПродукции);
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции Тогда
ПодсказкаГруппыПродукция = НСтр("ru = 'Продукция к которой относится продукция'");
ПодсказкаГруппыОтходы = НСтр("ru = 'Продукция к которой относится возвратный отход'");
ПодсказкаГруппыМатериалы = НСтр("ru = 'Продукция к которой относится материал'");
ПодсказкаГруппыУслуги = НСтр("ru = 'Продукция к которой относится услуга'");
ЗаголовокКомандыЗаполнитьГруппуЗатрат = НСтр("ru = 'Продукцию'");
ИначеЕсли Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям Тогда
ПодсказкаГруппыПродукция = НСтр("ru = 'Спецификация к которой относится продукция'");
ПодсказкаГруппыОтходы = НСтр("ru = 'Спецификация к которой относится возвратный отход'");
ПодсказкаГруппыМатериалы = НСтр("ru = 'Спецификация к которой относится материал'");
ПодсказкаГруппыУслуги = НСтр("ru = 'Спецификация к которой относится услуга'");
ЗаголовокКомандыЗаполнитьГруппуЗатрат = НСтр("ru = 'Спецификацию'");
ИначеЕсли Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЗаказамНаПроизводство Тогда
ПодсказкаГруппыПродукция = НСтр("ru = 'Заказ (этап, спецификация) к которому относится продукция'");
ПодсказкаГруппыОтходы = НСтр("ru = 'Заказ (этап, спецификация) к которому относится возвратный отход'");
ПодсказкаГруппыМатериалы = НСтр("ru = 'Заказ (этап, спецификация) к которому относится материал'");
ПодсказкаГруппыУслуги = НСтр("ru = 'Заказ (этап, спецификация) к которому относится услуга'");
ЗаголовокКомандыЗаполнитьГруппуЗатрат = НСтр("ru = 'Заказ (этап, спецификация)'");
ИначеЕсли Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства Тогда
ПодсказкаГруппыПродукция = НСтр("ru = 'Этап к которому относится продукция'");
ПодсказкаГруппыОтходы = НСтр("ru = 'Этап к которому относится возвратный отход'");
ПодсказкаГруппыМатериалы = НСтр("ru = 'Этап к которому относится материал'");
ПодсказкаГруппыУслуги = НСтр("ru = 'Этап к которому относится услуга'");
ЗаголовокКомандыЗаполнитьГруппуЗатрат = НСтр("ru = 'Этап производства'");
КонецЕсли;
Если Объект.ГруппировкаЗатрат <> Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки Тогда
Элементы.ПродукцияГруппаЗатрат.Заголовок = ЗаголовокГруппы;
Элементы.ВозвратныеОтходыГруппаЗатрат.Заголовок = ЗаголовокГруппы;
Элементы.МатериалыГруппаЗатрат.Заголовок = ЗаголовокГруппы;
Элементы.УслугиГруппаЗатрат.Заголовок = ЗаголовокГруппы;
Элементы.ПродукцияГруппаЗатрат.Подсказка = ПодсказкаГруппыПродукция;
Элементы.ВозвратныеОтходыГруппаЗатрат.Подсказка = ПодсказкаГруппыОтходы;
Элементы.МатериалыГруппаЗатрат.Подсказка = ПодсказкаГруппыМатериалы;
Элементы.УслугиГруппаЗатрат.Подсказка = ПодсказкаГруппыУслуги;
Элементы.ВозвратныеОтходыЗаполнитьГруппуЗатрат.Заголовок = ЗаголовокКомандыЗаполнитьГруппуЗатрат;
Элементы.МатериалыЗаполнитьГруппуЗатрат.Заголовок = ЗаголовокКомандыЗаполнитьГруппуЗатрат;
КонецЕсли;
#КонецОбласти
#Область Видимость
Элементы.ПродукцияГруппаЗатрат.Видимость = Объект.ПереработкаПоЗаказу;
ПоЭтапам = (Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства);
Элементы.СтраницаПродукцияЭтапов.Видимость = ПоЭтапам;
Элементы.СтраницаМатериалыЭтапов.Видимость = ПоЭтапам;
Элементы.СтраницаПродукция.Видимость = НЕ ПоЭтапам;
Элементы.СтраницаМатериалы.Видимость = НЕ ПоЭтапам;
Элементы.СуммаВсегоБезНДСМатериалов.Видимость = НЕ ПоЭтапам;
Элементы.ПродукцияПерезаполнить.Видимость =
Объект.ГруппировкаЗатрат <> Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки
И ИспользоватьПроизводство;
Элементы.ВозвратныеОтходыГруппаЗатрат.Видимость = (Объект.ГруппировкаЗатрат <> Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки);
Элементы.МатериалыГруппаЗатрат.Видимость = (Объект.ГруппировкаЗатрат <> Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки);
Элементы.ВозвратныеОтходыЗаполнитьГруппуЗатрат.Видимость = (Объект.ГруппировкаЗатрат <> Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки);
Элементы.МатериалыЗаполнитьГруппуЗатрат.Видимость = (Объект.ГруппировкаЗатрат <> Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки);
Элементы.ПродукцияПодобратьПоЗаказамНаПроизводство.Видимость = Объект.ПереработкаПоЗаказу;
Элементы.УслугиЗапланировано.Видимость = Ложь;
Элементы.УслугиЗапланировано.Видимость = (Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЗаказамНаПроизводство);
Элементы.ПродукцияСпецификация.Видимость = (
Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям
ИЛИ Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции);
Элементы.ЗакрытьЗаказ.Видимость = Не Объект.ПереработкаПоЗаказу;
Элементы.НадписьЗаголовокЗаказы.Видимость = Объект.ПереработкаПоЗаказу;
Элементы.ПродукцияОтменитьНепоставленныеСтроки.Видимость = Не Объект.ПереработкаПоЗаказу;
Элементы.ВозвратныеОтходыОтменитьНепоставленныеСтроки.Видимость = Не Объект.ПереработкаПоЗаказу;
Элементы.МатериалыОтменитьНеотработанныеСтроки.Видимость = Не Объект.ПереработкаПоЗаказу;
ИспользоватьСтатусы = ПолучитьФункциональнуюОпцию("ИспользоватьСтатусыЗаказовПереработчикам") Или Объект.ПереработкаПоЗаказу;
Элементы.Статус.Видимость = ИспользоватьСтатусы;
Элементы.СпособРаспределенияЗатратНаВыходныеИзделия.Видимость =
Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЗаказамНаПроизводство
Или Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям;
#КонецОбласти
#Область Прочее
ЕстьКнопкаОткрытия = Объект.ПереработкаПоЗаказу;
Элементы.ПродукцияГруппаЗатрат.КнопкаОткрытия = ЕстьКнопкаОткрытия;
Элементы.ВозвратныеОтходыГруппаЗатрат.КнопкаОткрытия = ЕстьКнопкаОткрытия;
Элементы.МатериалыГруппаЗатрат.КнопкаОткрытия = ЕстьКнопкаОткрытия;
Элементы.УслугиГруппаЗатрат.ГиперссылкаЯчейки = ЕстьКнопкаОткрытия;
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки Тогда
Элементы.СтраницыУслуги.ТекущаяСтраница = Элементы.СтраницаОднаУслуга;
Иначе
Элементы.СтраницыУслуги.ТекущаяСтраница = Элементы.СтраницаНесколькоУслуг;
КонецЕсли;
МассивТиповВыбора = ?(
Не ИспользоватьУправлениеПроизводством2_2
Или
Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЗаказамНаПроизводство")
Или
Не ИспользоватьПроизводство,
НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь),
НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТареРаботе(Ложь));
МассивПараметровВыбора = Новый Массив;
МассивПараметровВыбора.Добавить(Новый ПараметрВыбора("Отбор.ТипНоменклатуры", Новый ФиксированныйМассив(МассивТиповВыбора)));
Элементы.ПродукцияНоменклатура.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
Элементы.ВозвратныеОтходыНоменклатура.ПараметрыВыбора = Новый ФиксированныйМассив(МассивПараметровВыбора);
#КонецОбласти
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПредставлениеГруппыЗатрат()
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки Тогда
Возврат;
КонецЕсли;
ИмяПоляГруппаЗатрат = ИмяПоляГруппаЗатрат(Объект);
ПараметрыГруппыЗатрат = Новый Структура("Распоряжение, Спецификация,"+ИмяПоляГруппаЗатрат);
СписокТЧ = Новый Массив;
СписокТЧ.Добавить(Объект.Продукция);
СписокТЧ.Добавить(Объект.ВозвратныеОтходы);
СписокТЧ.Добавить(Объект.Материалы);
Для каждого СтрокаУслуга Из Объект.Услуги Цикл
ЗаполнитьЗначенияСвойств(ПараметрыГруппыЗатрат, СтрокаУслуга);
ПредставлениеГруппы = ПереработкаНаСтороне.ПредставлениеГруппыЗатрат(
ПараметрыГруппыЗатрат,
Объект.ГруппировкаЗатрат,
Объект.Продукция,
ИмяПоляГруппаЗатрат);
СтрокаУслуга.ГруппаЗатрат = ПредставлениеГруппы;
Для каждого ТабличнаяЧасть Из СписокТЧ Цикл
Для каждого ДанныеСтроки Из ТабличнаяЧасть Цикл
Если ДанныеСтроки[ИмяПоляГруппаЗатрат] = СтрокаУслуга[ИмяПоляГруппаЗатрат] Тогда
ДанныеСтроки.ГруппаЗатрат = ПредставлениеГруппы;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Для каждого ТабличнаяЧасть Из СписокТЧ Цикл
Для каждого ДанныеСтроки Из ТабличнаяЧасть Цикл
Если НЕ ЗначениеЗаполнено(ДанныеСтроки[ИмяПоляГруппаЗатрат]) Тогда
ДанныеСтроки.ГруппаЗатрат = "";
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПредставленияГруппЗатрат(Знач СписокГруппЗатрат, Знач ГруппировкаЗатрат, Знач Продукция, Знач ИмяПоляГруппаЗатрат)
Результат = Новый Соответствие;
Для каждого ПараметрыГруппыЗатрат Из СписокГруппЗатрат Цикл
ПредставлениеГруппыЗатрат = ПереработкаНаСтороне.ПредставлениеГруппыЗатрат(
ПараметрыГруппыЗатрат,
ГруппировкаЗатрат,
Продукция,
ИмяПоляГруппаЗатрат);
Результат.Вставить(ПараметрыГруппыЗатрат[ИмяПоляГруппаЗатрат], ПредставлениеГруппыЗатрат);
КонецЦикла;
Возврат Результат;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьНомерГруппыЗатратВСтрокеПродукцииПередОкончаниемРедактирования(СтрокаПродукция, Объект, КешТекущейСтроки, НоваяСтрока)
Если (Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям")
И (КешТекущейСтроки.Спецификация <> СтрокаПродукция.Спецификация))
Или (Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции")
И (КешТекущейСтроки.Номенклатура <> СтрокаПродукция.Номенклатура
Или КешТекущейСтроки.Характеристика <> СтрокаПродукция.Характеристика
Или КешТекущейСтроки.Назначение <> СтрокаПродукция.Назначение)) Тогда
ЗаполнитьНомерГруппыЗатратВСтрокеПродукции(СтрокаПродукция, Объект);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ЗаполнитьНомерГруппыЗатратВСтрокеПродукции(СтрокаПродукция, Объект)
Если Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции") Тогда
СтруктураПоиска = Новый Структура("Номенклатура, Характеристика, Назначение");
ИначеЕсли Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям") Тогда
СтруктураПоиска = Новый Структура("Спецификация");
Иначе
Возврат;
КонецЕсли;
СтрокаПродукция.НомерГруппыЗатрат = Объект.МаксимальныйНомерГруппыЗатрат + 1;
ЗаполнитьЗначенияСвойств(СтруктураПоиска, СтрокаПродукция);
СписокСтрок = Объект.Продукция.НайтиСтроки(СтруктураПоиска);
Если СписокСтрок.Количество() > 0 И СписокСтрок[0] = СтрокаПродукция Тогда
СписокСтрок.Удалить(0);
КонецЕсли;
Если СписокСтрок.Количество() > 0 И СписокСтрок[0].НомерГруппыЗатрат <> 0 Тогда
СтрокаПродукция.НомерГруппыЗатрат = СписокСтрок[0].НомерГруппыЗатрат;
КонецЕсли;
Если СтрокаПродукция.НомерГруппыЗатрат > Объект.МаксимальныйНомерГруппыЗатрат Тогда
Объект.МаксимальныйНомерГруппыЗатрат = СтрокаПродукция.НомерГруппыЗатрат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьГруппуЗатрат(ИмяТЧ, МножественныйВыборСтрок = Ложь)
ТекущиеДанные = Элементы[ИмяТЧ].ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ИмяПоляГруппаЗатрат = ИмяПоляГруппаЗатрат(Объект);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ГруппировкаЗатрат", Объект.ГруппировкаЗатрат);
ПараметрыФормы.Вставить("Услуги", Объект.Услуги);
ПараметрыФормы.Вставить("НомерГруппыЗатрат", ТекущиеДанные[ИмяПоляГруппаЗатрат]);
ПараметрыФормы.Вставить("ИмяПоляГруппаЗатрат", ИмяПоляГруппаЗатрат);
ПараметрыФормы.Вставить(
"ЗаголовокГруппы",
ПереработкаНаСторонеКлиентСервер.ЗаголовокПоляГруппыЗатрат(
Объект.ГруппировкаЗатрат,
Объект.ОбосабливатьПоНазначениюПродукции));
СтруктураПараметров = Новый Структура("ИмяТЧ, МножественныйВыборСтрок", ИмяТЧ, МножественныйВыборСтрок);
ОписаниеОповещения = Новый ОписаниеОповещения("ВыбратьГруппуЗатратЗавершение", ЭтотОбъект, СтруктураПараметров);
ОткрытьФорму("Документ.ЗаказПереработчику.Форма.ВыборГруппыЗатрат", ПараметрыФормы,,,,, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьГруппуЗатратЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ЗаказПереработчику.Форма.ФормаДокумента.ВыбратьГруппуЗатратЗавершение");
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
ВыбратьГруппуЗатратЗавершениеНаСервере(РезультатЗакрытия, ДополнительныеПараметры);
КонецПроцедуры
&НаСервере
Процедура ВыбратьГруппуЗатратЗавершениеНаСервере(РезультатЗакрытия, ДополнительныеПараметры)
ИмяПоляГруппаЗатрат = ИмяПоляГруппаЗатрат(Объект);
Модифицированность = Истина;
ДанныеЭтапов = Новый Соответствие;
ИмяТЧ = ДополнительныеПараметры.ИмяТЧ;
МножественныйВыборСтрок = ДополнительныеПараметры.МножественныйВыборСтрок;
Если МножественныйВыборСтрок Тогда
ВыделенныеСтроки = Элементы[ИмяТЧ].ВыделенныеСтроки;
Иначе
ВыделенныеСтроки = Новый Массив;
ВыделенныеСтроки.Добавить(Элементы[ИмяТЧ].ТекущаяСтрока);
КонецЕсли;
ТабличнаяЧасть = ТабличнаяЧастьПоИмени(ИмяТЧ, ЭтотОбъект);
Для каждого ИдентификаторСтроки Из ВыделенныеСтроки Цикл
ТекущиеДанные = ТабличнаяЧасть.НайтиПоИдентификатору(ИдентификаторСтроки);
ТекущиеДанные[ИмяПоляГруппаЗатрат] = РезультатЗакрытия[ИмяПоляГруппаЗатрат];
ТекущиеДанные.ГруппаЗатрат = РезультатЗакрытия.ГруппаЗатрат;
Если ИмяТЧ = "Продукция" И Объект.ПереработкаПоЗаказу Тогда
ТекущиеДанные.Спецификация = РезультатЗакрытия.Спецификация;
КонецЕсли;
КонецЦикла;
ЗаполнитьУслугиПоПродукции(Объект);
ПриИзмененииСуммыУслуг(ЭтотОбъект);
ЗаполнитьПредставлениеГруппыЗатрат();
Если ИмяТЧ = "Материалы" Или ИмяТЧ = "РедактированиеЭтаповОбеспечениеМатериаламиИРаботами" Тогда
Если МножественныйВыборСтрок Тогда
ОбновитьКолонкуДоступноСервер();
Иначе
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецЕсли;
Если ИмяТЧ = "Продукция" Тогда
ТребуетсяЗаполнитьДанныеРаспоряжения = Истина;
Иначе
ТребуетсяУточнитьДанныеРаспоряжения = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ГруппировкаЗатратПриИзмененииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ЗаказПереработчику.Форма.ФормаДокумента.ГруппировкаЗатратПриИзмененииЗавершение");
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ГруппировкаЗатратПриИзмененииНаСервере();
Иначе
Объект.ГруппировкаЗатрат = ГруппировкаЗатратДоИзменения;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПроверитьЗаполнениеГруппыЗатрат(Отказ)
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки Тогда
Возврат;
КонецЕсли;
ШаблонСообщения = НСтр("ru = 'Не заполнена колонка ""%1"" в строке %2 списка ""%3""'");
ЗаголовокПоля = ПереработкаНаСторонеКлиентСервер.ЗаголовокПоляГруппыЗатрат(
Объект.ГруппировкаЗатрат, Объект.ОбосабливатьПоНазначениюПродукции);
СписокТЧ = Новый СписокЗначений;
СписокТЧ.Добавить("Продукция", НСтр("ru = 'Продукция'"));
СписокТЧ.Добавить("ВозвратныеОтходы", НСтр("ru = 'Возвратные отходы'"));
СписокТЧ.Добавить("Материалы", НСтр("ru = 'Сырье и материалы'"));
ИмяПоляГруппаЗатрат = ИмяПоляГруппаЗатрат(Объект);
Для каждого ПараметрыТЧ Из СписокТЧ Цикл
ТабличнаяЧасть = ТабличнаяЧастьПоИмени(ПараметрыТЧ.Значение, ЭтаФорма);
Если ПараметрыТЧ.Значение = "РедактированиеЭтаповВыходныеИзделия" Тогда
ИмяТЧ = "РедактированиеЭтапов.ВыходныеИзделия";
ИначеЕсли ПараметрыТЧ.Значение = "РедактированиеЭтаповПобочныеИзделия" Тогда
ИмяТЧ = "РедактированиеЭтапов.ПобочныеИзделия";
ИначеЕсли ПараметрыТЧ.Значение = "РедактированиеЭтаповОбеспечениеМатериаламиИРаботами" Тогда
ИмяТЧ = "РедактированиеЭтапов.ОбеспечениеМатериаламиИРаботами";
Иначе
ИмяТЧ = "Объект." + ПараметрыТЧ.Значение;
КонецЕсли;
Для каждого ДанныеСтроки Из ТабличнаяЧасть Цикл
Если НЕ ЗначениеЗаполнено(ДанныеСтроки[ИмяПоляГруппаЗатрат]) Тогда
ТекстСообщения = СтрШаблон(ШаблонСообщения, ЗаголовокПоля, ДанныеСтроки.НомерСтроки, ПараметрыТЧ.Представление);
ПутьКТЧ = ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти(ИмяТЧ, ДанныеСтроки.НомерСтроки, "ГруппаЗатрат");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, Объект.Ссылка, ПутьКТЧ,, Отказ);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ИмяПоляГруппаЗатрат(Объект)
Возврат ПереработкаНаСторонеКлиентСервер.ИмяПоляГруппаЗатратВЗаказеПереработчику(Объект);
КонецФункции
&НаСервере
Функция НомераГруппыЗатратВыделенныхСтрок(Коллекция, ВыделенныеСтроки)
НомераГруппыЗатрат = Новый Массив();
Для Каждого Идентификатор Из ВыделенныеСтроки Цикл
Строка = Коллекция.НайтиПоИдентификатору(Идентификатор);
Если ЗначениеЗаполнено(Строка.НомерГруппыЗатрат) Тогда
НомераГруппыЗатрат.Добавить(Строка.НомерГруппыЗатрат);
КонецЕсли;
КонецЦикла;
НомераГруппыЗатрат = ОбщегоНазначенияКлиентСервер.СвернутьМассив(НомераГруппыЗатрат);
Возврат НомераГруппыЗатрат;
КонецФункции
&НаСервере
Функция СтрокиПоНомеруГруппыЗатрат(Коллекция, НомераГруппыЗатрат)
Строки = Новый Массив;
Поле = "НомерГруппыЗатрат";
Таблица = Новый ТаблицаЗначений();
Таблица.Колонки.Добавить(Поле);
Таблица.Колонки.Добавить("СтрокаТаблицы");
Для Каждого Строка Из Коллекция Цикл
Если Строка.Отменено Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = Таблица.Добавить();
НоваяСтрока.СтрокаТаблицы = Строка;
НоваяСтрока[Поле] = Строка[Поле];
КонецЦикла;
Таблица.Индексы.Добавить(Поле);
Отбор = Новый Структура(Поле);
Для Каждого Значение Из НомераГруппыЗатрат Цикл
Отбор[Поле] = Значение;
НайденныеСтроки = Таблица.НайтиСтроки(Отбор);
ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Строки, НайденныеСтроки);
КонецЦикла;
Для Индекс = 0 По Строки.ВГраница() Цикл
Строки[Индекс] = Строки[Индекс].СтрокаТаблицы;
КонецЦикла;
Возврат Строки;
КонецФункции
#КонецОбласти
#Область РаботаСБуферомОбмена
&НаСервере
Процедура СкопироватьСтрокиНаСервере(ИмяТЧ)
ТабличнаяЧасть = ТабличнаяЧастьПоИмени(ИмяТЧ, ЭтаФорма);
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(ТабличнаяЧасть, Элементы[ИмяТЧ].ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена(ИмяТЧ)
ПараметрыОтбора = Новый Соответствие;
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре());
Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок,ДатаПоступления,ДатаОтгрузки,ДатаПроизводства,
|Цена,Спецификация,СтатьяКалькуляции,Получатель,Склад";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
Если ИмяТЧ = "ВозвратныеОтходы" Или ИмяТЧ = "Материалы" Тогда
СтруктураДействий.Вставить("ПересчитатьСумму");
КонецЕсли;
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
Если ИмяТЧ = "Продукция" Или ИмяТЧ = "ВозвратныеОтходы" Тогда
ПроизводствоКлиентСервер.ДобавитьВСтруктуруДействияПроверитьЗаполнитьСкладПроизводства(
Объект.Подразделение, СтруктураДействий, "Получатель");
Иначе
ДобавитьДействиеПроверитьЗаполнитьСклад(ИмяТЧ, ЭтотОбъект, СтруктураДействий);
КонецЕсли;
Если ИмяТЧ = "Материалы" Тогда
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий,
"ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
ИначеЕсли ИмяТЧ = "Продукция" Тогда
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
СтруктураДействий.Вставить("ПроверитьЗаполнитьДолюСтоимости", ПараметрыРаспределенияЗатрат);
ИначеЕсли ИмяТЧ = "ВозвратныеОтходы" Тогда
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий);
КонецЕсли;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ИмяТЧ, СтруктураДействий);
ТабличнаяЧасть = ТабличнаяЧастьПоИмени(ИмяТЧ, ЭтотОбъект);
МассивИдентификаторовСтрок = Новый Массив;
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = ТабличнаяЧасть.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
Если ИмяТЧ = "Продукция" Тогда
ЗаполнитьНомерГруппыЗатратВСтрокеПродукции(ТекущаяСтрока, Объект);
МассивИдентификаторовСтрок.Добавить(ТекущаяСтрока.ПолучитьИдентификатор());
КонецЕсли;
Если ИмяТЧ = "Продукция" Тогда
Если Объект.ПоступлениеОднойДатой Тогда
ТекущаяСтрока.ДатаПоступления = Объект.ДатаПоступления;
КонецЕсли;
ИначеЕсли (ИмяТЧ = "Материалы" ИЛИ ИмяТЧ = "РедактированиеЭтаповОбеспечениеМатериаламиИРаботами")
И Объект.НеОтгружатьЧастями Тогда
ТекущаяСтрока.ДатаОтгрузки = Объект.ДатаОтгрузки;
КонецЕсли;
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
ТабличнаяЧасть,
КэшированныеЗначения);
Если ИмяТЧ = "Материалы" Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ОбновитьКолонкуДоступноСервер();
ИначеЕсли ИмяТЧ = "РедактированиеЭтаповОбеспечениеМатериаламиИРаботами" Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(
РедактированиеЭтапов,
ПараметрыУказанияСерийРедактированиеЭтапов.ОбеспечениеМатериаламиИРаботами);
ОбновитьКолонкуДоступноСервер();
Иначе
МногооборотнаяТараСервер.ОбновитьСостояниеЗаполненияМногооборотнойТары(Объект.СостояниеЗаполненияМногооборотнойТары);
КонецЕсли;
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧ, МассивИдентификаторовСтрок);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура УстановитьДоступностьКомандБуфераОбмена(Форма, ДоступностьЭлементов)
Форма.Элементы.МатериалыВставитьСтроки.Доступность = ДоступностьЭлементов;
Форма.Элементы.МатериалыКонтекстноеМенюВставитьСтроки.Доступность = ДоступностьЭлементов;
Форма.Элементы.ПродукцияВставитьСтроки.Доступность = ДоступностьЭлементов;
Форма.Элементы.ПродукцияКонтекстноеМенюВставитьСтроки.Доступность = ДоступностьЭлементов;
Форма.Элементы.ВозвратныеОтходыВставитьСтроки.Доступность = ДоступностьЭлементов;
Форма.Элементы.ВозвратныеОтходыКонтекстноеМенюВставитьСтроки.Доступность = ДоступностьЭлементов;
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Функция ПровестиИЗакрытьНаСервере(ПараметрыЗаписи)
РезультатЗаписи = Ложь;
Попытка
РезультатЗаписи = Записать(ПараметрыЗаписи);
Исключение
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Проведение документа'", ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,,,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат Ложь;
КонецПопытки;
Возврат РезультатЗаписи;
КонецФункции
&НаКлиенте
Процедура Подключаемый_ОбработатьЗаписьОбъекта()
ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
Закрыть();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыПересчетаСуммыНДСВТЧ(Форма)
СтруктураПересчетаСуммы = Новый Структура("ЦенаВключаетНДС", Ложь);
Возврат СтруктураПересчетаСуммы;
КонецФункции
&НаСервере
Процедура ЗаполнитьМногооборотнуюТаруИзХранилищаСервер(АдресТарыВХранилище)
СтруктураДействийИзмененныеСтроки = Новый Структура;
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьКоличествоУпаковок");
СтруктураДействийИзмененныеСтроки.Вставить("ПересчитатьСумму");
ДобавитьВСтруктуруДействияПоОбновлениюВспомРевизитовСтроки(СтруктураДействийИзмененныеСтроки);
ДобавитьДействиеПроверитьЗаполнитьСклад("Материалы", ЭтаФорма, СтруктураДействийИзмененныеСтроки);
СтруктураДействийДобавленныеСтроки = ОбщегоНазначения.СкопироватьРекурсивно(СтруктураДействийИзмененныеСтроки);
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействийДобавленныеСтроки, "ВариантОбеспечения,СкладОбязателен,ДатаОтгрузкиОбязательна");
МногооборотнаяТараСервер.ЗаполнитьМногооборотнуюТаруИзХранилища(
Объект,
АдресТарыВХранилище,
"Материалы",
"Номенклатура,Характеристика,Склад,ДатаОтгрузки",
СтруктураДействийИзмененныеСтроки,
СтруктураДействийДобавленныеСтроки);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаСервере
Процедура ПродукцияНоменклатураПриИзмененииНаСервере(ИдентификаторСтроки, СтруктураДействий, КэшированныеЗначения)
ТекущаяСтрока = Объект.Продукция.НайтиПоИдентификатору(ИдентификаторСтроки);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
ПродукцияСтрокаЗаполнитьСпецификацию(ТекущаяСтрока);
КонецПроцедуры
&НаСервере
Функция ПродукцияСтрокаЗаполнитьСпецификацию(ДанныеСтроки)
Если Объект.ГруппировкаЗатрат <> Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции
И Объект.ГруппировкаЗатрат <> Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям Тогда
Возврат Истина;
КонецЕсли;
Если ДанныеСтроки.Номенклатура.Пустая() Тогда
ДанныеСтроки.Спецификация = Неопределено;
Возврат Истина;
КонецЕсли;
ДанныеОбИзделии = УправлениеДаннымиОбИзделияхКлиентСервер.СобратьДанныеОбИзделииДляВыбораСпецификации(
Объект, ДанныеСтроки, ПараметрыВыбораСпецификаций);
ДанныеОбИзделии.ТекущаяСпецификация = ДанныеСтроки.Спецификация;
ДанныеСпецификации = УправлениеДаннымиОбИзделияхВызовСервера.СпецификацияИзделия(
ДанныеОбИзделии, ПараметрыВыбораСпецификаций);
СпецификацияИзменилась = Ложь;
Если ДанныеСпецификации = Неопределено Тогда
ДанныеСтроки.Спецификация = Неопределено;
СпецификацияИзменилась = Истина;
Иначе
Если ДанныеСпецификации.Спецификация <> ДанныеСтроки.Спецификация Тогда
ЗаполнитьЗначенияСвойств(ДанныеСтроки, ДанныеСпецификации);
СпецификацияИзменилась = Истина;
КонецЕсли;
КонецЕсли;
Возврат СпецификацияИзменилась;
КонецФункции
&НаСервере
Процедура ВозвратныеОтходыНоменклатураПриИзмененииНаСервере(ИдентификаторСтроки, СтруктураДействий, КэшированныеЗначения)
ТекущаяСтрока = Объект.ВозвратныеОтходы.НайтиПоИдентификатору(ИдентификаторСтроки);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОбновитьДоступностьЭлементовВозвратнойТары(Форма)
Форма.Элементы.СрокВозвратаМногооборотнойТары.Доступность = Форма.Объект.ВернутьМногооборотнуюТару;
КонецПроцедуры
&НаСервере
Процедура ПересчитатьСуммыТабличнойЧастиВВалюту(Таблица,
Знач СтруктураКурсовСтаройВалюты,
Знач СтруктураКурсовНовойВалюты,
ИмяПоляСумма = "Сумма")
СуммаКРаспределению = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
Таблица.Итог(ИмяПоляСумма),
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты);
МассивСумм = Новый Массив;
Для Х = 0 По Таблица.Количество() - 1 Цикл
ТекСтрока = Таблица[Х];
Если Таблица <> Объект.Услуги Тогда
ТекСтрока.Цена = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
ТекСтрока.Цена,
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты);
КонецЕсли;
СуммаВНовойВалюте = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
ТекСтрока[ИмяПоляСумма],
СтруктураКурсовСтаройВалюты,
СтруктураКурсовНовойВалюты);
МассивСумм.Добавить(СуммаВНовойВалюте);
КонецЦикла;
МассивСумм = ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам(СуммаКРаспределению, МассивСумм);
Если МассивСумм <> Неопределено Тогда
Для Х = 0 По Таблица.Количество() - 1 Цикл
ТекСтрока = Таблица[Х];
ТекСтрока[ИмяПоляСумма] = МассивСумм[Х];
Если ИмяПоляСумма = "СуммаСНДС" Тогда
Ценообразование.ПересчитатьСуммыВСтрокеПоСуммеСНДС(ТекСтрока, Ложь, Ложь, Ложь, Ложь, "Сумма");
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизиты()
ЗаполнитьПредставлениеГруппыЗатрат();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыТабличныхЧастей(СписокТЧ = "")
СтруктураТЧ = Новый Структура(СписокТЧ);
ВсеТЧ = Не ЗначениеЗаполнено(СтруктураТЧ);
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПоОбновлениюВспомРевизитовСтроки(СтруктураДействий);
Если ВсеТЧ Или СтруктураТЧ.Свойство("Продукция") Тогда
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(
Объект.Продукция, СтруктураДействий);
ПроизводствоСервер.ЗаполнитьПризнакЦеховаяКладоваяВТаблице(Объект.Продукция, "Получатель");
ПроизводствоСервер.РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(
Объект, ПараметрыРаспределенияЗатрат);
КонецЕсли;
Если ВсеТЧ Или СтруктураТЧ.Свойство("ВозвратныеОтходы") Тогда
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(
Объект.ВозвратныеОтходы, СтруктураДействий);
ПроизводствоСервер.ЗаполнитьПризнакЦеховаяКладоваяВТаблице(Объект.ВозвратныеОтходы, "Получатель");
КонецЕсли;
Если ВсеТЧ Или СтруктураТЧ.Свойство("Материалы") Тогда
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(
Объект.Материалы, СтруктураДействий);
ПроизводствоСервер.ЗаполнитьПризнакЦеховаяКладоваяВТаблице(Объект.Материалы, "Склад");
КонецЕсли;
Если ВсеТЧ Или СтруктураТЧ.Свойство("Услуги") Тогда
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПоОбновлениюВспомРевизитовСтроки(СтруктураДействий, Истина);
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Услуги, СтруктураДействий);
КонецЕсли;
Если ВсеТЧ Или СтруктураТЧ.Свойство("Материалы") Или СтруктураТЧ.Свойство("ОбеспечениеМатериаламиИРаботами") Тогда
ЗаполнитьСлужебныеРеквизитыФормыДокумента();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция МаксимальнаяДатаАванса()
МаксДатаАванса = '00010101';
Для Каждого ТекЭтап Из Объект.ЭтапыГрафикаОплаты Цикл
Если ТекЭтап.ВариантОплаты = ПредопределенноеЗначение("Перечисление.ВариантыКонтроляОплатыПоставщику.ПредоплатаДоПоступления")
Или ТекЭтап.ВариантОплаты = ПредопределенноеЗначение("Перечисление.ВариантыКонтроляОплатыПоставщику.АвансДоПодтверждения") Тогда
МаксДатаАванса = Макс(МаксДатаАванса, ТекЭтап.ДатаПлатежа);
КонецЕсли;
КонецЦикла;
Возврат МаксДатаАванса;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизитыВозвратныеОтходы()
Возврат Новый Структура("Отменено", "Сумма");
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизитыМатериалы()
Возврат Новый Структура("Отменено", "Сумма");
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЗависимыеРеквизитыМатериалыСтрокой()
Возврат "СуммаОтменено";
КонецФункции
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
ПартионныйУчетВерсии22 = РасчетСебестоимостиПовтИсп.ПартионныйУчетВерсии22(?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса()));
ИспользоватьНесколькоСкладов = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоСкладов");
Если Объект.Статус = Перечисления.СтатусыЗаказовПереработчикам.КОбеспечению
И Элементы.Статус.СписокВыбора.НайтиПоЗначению(Перечисления.СтатусыЗаказовПереработчикам.КОбеспечению) = Неопределено Тогда
Элементы.Статус.СписокВыбора.Вставить(1, Перечисления.СтатусыЗаказовПереработчикам.КОбеспечению);
КонецЕсли;
Элементы.ДокументОснование.Видимость = ЗначениеЗаполнено(Объект.ДокументОснование);
ПараметрыРаспределенияЗатрат = Новый ФиксированнаяСтруктура(Документы.ЗаказПереработчику.ПараметрыРаспределенияЗатрат(Объект));
ВалютаДокумента = Объект.Валюта;
ИспользоватьУпрощеннуюСхемуОплаты = ПолучитьФункциональнуюОпцию("ИспользоватьУпрощеннуюСхемуОплатыВЗакупках");
ИспользоватьНаправленияДеятельности = ПолучитьФункциональнуюОпцию("ИспользоватьУчетЗатратПоНаправлениямДеятельности");
ХарактеристикиИспользуются = Справочники.Номенклатура.ХарактеристикиИспользуются(Объект.Номенклатура);
Элементы.Характеристика.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВидовНоменклатуры");
Элементы.Характеристика.Доступность = ХарактеристикиИспользуются;
ПравоДоступаДобавление = ПравоДоступа("Добавление", Метаданные.Документы.ЗаказПереработчику);
ИспользоватьПроизводствоНаСтороне2_5 = ПолучитьФункциональнуюОпцию("ИспользоватьПроизводствоНаСтороне2_5");
ДоступноИспользованиеНаборовВПроизводстве = УправлениеДаннымиОбИзделияхПовтИсп.ДоступноИспользованиеНаборовВПроизводстве();
Если ПравоДоступаДобавление
И ИспользоватьПроизводствоНаСтороне2_5 Тогда
Элементы.ФормаСкопировать.Видимость = Ложь;
ИначеЕсли ПравоДоступаДобавление Тогда
Элементы.ФормаСкопировать.Видимость = Истина;
КонецЕсли;
УстановитьДоступностьЭлементовПоСтатусуСервер();
ЗаполнитьСлужебныеРеквизиты();
ЗаполнитьСлужебныеРеквизитыТабличныхЧастей();
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(
НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ЗаказПереработчику));
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Материалы, ЗависимыеРеквизитыМатериалы());
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.ВозвратныеОтходы, ЗависимыеРеквизитыВозвратныеОтходы());
УстановитьВидимостьДоговора();
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ОбновитьСостояниеСервер();
УстановитьВидимостьЭлементовФормыДатОтгрузки();
УстановитьВидимостьЭлементовФормыДатПоступления();
УстановитьВидимостьЭлементовПоВерсииПартионногоУчета();
ДоставкаТоваров.ПриЧтенииСозданииРаспоряженийНаСервере(Элементы, Объект);
ОбновитьДоступностьЭлементовВозвратнойТары(ЭтаФорма);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Продукция);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.РедактированиеЭтаповВыходныеИзделия);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Материалы);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.РедактированиеЭтаповОбеспечениеМатериаламиИРаботами);
ИспользоватьПроизводство = ПолучитьФункциональнуюОпцию("ИспользоватьПроизводство");
ИспользоватьУправлениеПроизводством2_2 = ПолучитьФункциональнуюОпцию("ИспользоватьУправлениеПроизводством2_2");
НастроитьФормуПоСпособуГруппировкиЗатрат();
УстановитьВидимостьОбеспечения();
ОпределитьКоличествоВыходныхИзделий(ЭтаФорма);
КоличествоУслуг = КоличествоУслуг(Объект.Услуги.Количество(), Объект.ГруппировкаЗатрат);
ГруппировкаЗатратДоИзменения = Объект.ГруппировкаЗатрат;
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
АктуализироватьЗакупкуПодДеятельность(Ложь);
ПараметрыВыбораСпецификаций = УправлениеДаннымиОбИзделиях.ПараметрыВыбораСпецификаций(Объект, Документы.ЗаказПереработчику);
УправлениеДаннымиОбИзделияхКлиентСервер.УстановитьПараметрыВыбораСпецификаций(Элементы.ПродукцияСпецификация, ПараметрыВыбораСпецификаций);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура РассчитатьИтоговыеПоказателиДокумента(Форма)
КоллекцияМатериалы = Форма.Объект.Материалы;
Форма.СуммаМатериалов = КоллекцияМатериалы.Итог("Сумма") - КоллекцияМатериалы.Итог("СуммаОтменено");
Форма.СуммаОтмененоМатериалов = КоллекцияМатериалы.Итог("СуммаОтменено");
Форма.СуммаАвансаДоПодтверждения = 0;
Форма.СуммаПредоплатыДоПоступления = 0;
Форма.СуммаКредитаПослеПоступления = 0;
Форма.ПроцентАвансаДоПодтверждения = 0;
Форма.ПроцентПредоплатыДоПоступления = 0;
Форма.ПроцентКредитаПослеПоступления = 0;
ПроцентПлатежейОбщий = 0;
АвансДоПодтверждения = ПредопределенноеЗначение("Перечисление.ВариантыКонтроляОплатыПоставщику.АвансДоПодтверждения");
ПредоплатаДоПоступления = ПредопределенноеЗначение("Перечисление.ВариантыКонтроляОплатыПоставщику.ПредоплатаДоПоступления");
НеКонтролируется = ПредопределенноеЗначение("Перечисление.ВариантыКонтроляОплатыПоставщику.КредитСдвиг");
СтруктураАванс = Новый Структура("Сумма, Проценты", "СуммаАвансаДоПодтверждения", "ПроцентАвансаДоПодтверждения");
СтруктураПредоплата = Новый Структура("Сумма, Проценты", "СуммаПредоплатыДоПоступления", "ПроцентПредоплатыДоПоступления");
СтруктураКредит = Новый Структура("Сумма, Проценты", "СуммаКредитаПослеПоступления", "ПроцентКредитаПослеПоступления");
СоответствиеВариантовОплаты = Новый Соответствие;
СоответствиеВариантовОплаты.Вставить(АвансДоПодтверждения, СтруктураАванс);
СоответствиеВариантовОплаты.Вставить(ПредоплатаДоПоступления, СтруктураПредоплата);
СоответствиеВариантовОплаты.Вставить(НеКонтролируется, СтруктураКредит);
ПредыдущееЗначениеДаты = Дата(1, 1, 1);
Форма.НомерСтрокиПолнойОплаты = 0;
Для Каждого ТекСтрока Из Форма.Объект.ЭтапыГрафикаОплаты Цикл
ПроцентПлатежейОбщий = ПроцентПлатежейОбщий + ТекСтрока.ПроцентПлатежа;
ТекСтрока.ПроцентЗаполненНеВерно = (ПроцентПлатежейОбщий > 100);
ТекСтрока.ДатаЗаполненаНеВерно = (ПредыдущееЗначениеДаты > ТекСтрока.ДатаПлатежа);
ПредыдущееЗначениеДаты = ТекСтрока.ДатаПлатежа;
Если ПроцентПлатежейОбщий = 100 Тогда
Форма.НомерСтрокиПолнойОплаты = ТекСтрока.НомерСтроки;
КонецЕсли;
ИменаЭлементов = СоответствиеВариантовОплаты[ТекСтрока.ВариантОплаты];
Если ИменаЭлементов <> Неопределено Тогда
Форма[ИменаЭлементов.Сумма] = Форма[ИменаЭлементов.Сумма] + ТекСтрока.СуммаПлатежа;
Форма[ИменаЭлементов.Проценты] = Форма[ИменаЭлементов.Проценты] + ТекСтрока.ПроцентПлатежа;
КонецЕсли;
КонецЦикла;
БезНДС = ПредопределенноеЗначение("Справочник.СтавкиНДС.БезНДС");
ЕстьНДС = Ложь;
Если Форма.Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.БезГруппировки") Тогда
ЕстьНДС = Форма.Объект.СтавкаНДС <> БезНДС;
Иначе
Для Каждого СтрокаУслуга Из Форма.Объект.Услуги Цикл
Если СтрокаУслуга.СтавкаНДС <> БезНДС Тогда
ЕстьНДС = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если ЕстьНДС Тогда
Форма.Элементы.ГруппаСтраницыВсегоПродукция.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоСНДСПродукция;
Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Форма.Элементы.СтраницаСНДС;
Иначе
Форма.Элементы.ГруппаСтраницыВсегоПродукция.ТекущаяСтраница = Форма.Элементы.СтраницаВсегоБезНДСПродукция;
Форма.Элементы.ГруппаСтраницыНДС.ТекущаяСтраница = Форма.Элементы.СтраницаБезНДС;
КонецЕсли;
ТолькоПросмотрСуммаНДС = СуммаНДСТолькоПросмотр(Форма.Объект.СтавкаНДС);
Форма.Элементы.СуммаНДС.ТолькоПросмотр = СуммаНДСТолькоПросмотр(Форма.Объект.СтавкаНДС);;
Форма.Элементы.СуммаНДС.ОтметкаНезаполненного = Не ТолькоПросмотрСуммаНДС;
Форма.Элементы.СуммаНДС.АвтоОтметкаНезаполненного = Не ТолькоПросмотрСуммаНДС;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ПриИзмененииСуммыУслуг(Форма)
Форма.Объект.СуммаНДС = Форма.Объект.Услуги.Итог("СуммаНДС");
Форма.Объект.СуммаСНДС = Форма.Объект.Услуги.Итог("СуммаСНДС");
Форма.Объект.СуммаДокумента = Форма.Объект.СуммаСНДС;
Форма.КоличествоУслуг = КоличествоУслуг(Форма.Объект.Услуги.Количество(), Форма.Объект.ГруппировкаЗатрат);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПоОбновлениюВспомРевизитовСтроки(СтруктураДействий, ЭтоУслуги = Ложь)
СтруктураХарактеристики = Новый Структура("Номенклатура", "ХарактеристикиИспользуются");
СтруктураДействий.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются", СтруктураХарактеристики);
Если НЕ ЭтоУслуги Тогда
СтруктураТипНоменклатуры = Новый Структура("Номенклатура", "ТипНоменклатуры");
СтруктураАртикул = Новый Структура("Номенклатура", "Артикул");
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", СтруктураТипНоменклатуры);
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", СтруктураАртикул);
КонецЕсли;
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(ИмяТабличнойЧасти, СтруктураДействий)
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
Если ИмяТабличнойЧасти = "ВозвратныеОтходы"
Или ИмяТабличнойЧасти = "Материалы" Тогда
СтруктураДействий.Вставить("ЗаполнитьДубликатыЗависимыхРеквизитов", ЗависимыеРеквизитыВозвратныеОтходы());
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДоговорПоУмолчанию()
ПараметрыОбъекта = Новый Структура("Партнер, Договор, Контрагент, Организация");
ЗаполнитьЗначенияСвойств(ПараметрыОбъекта, Объект);
ПараметрыОбъекта.Вставить("Соглашение", Справочники.СоглашенияСПоставщиками.ПустаяСсылка());
Если Объект.ПорядокРасчетов = Перечисления.ПорядокРасчетов.ПоДоговорамКонтрагентов
И ИспользоватьНаправленияДеятельности Тогда
ДопПараметры = ЗакупкиСервер.ДополнительныеПараметрыОтбораДоговоров();
ДопПараметры.ВалютаВзаиморасчетов = Объект.Валюта;
ДопПараметры.НаправлениеДеятельности = Объект.НаправлениеДеятельности;
Договор = ЗакупкиСервер.ПолучитьДоговорПоУмолчанию(ПараметрыОбъекта,
Объект.ХозяйственнаяОперация,
ДопПараметры);
Иначе
ДопПараметры = ЗакупкиСервер.ДополнительныеПараметрыОтбораДоговоров();
ДопПараметры.ВалютаВзаиморасчетов = Объект.Валюта;
Договор = ЗакупкиСервер.ПолучитьДоговорПоУмолчанию(ПараметрыОбъекта,
Объект.ХозяйственнаяОперация,
ДопПараметры);
КонецЕсли;
Если Договор <> Объект.Договор Тогда
Объект.Договор = Договор;
АктуализироватьЗакупкуПодДеятельность();
ЗакупкиВызовСервера.ЗаполнитьБанковскиеСчетаПоДоговору(Объект.Договор, Объект.БанковскийСчет);
КонецЕсли;
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Договор");
КонецПроцедуры
&НаСервере
Функция ЗаполнитьСкладВВыделенныхСтрокахНаСервере(ИмяТЧ, Знач МассивВыделенныхСтрок, Склад)
ЗаполненоСтрок = СкладыСервер.ЗаполнитьСкладыВВыделенныхСтроках(
ТабличнаяЧастьПоИмени(ИмяТЧ, ЭтотОбъект),
МассивВыделенныхСтрок,
Склад);
Если ИмяТЧ = "Материалы" И ЗаполненоСтрок > 0 Тогда
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий);
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
Если ЗаполненоСтрок > 0 Тогда
ТабличнаяЧасть = ТабличнаяЧастьПоИмени(ИмяТЧ, ЭтотОбъект);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая");
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
ОбрабатываемыеСтроки = Новый Массив();
Для каждого ИдентификаторСтроки Из МассивВыделенныхСтрок Цикл
СтрокаТаблицы = ТабличнаяЧасть.НайтиПоИдентификатору(ИдентификаторСтроки);
ОбрабатываемыеСтроки.Добавить(СтрокаТаблицы);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
ТабличнаяЧасть,
КэшированныеЗначения);
КонецЕсли;
ТребуетсяЗаполнитьДанныеРаспоряжения = Истина;
Возврат ЗаполненоСтрок;
КонецФункции
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма);
КонецПроцедуры
&НаСервере
Процедура ИзменитьДокументСервер()
УстановитьДоступностьЭлементовПоСтатусуСервер();
УстановитьВидимостьЭлементовФормыДатОтгрузки();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПустыеДатыПоступленияСервер()
Если Объект.Продукция.Количество() = 0
И Объект.ВозвратныеОтходы.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ДатаПоступления = Неопределено;
Если НЕ Объект.ПоступлениеОднойДатой Тогда
Если ЗначениеЗаполнено(Объект.ЖелаемаяДатаПоступления) И Объект.ЖелаемаяДатаПоступления >= Объект.Дата Тогда
ДатаПоступления = Объект.ЖелаемаяДатаПоступления;
КонецЕсли;
Иначе
Если Не ЗначениеЗаполнено(Объект.ДатаПоступления)
И ЗначениеЗаполнено(Объект.ЖелаемаяДатаПоступления)
И Объект.ЖелаемаяДатаПоступления >= Объект.Дата Тогда
Объект.ДатаПоступления = Объект.ЖелаемаяДатаПоступления;
ИначеЕсли Не ЗначениеЗаполнено(Объект.ДатаПоступления) Тогда
Объект.ДатаПоступления = Объект.Дата;
КонецЕсли;
ДатаПоступления = Объект.ДатаПоступления;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ДатаПоступления) Тогда
ДатаПоступления = ТекущаяДатаСеанса();
КонецЕсли;
Для Каждого СтрокаТЧ Из Объект.Продукция Цикл
Если Не ЗначениеЗаполнено(СтрокаТЧ.ДатаПоступления) Тогда
СтрокаТЧ.ДатаПоступления = ДатаПоступления;
КонецЕсли;
КонецЦикла;
Для Каждого СтрокаТЧ Из Объект.ВозвратныеОтходы Цикл
Если Не ЗначениеЗаполнено(СтрокаТЧ.ДатаПоступления) Тогда
СтрокаТЧ.ДатаПоступления = ДатаПоступления;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСостояниеСервер()
Документы.ЗаказПереработчику.РассчитатьСостояние(
Объект.Ссылка,
Объект.Договор,
ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьДатуПоступления(ИмяТЧ, МассивВыделенныхСтрок = Неопределено)
ДатаПоступления = Объект.ЖелаемаяДатаПоступления;
Оповещение = Новый ОписаниеОповещения("ЗаполнитьДатуПоступленияЗавершение", ЭтотОбъект, Новый Структура("ИмяТЧ, МассивВыделенныхСтрок", ИмяТЧ, МассивВыделенныхСтрок));
ОбщегоНазначенияУТКлиент.ВвестиДатуСКонтролемПустогоЗначения(ДатаПоступления, НСтр("ru='Введите дату поступления'"), ЧастиДаты.Дата, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьДатуПоступленияЗавершение(ВыбраннаяДата, ДополнительныеПараметры) Экспорт
Если ВыбраннаяДата <> Неопределено И ЗначениеЗаполнено(ВыбраннаяДата) Тогда
ДатаПоступления = ВыбраннаяДата;
МассивВыделенныхСтрок = ДополнительныеПараметры.МассивВыделенныхСтрок;
ИмяТЧ = ДополнительныеПараметры.ИмяТЧ;
ТабличнаяЧасть = ТабличнаяЧастьПоИмени(ИмяТЧ, ЭтаФорма);
Если МассивВыделенныхСтрок = Неопределено Тогда
Для Каждого СтрокаТЧ Из ТабличнаяЧасть Цикл
СтрокаТЧ.ДатаПоступления = ДатаПоступления;
КонецЦикла;
Иначе
Для Каждого ИдентификаторСтроки Из МассивВыделенныхСтрок Цикл
СтрокаТЧ = ТабличнаяЧасть.НайтиПоИдентификатору(ИдентификаторСтроки);
СтрокаТЧ.ДатаПоступления = ДатаПоступления;
КонецЦикла;
КонецЕсли;
ЗакупкиКлиент.ОповеститьОбОкончанииЗаполненияДатПоступления(ДатаПоступления, (МассивВыделенныхСтрок <> Неопределено));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатие(Элемент, СтандартнаяОбработка)
Оповещение = Новый ОписаниеОповещения("НадписьЭтапыОплатыНажатиеЗавершение", ЭтотОбъект);
ПоместитьЭтапыОплатыВоВременноеХранилище(Элемент.Имя);
ВзаиморасчетыКлиент.НадписьЭтапыОплатыНажатие(ЭтаФорма, Элемент, СтандартнаяОбработка, Оповещение );
КонецПроцедуры
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
ИзмененныеРеквизиты = Результат.СтарыеЗначенияИзмененныхРеквизитов;
ОтразитьИзмененияПравилОплаты(ИзмененныеРеквизиты);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПоместитьЭтапыОплатыВоВременноеХранилище(ИмяЭлемента)
ВзаиморасчетыСервер.ПоместитьЭтапыОплатыВоВременноеХранилище(ЭтаФорма, ИмяЭлемента);
КонецПроцедуры
&НаСервере
Процедура ОтразитьИзмененияПравилОплаты(ИзмененныеРеквизиты)
ВзаиморасчетыСервер.ЗагрузитьЭтапыОплатыИзВременногоХранилища(ЭтаФорма);
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, ИзмененныеРеквизиты, Истина);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДатуВТЧ(Знач ИмяТЧ, Знач ПолеДата, Знач НоваяДата)
Если НоваяДата = '000101010000' Тогда
Возврат;
КонецЕсли;
ТабличнаяЧасть = ТабличнаяЧастьПоИмени(ИмяТЧ, ЭтаФорма);
Для каждого ДанныеСтроки Из ТабличнаяЧасть Цикл
ДанныеСтроки[ПолеДата] = НоваяДата;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДатыПоступленияСервер(ДатаПоступления)
ЗаполнитьДатуВТЧ("Продукция", "ДатаПоступления", ДатаПоступления);
ЗаполнитьДатуВТЧ("ВозвратныеОтходы", "ДатаПоступления", ДатаПоступления);
КонецПроцедуры
&НаСервере
Функция МаксимальнаяДатаПоступления()
МаксимальнаяДатаПоступления = Дата(1,1,1);
Для Каждого Товар Из Объект.Продукция Цикл
МаксимальнаяДатаПоступления = Макс(МаксимальнаяДатаПоступления, Товар.ДатаПоступления);
КонецЦикла;
Для Каждого Товар Из Объект.ВозвратныеОтходы Цикл
МаксимальнаяДатаПоступления = Макс(МаксимальнаяДатаПоступления, Товар.ДатаПоступления);
КонецЦикла;
Возврат МаксимальнаяДатаПоступления
КонецФункции
&НаСервере
Процедура ИзмененаОплатаСервер(ИмяСобытия, Параметр)
ОбновитьСостояниеСервер();
ВзаиморасчетыСервер.ОбработкаОповещения(ЭтаФорма, ИмяСобытия, Параметр);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьНаличиеЗаказовПоДаннымПереработчика(НомерПоДаннымПартнера)
СписокЗаказовПоНомеру = ЗаказыПоДаннымПереработчика(Объект.Ссылка, Объект.Контрагент, НомерПоДаннымПартнера);
Если СписокЗаказовПоНомеру.Количество() = 0 Тогда
Возврат;
КонецЕсли;
СписокКнопок = Новый СписокЗначений;
Если СписокЗаказовПоНомеру.Количество() = 1 Тогда
ТекстВопроса = НСтр("ru='В информационной базе уже существует заказ с таким же номером по данным переработчика. Продолжить?'");
СписокКнопок.Добавить("ОткрытьСписокЗаказов", НСтр("ru = 'Открыть заказ'"));
Иначе
ТекстВопроса = НСтр("ru='В информационной базе уже существуют заказы с таким же номером по данным переработчика. Продолжить?'");
СписокКнопок.Добавить("ОткрытьСписокЗаказов", НСтр("ru = 'Открыть список заказов'"));
КонецЕсли;
СписокКнопок.Добавить("Продолжить", НСтр("ru = 'Продолжить'"));
ОписаниеОповещения = Новый ОписаниеОповещения("ПроверитьНаличиеЗаказовПоДаннымПереработчикаЗавершение", ЭтотОбъект, Новый Структура("СписокЗаказов", СписокЗаказовПоНомеру));
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, СписокКнопок);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьНаличиеЗаказовПоДаннымПереработчикаЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
СписокЗаказовПоНомеру = ДополнительныеПараметры.СписокЗаказов;
Если РезультатВопроса = "ОткрытьСписокЗаказов" Тогда
Если СписокЗаказовПоНомеру.Количество() > 1 Тогда
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("СписокДокументов", СписокЗаказовПоНомеру);
ПараметрыФормы.Вставить("Заголовок", НСтр("ru='Заказы переработчикам (%КоличествоДокументов%)'"));
ОткрытьФорму("ОбщаяФорма.ПросмотрСпискаДокументов", ПараметрыФормы);
Иначе
ПараметрыФормы = Новый Структура("Ключ", СписокЗаказовПоНомеру.Получить(0).Значение);
ОткрытьФорму("Документ.ЗаказПереработчику.ФормаОбъекта", ПараметрыФормы);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ЗаказыПоДаннымПереработчика(ТекущийЗаказ, Контрагент, НомерВходящегоДокумента)
РеквизитыЗаказа = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТекущийЗаказ, "Дата");
ДатаВходящегоДокумента = ?(ЗначениеЗаполнено(РеквизитыЗаказа), РеквизитыЗаказа, ТекущаяДатаСеанса());
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗаказПереработчику.Ссылка КАК Ссылка
|ИЗ
| Документ.ЗаказПереработчику КАК ЗаказПереработчику
|ГДЕ
| ЗаказПереработчику.Ссылка <> &ТекущийЗаказ
| И ЗаказПереработчику.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И ЗаказПереработчику.НомерПоДаннымПартнера = &НомерПоДаннымПартнера
| И ЗаказПереработчику.Контрагент = &Контрагент
| И НЕ ЗаказПереработчику.ПометкаУдаления";
Запрос.УстановитьПараметр("ДатаНачала", ДобавитьМесяц(ДатаВходящегоДокумента, -3));
Запрос.УстановитьПараметр("ДатаОкончания", ДобавитьМесяц(ДатаВходящегоДокумента, 3));
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("ТекущийЗаказ", ТекущийЗаказ);
Запрос.УстановитьПараметр("НомерПоДаннымПартнера", НомерВходящегоДокумента);
СписокЗаказовПоНомеру = Новый СписокЗначений;
СписокЗаказовПоНомеру.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"));
Возврат СписокЗаказовПоНомеру;
КонецФункции
&НаКлиенте
Процедура РасчетыНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОтчетыУТКлиентПереопределяемый.ОткрытьОтчетКарточкаРасчетовСПоставщиками("КарточкаРасчетовСПоставщикамиПоДокументамКонтекст", Объект.Ссылка);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПодчиненныеСвойстваПоСтатистике(ИмяРеквизитаРодителя)
ЗаполнениеОбъектовПоСтатистике.ЗаполнитьПодчиненныеРеквизитыОбъекта(Объект, ИмяРеквизитаРодителя);
КонецПроцедуры
&НаКлиенте
Процедура ПересчитатьСуммыПриИзмененииВалюты(РезультатВопроса, ДополнительныеПараметры) Экспорт
ПересчитатьСуммы = (РезультатВопроса = КодВозвратаДиалога.Да);
ВалютаПриИзмененииЗавершение(ПересчитатьСуммы);
КонецПроцедуры
&НаКлиенте
Процедура ВалютаПриИзмененииЗавершение(ПересчитатьСуммы)
ПриИзмененииВалютыСервер(Объект.Валюта, ПересчитатьСуммы);
Если ПересчитатьСуммы Тогда
ЦенообразованиеКлиент.ОповеститьОбОкончанииПересчетаСуммВВалюту(ВалютаДокумента, Объект.Валюта);
КонецЕсли;
ВалютаДокумента = Объект.Валюта;
КонецПроцедуры
&НаКлиенте
Процедура ЖелаемаяДатаПоступленияНачалоВыбораИзСпискаЗавершение(ВыбранныйЭлемент, ДополнительныеПараметры) Экспорт
ВыбранноеЗначение = ВыбранныйЭлемент;
Если ВыбранноеЗначение <> Неопределено Тогда
Объект.ЖелаемаяДатаПоступления = ВыбранноеЗначение.Значение;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПродукцияХарактеристикаПриИзмененииНаСервере(ИдентификаторСтроки)
ТекущаяСтрока = Объект.Продукция.НайтиПоИдентификатору(ИдентификаторСтроки);
ПродукцияСтрокаЗаполнитьСпецификацию(ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура Услуги_ВыбратьИЗаполнитьУслугуЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
Услуги_ВыбратьИЗаполнитьУслугуЗавершениеНаСервере(РезультатЗакрытия, ДополнительныеПараметры);
КонецПроцедуры
&НаСервере
Процедура Услуги_ВыбратьИЗаполнитьУслугуЗавершениеНаСервере(РезультатЗакрытия, КэшированныеЗначения)
СтруктураПересчетаСуммы = ПараметрыПересчетаСуммыНДСВТЧ(ЭтотОбъект);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу");
СтруктураДействий.Вставить(
"НоменклатураПриИзмененииПереопределяемый",
Новый Структура("ИмяФормы, ИмяТабличнойЧасти", ИмяФормы, "Услуги"));
ОбрабатываемыеСтроки = Новый Массив;
Для каждого ИдентификаторСтроки Из Элементы.Услуги.ВыделенныеСтроки Цикл
ДанныеСтроки = Объект.Услуги.НайтиПоИдентификатору(ИдентификаторСтроки);
ДанныеСтроки.Номенклатура = РезультатЗакрытия;
ОбрабатываемыеСтроки.Добавить(ДанныеСтроки);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Услуги,
КэшированныеЗначения);
ПриИзмененииСуммыУслуг(ЭтотОбъект);
РассчитатьИтоговыеПоказателиДокумента(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьРаспоряжениеГруппы(ТекущиеДанные)
ИмяПоляГруппаЗатрат = ИмяПоляГруппаЗатрат(Объект);
Если НЕ ЗначениеЗаполнено(ТекущиеДанные[ИмяПоляГруппаЗатрат]) Тогда
Возврат;
КонецЕсли;
Если Объект.ПереработкаПоЗаказу Тогда
СтруктураПоиска = Новый Структура(ИмяПоляГруппаЗатрат, ТекущиеДанные[ИмяПоляГруппаЗатрат]);
СписокСтрок = Объект.Услуги.НайтиСтроки(СтруктураПоиска);
Если СписокСтрок.Количество() <> 0 Тогда
ПоказатьЗначение(, СписокСтрок[0].Распоряжение);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьВозвратныеОтходыИМатериалы()
ТекущиеДанные = Элементы.Продукция.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
ПоказатьПредупреждение(, НСтр("ru = 'Необходимо выбрать выбрать продукцию.'"));
Возврат;
КонецЕсли;
ИмяПоляГруппаЗатрат = ИмяПоляГруппаЗатрат(Объект);
Отказ = Ложь;
ДанныеВыбранныхСтрок = Новый Массив;
Для каждого ИдентификаторСтроки Из Элементы.Продукция.ВыделенныеСтроки Цикл
ТекущиеДанные = Объект.Продукция.НайтиПоИдентификатору(ИдентификаторСтроки);
Если ТекущиеДанные.Отменено Тогда
Продолжить;
ИначеЕсли (Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции")
ИЛИ Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям"))
И НЕ ЗначениеЗаполнено(ТекущиеДанные.Спецификация) Тогда
ТекстСообщения = СтрШаблон(
НСтр("ru = 'Необходимо указать спецификацию в строке %1 списка ""Продукция""'"),
Формат(ТекущиеДанные.НомерСтроки, "ЧГ="));
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстСообщения,
Объект.Ссылка,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.Продукция", ТекущиеДанные.НомерСтроки, "Спецификация"),
,
Отказ);
Продолжить;
ИначеЕсли Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЗаказамНаПроизводство")
И НЕ ЗначениеЗаполнено(ТекущиеДанные[ИмяПоляГруппаЗатрат]) Тогда
ТекстСообщения = СтрШаблон(
НСтр("ru = 'Необходимо указать заказ в строке %1 списка ""Продукция""'"),
Формат(ТекущиеДанные.НомерСтроки, "ЧГ="));
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
ТекстСообщения,
Объект.Ссылка,
ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.Продукция", ТекущиеДанные.НомерСтроки, "ГруппаЗатрат"),
,
Отказ);
Продолжить;
КонецЕсли;
ДанныеВыбранныхСтрок.Добавить(ИдентификаторСтроки);
КонецЦикла;
Если Отказ Тогда
Возврат;
КонецЕсли;
Если ДанныеВыбранныхСтрок.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru='Необходимо выбрать строки, для которых возможно перезаполнение по спецификации.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстПредупреждения);
Возврат;
КонецЕсли;
ТекстВопроса = Неопределено;
Если Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции")
ИЛИ Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям") Тогда
ТекстВопроса = НСтр("ru = 'Заполнить возвратные отходы, сырье и материалы по спецификации?'");
ИначеЕсли Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЗаказамНаПроизводство") Тогда
ТекстВопроса = НСтр("ru = 'Заполнить возвратные отходы, сырье и материалы по заказу на производство?'");
КонецЕсли;
Если ТекстВопроса <> Неопределено Тогда
ОписаниеОповещения = Новый ОписаниеОповещения("ЗаполнитьВозвратныеОтходыИМатериалыПриИзмененииПродукцииЗавершение", ЭтотОбъект, ДанныеВыбранныхСтрок);
ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьВозвратныеОтходыИМатериалыПриИзмененииПродукцииЗавершение(РезультатВопроса, ВыделенныеСтроки) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Да Тогда
ЗаполнитьВозвратныеОтходыИМатериалыНаСервере(ВыделенныеСтроки);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьВозвратныеОтходыИМатериалыНаСервере(ВыделенныеСтроки)
Если (Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции")
Или Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоСпецификациям")) Тогда
ЗаполнитьПоСпецификации(ВыделенныеСтроки);
Иначе
Возврат;
КонецЕсли;
ЗаполнитьПредставлениеГруппыЗатрат();
ЗаполнитьЦеныПоВидуЦенСервер(Объект.ВидЦены, "ВозвратныеОтходы", Ложь);
ЗаполнитьЦеныПоВидуЦенСервер(Объект.ВидЦены, "Материалы", Ложь);
ЗаполнитьСлужебныеРеквизитыТабличныхЧастей("ВозвратныеОтходы, Материалы");
ОпределитьКоличествоВыходныхИзделий(ЭтаФорма);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.ВозвратныеОтходы, СтруктураДействий, КэшированныеЗначения);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Материалы, СтруктураДействий, КэшированныеЗначения);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьПоСпецификации(ВыделенныеСтроки)
НомераГруппыЗатрат = НомераГруппыЗатратВыделенныхСтрок(Объект.Продукция, ВыделенныеСтроки);
СписокПродукции = СтрокиПоНомеруГруппыЗатрат(Объект.Продукция, НомераГруппыЗатрат);
УдалитьСтрокиТЧПоНомерамГруппыЗатрат("ВозвратныеОтходы", НомераГруппыЗатрат);
УдалитьСтрокиТЧПоНомерамГруппыЗатрат("Материалы", НомераГруппыЗатрат);
Документы.ЗаказПереработчику.ЗаполнитьВозвратныеОтходыИМатериалыПоСпецификации(СписокПродукции, Объект);
НаправленияДеятельностиСервер.ПриЗаполненииПоСпецификацииСервер(ЭтаФорма);
ЗаполнитьПредставлениеГруппыЗатрат();
КонецПроцедуры
&НаСервере
Процедура УдалитьСтрокиТЧПоНомерамГруппыЗатрат(ИмяТЧ, НомераГруппыЗатрат)
ИмяПоляГруппаЗатрат = ИмяПоляГруппаЗатрат(Объект);
ОтборСтрок = Новый Структура(ИмяПоляГруппаЗатрат);
Если НомераГруппыЗатрат.Количество() = 0 Тогда
ОтборСтрок[ИмяПоляГруппаЗатрат] = 0;
НайденныеСтроки = Объект[ИмяТЧ].НайтиСтроки(ОтборСтрок);
Для Каждого ТекСтрока Из НайденныеСтроки Цикл
Объект[ИмяТЧ].Удалить(ТекСтрока);
КонецЦикла;
Иначе
Для Каждого ТекНомер Из НомераГруппыЗатрат Цикл
ОтборСтрок[ИмяПоляГруппаЗатрат] = ТекНомер;
НайденныеСтроки = Объект[ИмяТЧ].НайтиСтроки(ОтборСтрок);
Для Каждого ТекСтрока Из НайденныеСтроки Цикл
Объект[ИмяТЧ].Удалить(ТекСтрока);
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеИзмененияСтрокТЧПрограммноНаСервере(ИмяТЧ, МассивИдентификаторовСтрок = Неопределено, СтруктураРанееВыполненныхДействий = Неопределено)
СписокТЧ = СтрРазделить(ИмяТЧ, ",");
Если СтруктураРанееВыполненныхДействий = Неопределено Тогда
СтруктураРанееВыполненныхДействий = Новый Структура;
КонецЕсли;
Если СписокТЧ.Найти("Продукция") <> Неопределено
ИЛИ СписокТЧ.Найти("ВозвратныеОтходы") <> Неопределено
ИЛИ СписокТЧ.Найти("РедактированиеЭтаповВыходныеИзделия") <> Неопределено
ИЛИ СписокТЧ.Найти("РедактированиеЭтаповПобочныеИзделия") <> Неопределено Тогда
ОпределитьКоличествоВыходныхИзделий(ЭтаФорма);
КонецЕсли;
Если СписокТЧ.Найти("Услуги") <> Неопределено Тогда
ПриИзмененииСуммыУслуг(ЭтаФорма);
КонецЕсли;
Если СписокТЧ.Найти("Продукция") <> Неопределено ИЛИ СписокТЧ.Найти("РедактированиеЭтаповВыходныеИзделия") <> Неопределено Тогда
МассивГруппировок = Новый Массив;
Если МассивИдентификаторовСтрок <> Неопределено Тогда
Для каждого ИдентификаторСтроки Из МассивИдентификаторовСтрок Цикл
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства Тогда
ДанныеСтроки = РедактированиеЭтапов.ВыходныеИзделия.НайтиПоИдентификатору(ИдентификаторСтроки);
МассивГруппировок.Добавить(ДанныеСтроки.Распоряжение);
Иначе
ДанныеСтроки = Объект.Продукция.НайтиПоИдентификатору(ИдентификаторСтроки);
МассивГруппировок.Добавить(ДанныеСтроки.НомерГруппыЗатрат);
КонецЕсли;
КонецЦикла;
КонецЕсли;
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(МассивГруппировок);
КонецЕсли;
Если СписокТЧ.Найти("Услуги") = Неопределено
И (Не СтруктураРанееВыполненныхДействий.Свойство("ЗаполнитьПризнакЦеховаяКладовая")
Или Не СтруктураРанееВыполненныхДействий.Свойство("ПересчитатьКоличествоЕдиниц")) Тогда
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
Для каждого ИмяТекущейТаблицы Из СписокТЧ Цикл
ИмяПоляСклад = "";
Если ИмяТекущейТаблицы = "Продукция"
Или ИмяТекущейТаблицы = "ВозвратныеОтходы"
Или ИмяТекущейТаблицы = "РедактированиеЭтаповВыходныеИзделия"
Или ИмяТекущейТаблицы = "РедактированиеЭтаповПобочныеИзделия" Тогда
ИмяПоляСклад = "Получатель";
ИначеЕсли ИмяТекущейТаблицы = "Материалы"
Или ИмяТекущейТаблицы = "РедактированиеЭтаповОбеспечениеМатериаламиИРаботами" Тогда
ИмяПоляСклад = "Склад";
Иначе
Продолжить;
КонецЕсли;
Если Не СтруктураРанееВыполненныхДействий.Свойство("ЗаполнитьПризнакЦеховаяКладовая") Тогда
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая", Новый Структура("ИмяПоляСклад", ИмяПоляСклад));
КонецЕсли;
ТекущаяТаблица = ТабличнаяЧастьПоИмени(ИмяТекущейТаблицы, ЭтаФорма);
ИсточникДанных = ?(СтрНайти(ИмяТекущейТаблицы, "РедактированиеЭтапов") > 0, РедактированиеЭтапов, Объект);
ИмяТекущейТабличнойЧасти = ИмяТаблицы(ИмяТекущейТаблицы);
МассивСтрок = Неопределено;
КоллекцияСтрок = ТекущаяТаблица;
Если МассивИдентификаторовСтрок <> Неопределено Тогда
МассивСтрок = Новый Массив;
Для каждого ИдентификаторСтроки Из МассивИдентификаторовСтрок Цикл
МассивСтрок.Добавить(ИсточникДанных[ИмяТекущейТабличнойЧасти].НайтиПоИдентификатору(ИдентификаторСтроки));
КонецЦикла;
КоллекцияСтрок = МассивСтрок;
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
КоллекцияСтрок,
СтруктураДействий,
ИсточникДанных[ИмяТекущейТабличнойЧасти],
КэшированныеЗначения);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ИмяТаблицы(ИмяЭлемента)
Если ИмяЭлемента = "Продукция" Или ИмяЭлемента = "ВозвратныеОтходы" Или ИмяЭлемента = "Материалы" Тогда
Возврат ИмяЭлемента
ИначеЕсли ИмяЭлемента = "РедактированиеЭтаповВыходныеИзделия" Тогда
Возврат "ВыходныеИзделия"
ИначеЕсли ИмяЭлемента = "РедактированиеЭтаповПобочныеИзделия" Тогда
Возврат "ПобочныеИзделия"
ИначеЕсли ИмяЭлемента = "РедактированиеЭтаповОбеспечениеМатериаламиИРаботами" Тогда
Возврат "ОбеспечениеМатериаламиИРаботами"
КонецЕсли;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ТабличнаяЧастьПоИмени(ИмяТЧ, Форма)
Если ИмяТЧ = "РедактированиеЭтаповОбеспечениеМатериаламиИРаботами" Тогда
ТабличнаяЧасть = Форма.РедактированиеЭтапов.ОбеспечениеМатериаламиИРаботами;
ИначеЕсли ИмяТЧ = "РедактированиеЭтаповВыходныеИзделия" Тогда
ТабличнаяЧасть = Форма.РедактированиеЭтапов.ВыходныеИзделия;
ИначеЕсли ИмяТЧ = "РедактированиеЭтаповПобочныеИзделия" Тогда
ТабличнаяЧасть = Форма.РедактированиеЭтапов.ПобочныеИзделия;
ИначеЕсли ИмяТЧ = "РедактированиеЭтаповЭтапы" Тогда
ТабличнаяЧасть = Форма.РедактированиеЭтапов.Этапы;
Иначе
ТабличнаяЧасть = Форма.Объект[ИмяТЧ];
КонецЕсли;
Возврат ТабличнаяЧасть;
КонецФункции
&НаКлиенте
Процедура ОсобыеУсловияПеревозкиПриИзменении(Элемент)
ОсобыеУсловияПеревозкиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДополнитьИнформациюПоДоставкеКонтактами(Команда)
ДополнитьИнформациюПоДоставкеКонтактамиСервер();
КонецПроцедуры
&НаСервере
Процедура ОсобыеУсловияПеревозкиПриИзмененииСервер()
ДоставкаТоваров.ОсобыеУсловияПеревозкиПриИзменении(Элементы, Объект);
КонецПроцедуры
&НаСервере
Процедура ДополнитьИнформациюПоДоставкеКонтактамиСервер()
ДоставкаТоваров.ДополнитьИнформациюПоДоставкеКонтактами(Объект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершениеНаСервере();
Если ЗначениеЗаполнено(Объект.ЖелаемаяДатаПоступления) Тогда
МаксДатаАванса = МаксимальнаяДатаАванса();
Если НЕ ОтветПередЗаписью И ЗначениеЗаполнено(МаксДатаАванса) И МаксДатаАванса > Объект.ЖелаемаяДатаПоступления Тогда
ТекстВопроса = НСтр("ru='Желаемая дата поступления меньше даты этапов предоплаты. Дата будет скорректирована до %МаксДатаАванса%'");
ТекстВопроса = СтрЗаменить(ТекстВопроса, "%МаксДатаАванса%", Формат(МаксДатаАванса,"ДЛФ=DD"));
ДополнительныеПараметры.Вставить("МаксДатаАванса", МаксДатаАванса);
ПоказатьВопрос(
Новый ОписаниеОповещения("ПередЗаписьюЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекстВопроса,
РежимДиалогаВопрос.ОКОтмена);
Возврат;
КонецЕсли;
КонецЕсли;
Если Не Объект.НеОтгружатьЧастями Тогда
Отказ = Ложь;
ЭтапыОплатыКлиент.ПредложитьЗаполнитьГрафикОплатПоУмолчанию(
ЭтотОбъект,
Новый ОписаниеОповещения(
"ПередЗаписьюПредложитьЗаполнитьГрафикОплатПоУмолчаниюЗавершение",
ЭтотОбъект,
ДополнительныеПараметры),
Отказ);
Если Отказ Тогда
Возврат;
КонецЕсли;
КонецЕсли;
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюПредложитьПодобратьМногооборотнуюТаруЗавершениеНаСервере()
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.КОбеспечению")
Или Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.КИсполнению")
Или Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.Закрыт") Тогда
ЗаполнитьПустыеДатыПоступленияСервер();
КонецЕсли;
ВзаиморасчетыВызовСервера.ФормаПередЗаписьюНаКлиентеСервер(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
МаксДатаАванса = ДополнительныеПараметры.МаксДатаАванса;
ОтветНаВопрос = РезультатВопроса;
Если ОтветНаВопрос = КодВозвратаДиалога.ОК Тогда
ОтветПередЗаписью = Истина;
Объект.ЖелаемаяДатаПоступления = МаксДатаАванса;
КонецЕсли;
Если Не Объект.НеОтгружатьЧастями Тогда
Отказ = Ложь;
ЭтапыОплатыКлиент.ПредложитьЗаполнитьГрафикОплатПоУмолчанию(
ЭтотОбъект,
Новый ОписаниеОповещения(
"ПередЗаписьюПредложитьЗаполнитьГрафикОплатПоУмолчаниюЗавершение",
ЭтотОбъект,
ДополнительныеПараметры),
Отказ);
Если Отказ Тогда
Возврат;
КонецЕсли;
КонецЕсли;
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписьюПредложитьЗаполнитьГрафикОплатПоУмолчаниюЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
Объект.ЭтапыГрафикаОплаты.Очистить();
КонецЕсли;
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ДополнительныеПараметры.ПараметрыЗаписи,,Истина);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ОпределитьКоличествоВыходныхИзделий(Форма)
Форма.КоличествоВыходныхИзделий =
Форма.Объект.Продукция.Количество()
+ Форма.Объект.ВозвратныеОтходы.Количество()
;
КонецПроцедуры
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура АктуализироватьЗакупкуПодДеятельность(Заполнить = Истина)
ПараметрыЗаполнения = Документы.ЗаказПереработчику.ПараметрыЗаполненияВидаДеятельностиНДС(Объект);
Если Заполнить Тогда
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(
Объект.ЗакупкаПодДеятельность,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецЕсли;
УчетНДСУП.ЗаполнитьСписокВыбораВидаДеятельностиНДС(
Элементы.ЗакупкаПодДеятельность,
Объект.ЗакупкаПодДеятельность,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецПроцедуры
&НаКлиенте
Процедура УслугиПоПереработкеПриИзменении(Элемент)
НастроитьВидимостьИЗаполнениеУслуг(ЭтаФорма);
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура НастроитьВидимостьИЗаполнениеУслуг(Форма)
ИспользоватьУслуги = (Форма.Объект.УслугиПоПереработке = ПредопределенноеЗначение("Перечисление.ВариантыОформленияУслугДокументовПереработки.УказываютсяВЗаказеОтчете"));
ПоЭтапам = (Форма.Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства"));
Форма.Элементы.ГруппаОплата.Видимость = ИспользоватьУслуги;
Форма.Элементы.ГруппаСтраницыВсегоПродукция.Видимость = ИспользоватьУслуги;
Форма.Элементы.ВалютаДокумента.Видимость = ИспользоватьУслуги Или Не ПоЭтапам;
Форма.Элементы.СтраницаУслуги.Видимость = ИспользоватьУслуги;
Форма.Элементы.БанковскийСчет.Видимость = ИспользоватьУслуги;
Форма.Элементы.ГруппаФинансовогоУчета.Видимость = ИспользоватьУслуги;
Если Не ИспользоватьУслуги Тогда
Форма.Объект.БанковскийСчет = ПредопределенноеЗначение("Справочник.БанковскиеСчетаОрганизаций.ПустаяСсылка");
Форма.Объект.ГруппаФинансовогоУчета = ПредопределенноеЗначение("Справочник.ГруппыФинансовогоУчетаРасчетов.ПустаяСсылка");
Форма.Объект.Сумма = 0;
Форма.Объект.СуммаНДС = 0;
Для Каждого Строка Из Форма.Объект.Услуги Цикл
Строка.Сумма = 0;
Строка.СуммаНДС = 0;
Строка.СуммаСНДС = 0;
КонецЦикла;
ПриИзмененииСуммыУслуг(Форма);
Форма.Объект.ЭтапыГрафикаОплаты.Очистить();
КонецЕсли;
РассчитатьИтоговыеПоказателиДокумента(Форма);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказ(Команда)
Если Модифицированность Или Не Объект.Проведен Тогда
ПоказатьВопрос(
Новый ОписаниеОповещения("ЗакрытьЗаказЗавершение", ЭтотОбъект),
НСтр("ru = 'Необходимо провести документ для выполнения операции. Провести документ?'"),
РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
Модифицированность = Истина;
ЗакрытьЗаказФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказФрагмент(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
ОценкаПроизводительностиКлиент.ЗамерВремени(
"Документ.ЗаказПереработчику.ФормаДокумента.Команда.ЗакрытьЗаказФрагмент");
СписокЗаказовКЗакрытию = Новый СписокЗначений;
СписокЗаказовКЗакрытию.Добавить(Объект.Ссылка);
СтруктураЗакрытия = Новый Структура;
СтруктураЗакрытия.Вставить("Заказы", СписокЗаказовКЗакрытию);
СтруктураЗакрытия.Вставить("ДокументИнициатор", Объект.Ссылка);
СтруктураЗакрытия.Вставить("ОтменитьНеотработанныеСтроки", Истина);
СтруктураЗакрытия.Вставить("ЗакрыватьЗаказы", Истина);
ОткрытьФорму("Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия", СтруктураЗакрытия,
ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ОписаниеОповещения = Новый ОписаниеОповещения("ЗакрытьЗаказФрагмент", ЭтотОбъект);
ПараметрыЗаписи = Новый Структура;
ПараметрыЗаписи.Вставить("ДействиеПослеЗаписи",ОписаниеОповещения);
ПараметрыЗаписи.Вставить("РежимЗаписи", РежимЗаписиДокумента.Проведение);
Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
Возврат;
Иначе
Записать(ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтатьюКалькуляции(ИмяТабличнойЧасти, ТипЗатрат)
Если Элементы[ИмяТабличнойЧасти].ВыделенныеСтроки.Количество() = 0 Тогда
ТекстПредупреждения = НСтр("ru='Необходимо выбрать строки, для которых необходимо заполнить статью калькуляции.'");
ПоказатьПредупреждение(, ТекстПредупреждения);
Возврат;
КонецЕсли;
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ТипЗатрат", ТипЗатрат);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
ПараметрыФормы.Вставить("МножественныйВыбор", Ложь);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяТабличнойЧасти", ИмяТабличнойЧасти);
ОписаниеОповещения = Новый ОписаниеОповещения("ЗаполнитьСтатьюКалькуляцииЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ОткрытьФорму("Справочник.СтатьиКалькуляции.ФормаВыбора", ПараметрыФормы,,,,, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьСтатьюКалькуляцииЗавершение(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
Если РезультатЗакрытия = Неопределено Тогда
Возврат;
КонецЕсли;
ИмяТабличнойЧасти = ДополнительныеПараметры.ИмяТабличнойЧасти;
Для каждого ИдентификаторСтроки Из Элементы[ИмяТабличнойЧасти].ВыделенныеСтроки Цикл
ДанныеСтроки = Объект[ИмяТабличнойЧасти].НайтиПоИдентификатору(ИдентификаторСтроки);
ДанныеСтроки.СтатьяКалькуляции = РезультатЗакрытия;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ОграничениеТипаПолучателя(ТекущаяСтрока, ИмяЭлемента, ПриветсиКТипу = Ложь)
ОграничитьТипПодразделением = ТекущаяСтрока.ТипНоменклатуры = ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа")
Или ТекущаяСтрока.СписатьНаРасходы;
Элементы[ИмяЭлемента].ОграничениеТипа = ?(ОграничитьТипПодразделением,
Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия"),
Новый ОписаниеТипов("СправочникСсылка.Склады"));
Если ПриветсиКТипу Тогда
ТекущаяСтрока.Получатель = Элементы[ИмяЭлемента].ОграничениеТипа.ПривестиЗначение(ТекущаяСтрока.Получатель);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция СуммаНДСТолькоПросмотр(СтавкаНДС)
Возврат УчетНДСУП.НезначащаяСтавка(СтавкаНДС);
КонецФункции
&НаСервере
Процедура ВалютаПриИзмененииНаСервере()
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтаФорма, "Валюта");
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииПолучателя(СтрокаТабличнойЧасти)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая", Новый Структура("ИмяПоляСклад", "Получатель"));
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц", ПроизводствоКлиентСервер.ПараметрыПересчетаКоличестваЕдиниц());
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(СтрокаТабличнойЧасти, СтруктураДействий, КэшированныеЗначения);
КонецПроцедуры
#КонецОбласти
&НаСервере
Функция СкорректироватьСтрокиЗаказа(СтруктураДополнительныхПараметров)
ИмяТЧ = ?(СтруктураДополнительныхПараметров.ИмяТабличнойЧасти = "Товары",
"Продукция, ВозвратныеОтходы, Материалы",
СтруктураДополнительныхПараметров.ИмяТабличнойЧасти);
ДокументОбъект = РеквизитФормыВЗначение("Объект");
СтруктураДополнительныхПараметров.ПроверятьОстатки = Не (ДокументОбъект.Статус = Перечисления.СтатусыЗаказовПереработчикам.НеСогласован);
СтруктураРезультата = ДокументОбъект.СкорректироватьСтрокиЗаказа(СтруктураДополнительныхПараметров);
Если СтруктураДополнительныхПараметров.ЗакрыватьЗаказы Тогда
ДокументОбъект.Статус = Перечисления.СтатусыЗаказовПереработчикам.Закрыт;
ПриИзмененииСтатусаСервер();
КонецЕсли;
ЗначениеВРеквизитФормы(ДокументОбъект, "Объект");
ЗаполнитьСлужебныеРеквизиты();
ЗаполнитьСлужебныеРеквизитыТабличныхЧастей(ИмяТЧ);
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.ВозвратныеОтходы, ЗависимыеРеквизитыВозвратныеОтходы());
ОбщегоНазначенияУТ.ЗаполнитьДубликатыЗависимыхРеквизитовВКоллекции(Объект.Материалы, ЗависимыеРеквизитыМатериалы());
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия();
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ОбновитьКолонкуДоступноСервер();
Модифицированность = Истина;
Возврат СтруктураРезультата;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействиеПроверитьЗаполнитьСклад(ИмяТЧ, Форма, СтруктураДействий)
Если НЕ Форма.ИспользоватьНесколькоСкладов Тогда
СтруктураПараметровДействия = Новый Структура("СкладПоУмолчанию, СкладГруппа", Форма.СкладПоУмолчанию, Ложь);
СтруктураДействий.Вставить("ПроверитьЗаполнитьСклад", СтруктураПараметровДействия);
КонецЕсли;
ИмяПоляСклад =
?(ИмяТЧ = "Материалы" Или ИмяТЧ = "РедактированиеЭтаповОбеспечениеМатериаламиИРаботами", "Склад", "Получатель");
СтруктураДействий.Вставить("ЗаполнитьПризнакЦеховаяКладовая", Новый Структура("ИмяПоляСклад", ИмяПоляСклад));
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьФормуВводаДолиСтоимости(ТекущаяСтрока)
Если Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства") Тогда
ИмяОбъекта = "РедактированиеЭтапов";
Иначе
ИмяОбъекта = "Объект";
КонецЕсли;
НетОшибок = ПроизводствоКлиент.ПроверитьЗаполнениеПередВводомДолиСтоимости(ТекущаяСтрока, ПараметрыРаспределенияЗатрат, ИмяОбъекта);
Если НетОшибок Тогда
ПараметрыФормы = ПараметрыФормыВводаДолиСтоимости(
ИмяОбъекта,
ПараметрыРаспределенияЗатрат,
ТекущаяСтрока.ПолучитьИдентификатор());
ОткрытьФорму("ОбщаяФорма.ВводДолиСтоимости",
ПараметрыФормы,
ЭтаФорма);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВводаДолиСтоимости(Элемент, ТекущиеДанные, ВыбранноеЗначение)
Если ТекущиеДанные.ДоляСтоимости <> ВыбранноеЗначение.ДоляСтоимости Тогда
ПроизводствоКлиентСервер.ЗаполнитьДолюСтоимостиВСтроке(
ТекущиеДанные,
ВыбранноеЗначение);
Группировки = Новый Массив;
Если Объект.ГруппировкаЗатрат = ПредопределенноеЗначение("Перечисление.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства") Тогда
Группировки.Добавить(ТекущиеДанные.Распоряжение);
Иначе
Группировки.Добавить(ТекущиеДанные.НомерГруппыЗатрат);
КонецЕсли;
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СпособРаспределенияЗатратНаВыходныеИзделияПриИзмененииНаСервере()
ПараметрыРаспределенияЗатратСтруктура = Документы.ЗаказПереработчику.ПараметрыРаспределенияЗатрат(Объект);
ПараметрыРаспределенияЗатрат = Новый ФиксированнаяСтруктура(ПараметрыРаспределенияЗатратСтруктура);
Если Объект.ГруппировкаЗатрат <> Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства Тогда
ПроизводствоСервер.РассчитатьДолюСтоимости(Объект, ПараметрыРаспределенияЗатрат);
КонецЕсли;
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия();
КонецПроцедуры
&НаСервере
Процедура РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Группировки = Неопределено)
ПроизводствоСервер.РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия(Объект, ПараметрыРаспределенияЗатрат, Группировки);
КонецПроцедуры
&НаСервере
Функция ПараметрыФормыВводаДолиСтоимости(ИмяОбъекта, ПараметрыРаспределенияЗатратЭтапа, ТекущиеДанныеИдентификатор)
ПараметрыФормы = ПроизводствоСервер.ПараметрыФормыВводаДолейСтоимости(ЭтаФорма[ИмяОбъекта], ПараметрыРаспределенияЗатратЭтапа, ТекущиеДанныеИдентификатор);
Возврат ПараметрыФормы;
КонецФункции
&НаКлиенте
Процедура ЗаполнитьПолучателяПоУмолчанию(ТекущиеДанные, ПризнакВыполнения = Ложь)
НастройкиЗаполнения = Новый Соответствие;
НастройкиЗаполнения.Вставить("ТипНоменклатуры", Новый Соответствие);
НастройкиТипНоменклатура = НастройкиЗаполнения.Получить("ТипНоменклатуры");
НастройкиТипНоменклатура.Вставить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Работа") ,
ПредопределенноеЗначение("Справочник.СтруктураПредприятия.ПустаяСсылка"));
Если Не ИспользоватьНесколькоСкладов Тогда
НастройкиТипНоменклатура.Вставить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар") , СкладПоУмолчанию);
НастройкиТипНоменклатура.Вставить(ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.МногооборотнаяТара") , СкладПоУмолчанию);
КонецЕсли;
ПроизводствоКлиентСервер.ЗаполнитьЗначениеРеквизита(ТекущиеДанные, "Получатель", НастройкиЗаполнения, Истина, ПризнакВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура СтатьяРасходовВыбор(Элемент, СтандартнаяОбработка)
ДоходыИРасходыКлиент.НачалоВыбораСтатьи(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура СтатьяРасходовПриИзменении(Элемент)
ДоходыИРасходыКлиентСервер.СтатьяПриИзменении(ЭтотОбъект, Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ОповеститьОбОкончанииЗаполненияПолучателей()
ПоказатьОповещениеПользователя(
НСтр("ru = 'Получатель заполнен'"),
,
НСтр("ru='Для выделенных строк получатель установлен'"),
БиблиотекаКартинок.Информация32);
КонецПроцедуры
#Область Обеспечение
&НаСервере
Функция АдресТаблицыДвиженийВХранилище()
Возврат ОбеспечениеВДокументахСервер.АдресТаблицыДвиженийВХранилище(ЭтотОбъект);
КонецФункции
&НаСервере
Функция ЗаполнитьОбеспечениеИзФормыСостоянияОбеспечения(КодДействия, АдресАналитик, ПараметрыЗаполнения)
Модифицированность = Истина;
Изменения = ОбеспечениеВДокументахСервер.ЗаполнитьОбеспечениеИзФормыСостоянияОбеспечения(
КодДействия,
АдресАналитик,
ЭтотОбъект);
Режим = ОбеспечениеВДокументахКлиентСервер.РежимСостоянияОбеспечения();
ПослеЗаполненияОбеспечения(Изменения, Режим, ПараметрыЗаполнения);
АдресТаблицыДвижений = АдресТаблицыДвиженийВХранилище();
Возврат АдресТаблицыДвижений;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ЗаполнитьУслугиПоПродукции(Объект)
Если Объект.ПереработкаПоЗаказу Тогда
Результат = Новый Структура("УдаленыСтрокиМатериалов", Ложь);
Возврат Результат;
КонецЕсли;
ИмяПоляГруппаЗатрат = ИмяПоляГруппаЗатрат(Объект);
СписокГруппЗатрат = Новый Массив;
Для каждого СтрокаПродукция Из Объект.Продукция Цикл
Если НЕ ЗначениеЗаполнено(СтрокаПродукция[ИмяПоляГруппаЗатрат]) Тогда
Продолжить;
КонецЕсли;
ПараметрыГруппыЗатрат = Новый Структура("Распоряжение,Спецификация,"+ИмяПоляГруппаЗатрат);
ЗаполнитьЗначенияСвойств(ПараметрыГруппыЗатрат, СтрокаПродукция);
СписокГруппЗатрат.Добавить(ПараметрыГруппыЗатрат);
СтруктураПоиска = Новый Структура(ИмяПоляГруппаЗатрат, СтрокаПродукция[ИмяПоляГруппаЗатрат]);
СписокСтрок = Объект.Услуги.НайтиСтроки(СтруктураПоиска);
Если СписокСтрок.Количество() = 0 Тогда
СтрокаУслуга = Объект.Услуги.Добавить();
СтрокаУслуга[ИмяПоляГруппаЗатрат] = СтрокаПродукция[ИмяПоляГруппаЗатрат];
СтрокаУслуга.Спецификация = СтрокаПродукция.Спецификация;
КонецЕсли;
КонецЦикла;
ПредставленияГруппЗатрат = ПредставленияГруппЗатрат(
СписокГруппЗатрат,
Объект.ГруппировкаЗатрат,
Объект.Продукция,
ИмяПоляГруппаЗатрат);
Для каждого СтрокаУслуга Из Объект.Услуги Цикл
ГруппаЗатрат = ПредставленияГруппЗатрат.Получить(СтрокаУслуга[ИмяПоляГруппаЗатрат]);
Если ГруппаЗатрат <> Неопределено Тогда
СтрокаУслуга.ГруппаЗатрат = ГруппаЗатрат;
КонецЕсли;
КонецЦикла;
СтрокиУслугКУдалению = Новый Массив;
Для каждого СтрокаУслуга Из Объект.Услуги Цикл
СтруктураПоиска = Новый Структура(ИмяПоляГруппаЗатрат, СтрокаУслуга[ИмяПоляГруппаЗатрат]);
СписокСтрок = Объект.Продукция.НайтиСтроки(СтруктураПоиска);
Если СписокСтрок.Количество() = 0 Тогда
СтрокиУслугКУдалению.Добавить(СтрокаУслуга);
КонецЕсли;
КонецЦикла;
УдаленыСтрокиМатериалов = Ложь;
Для каждого СтрокаУслуга Из СтрокиУслугКУдалению Цикл
СтруктураПоиска = Новый Структура(ИмяПоляГруппаЗатрат, СтрокаУслуга[ИмяПоляГруппаЗатрат]);
СписокСтрок = Объект.ВозвратныеОтходы.НайтиСтроки(СтруктураПоиска);
Для каждого ДанныеСтроки Из СписокСтрок Цикл
Объект.ВозвратныеОтходы.Удалить(ДанныеСтроки);
КонецЦикла;
СписокСтрок = Объект.Материалы.НайтиСтроки(СтруктураПоиска);
УдаленыСтрокиМатериалов = СписокСтрок.Количество() > 0;
Для каждого ДанныеСтроки Из СписокСтрок Цикл
Объект.Материалы.Удалить(ДанныеСтроки);
КонецЦикла;
Объект.Услуги.Удалить(СтрокаУслуга);
КонецЦикла;
Результат = Новый Структура("УдаленыСтрокиМатериалов", УдаленыСтрокиМатериалов);
Возврат Результат;
КонецФункции
&НаСервере
Функция ОбеспечениеУстановитьДействие(КодДействия)
Результат = ОбеспечениеВДокументахСервер.ОбеспечениеУстановитьДействиеСтруктураРезультата();
Если КодДействия = "ФЛАГ_ОБОСОБЛЕННО" Или КодДействия = "ФЛАГ_НЕОБОСОБЛЕННО" Тогда
Изменения = ОбеспечениеВДокументахСервер.УстановитьДействиеОбособленно(
КодДействия,
ЭтотОбъект,
Элементы.Материалы.ВыделенныеСтроки);
ОбновитьКолонкуДоступноСервер();
Иначе
Изменения = ОбеспечениеВДокументахСервер.УстановитьДействие(
КодДействия,
ЭтотОбъект,
Элементы.Материалы.ВыделенныеСтроки);
ЗаполнитьЗначенияСвойств(Результат, Изменения);
Если Изменения.ТаблицаИзменений <> Неопределено Тогда
ПослеЗаполненияОбеспечения(
Изменения.ТаблицаИзменений,
ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия(),
Результат);
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция ОбработатьВыборСкладаИСерииМатериалыНаСервере(ВыбранноеЗначение, ПараметрыФормы, ПараметрыЗаполнения)
Модифицированность = Истина;
Изменения = ОбеспечениеВДокументахСервер.ПриВыбореСклада(
ВыбранноеЗначение,
ЭтотОбъект,
Элементы.Материалы.ТекущаяСтрока,
ПараметрыФормы.ЗаполняемыеПоля);
ПослеЗаполненияОбеспечения(Изменения, ПараметрыФормы.Режим, ПараметрыЗаполнения);
ТекстОбработаноСтрок = ОбеспечениеВДокументахСервер.ТекстОбработаноСтрок(Изменения.Количество());
Возврат ТекстОбработаноСтрок;
КонецФункции
&НаСервере
Функция ПараметрыВыбораОбеспеченияМатериалы(Режим)
ПараметрыФормы = ОбеспечениеВДокументахСервер.ПараметрыВыбораОбеспечения(
ЭтотОбъект,
Элементы.Материалы.ТекущаяСтрока,
Режим);
Возврат ПараметрыФормы;
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыДокументаДляДействийОбеспечения(Форма, ДатаОтгрузки)
ПараметрыДокумента = Новый Структура();
ПараметрыДокумента.Вставить("Форма", Форма);
ПараметрыДокумента.Вставить("Коллекция", Форма.Объект.Материалы);
ПараметрыДокумента.Вставить("ВариантОбеспеченияИФлагОбособленно", Неопределено);
Возврат ПараметрыДокумента;
КонецФункции
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияНажатиеОбщий()
ПараметрыФормы = ОбеспечениеВДокументахКлиент.ГиперссылкаСостояниеОбеспеченияНажатие(ЭтотОбъект);
Если Объект.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовПереработчикам.НеСогласован") Тогда
ПараметрыФормы.ДопустимыеВариантыОбеспечения = ОбеспечениеВДокументахКлиент.ВсеДопустимыеВариантыОбеспечения();
ПараметрыФормы.ДопустимыеВариантыОбеспечения.Удалить(
ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.СоСклада"));
КонецЕсли;
Если ПараметрыФормы.КонтекстИспользования = "ТАБЛИЦА" Тогда
ПараметрыФормы.АдресТаблицыДвижений = АдресТаблицыДвиженийВХранилище();
КонецЕсли;
ОткрытьФорму("Обработка.СостояниеОбеспеченияЗаказов.Форма", ПараметрыФормы, ЭтотОбъект, УникальныйИдентификатор,,,,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, ПоляСтрокой)
ПараметрыДокумента = ПараметрыДокументаДляДействийОбеспечения(ЭтотОбъект, Неопределено);
ОбеспечениеВДокументахКлиентСервер.ДобавитьДействияОбеспечения(СтруктураДействий, ПоляСтрокой, ПараметрыДокумента);
КонецПроцедуры
&НаСервере
Процедура ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, ПоляСтрокой, ДатаОтгрузки = Неопределено)
ПараметрыДокумента = ПараметрыДокументаДляДействийОбеспечения(ЭтотОбъект, ДатаОтгрузки);
ОбеспечениеВДокументахКлиентСервер.ДобавитьДействияОбеспечения(СтруктураДействий, ПоляСтрокой, ПараметрыДокумента);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыФормыДокумента()
Если Объект.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоЭтапамПроизводства Тогда
Иначе
ПараметрыДокумента = ПараметрыДокументаДляДействийОбеспечения(ЭтотОбъект, Неопределено);
ОбеспечениеВДокументахСервер.ЗаполнитьСлужебныеРеквизитыФормыДокумента(ПараметрыДокумента);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура МатериалыВариантОбеспеченияПриИзмененииНаСервере(ПараметрыЗаполнения)
Изменения = ОбеспечениеВДокументахСервер.ВариантОбеспеченияПриИзменении(
ЭтотОбъект,
Элементы.Материалы.ТекущаяСтрока);
Режим = ОбеспечениеВДокументахКлиентСервер.РежимВыборДействияНепосредственно();
ПослеЗаполненияОбеспечения(Изменения, Режим, ПараметрыЗаполнения);
КонецПроцедуры
&НаКлиенте
Процедура МатериалыВариантОбеспеченияПриИзмененииПослеВопроса(Ответ, ДополнительныеПараметры) Экспорт
ПараметрыЗаполнения = ОбеспечениеВДокументахКлиент.ПараметрыОбработкиДатОтгрузкиПослеЗаполненияОбеспечения(Ответ);
МатериалыВариантОбеспеченияПриИзмененииНаСервере(ПараметрыЗаполнения);
КонецПроцедуры
&НаСервере
Процедура ОбеспечениеУстановитьДействиеПослеВопроса(Ответ, Результат)
СтруктураРезультата = ОбеспечениеВДокументахСервер.УстановитьДействиеПослеВопроса(Ответ, Результат, ЭтотОбъект);
ПослеЗаполненияОбеспечения(
СтруктураРезультата.ТаблицаИзменений,
ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия(),
СтруктураРезультата);
КонецПроцедуры
&НаКлиенте
Процедура ОбеспечениеУстановитьДействиеСВопросом(КодДействия)
Результат = ОбеспечениеУстановитьДействие(КодДействия);
ВопросЗадан = ОбеспечениеВДокументахКлиент.ПоказатьВопросЗаполнятьОбеспечениеЦелымиУпаковками(
ЭтотОбъект,
Объект.Материалы,
Результат,
"ПослеВопросаЗаполнятьОбеспечениеЦелымиУпаковками");
Если Не ВопросЗадан Тогда
ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатой(
ЭтотОбъект,
Объект.Материалы,
Результат,
"ПослеВопросаСнятьФлагОтгружатьОднойДатой");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьКолонкуДоступноСервер()
ОбеспечениеВДокументахСервер.ОбновитьКолонкуДоступно(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьВыборСкладаИСерииМатериалы(ВыбранноеЗначение, ПараметрыФормы) Экспорт
Если Не ОбеспечениеВДокументахКлиент.ЕстьПодобранныеТовары(ВыбранноеЗначение) Тогда
Возврат;
КонецЕсли;
ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатойПослеВыбораОбеспечения(
ЭтотОбъект,
ВыбранноеЗначение,
ПараметрыФормы,
"ОбработатьВыборСкладаИСерииПослеВопросаМатериалы");
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьВыборСкладаИСерииПослеВопросаМатериалы(Ответ, Параметры) Экспорт
ПараметрыЗаполнения = ОбеспечениеВДокументахКлиент.ПараметрыОбработкиДатОтгрузкиПослеЗаполненияОбеспечения(Ответ);
Оповещение = ОбработатьВыборСкладаИСерииМатериалыНаСервере(
Параметры.ВыбранноеЗначение,
Параметры.ПараметрыФормы,
ПараметрыЗаполнения);
ТекстОповещения = ОбеспечениеВДокументахКлиент.ТекстОповещенияОбработкиВыборСкладаИСерии(Параметры.ПараметрыФормы.Режим);
ПоказатьОповещениеПользователя(ТекстОповещения, , Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииМодифицированностиФормы()
Если ФормаМодифицирована <> Модифицированность Тогда
ФормаМодифицирована = Модифицированность;
НастроитьГиперссылкиСостояниеОбеспеченияКлиент();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеВопросаЗаполнятьОбеспечениеЦелымиУпаковками(Ответ, Результат) Экспорт
ВопросЗадан = ОбеспечениеВДокументахКлиент.ПоказатьВопросСнятьФлагОтгружатьОднойДатойПослеВопроса(
ЭтотОбъект,
Объект.Материалы,
Результат,
Ответ,
"ПослеВопросаСнятьФлагОтгружатьОднойДатой");
Если Не ВопросЗадан Тогда
ОбеспечениеУстановитьДействиеПослеВопроса(Ответ, Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеВопросаСнятьФлагОтгружатьОднойДатой(Ответ, Результат) Экспорт
ОбеспечениеУстановитьДействиеПослеВопроса(Ответ, Результат);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаполненияОбеспечения(Изменения, Режим = Неопределено, ПараметрыЗаполнения = Неопределено)
Документы.ЗаказПереработчику.ПослеЗаполненияОбеспечения(Объект, Изменения, Режим, ПараметрыЗаполнения);
УстановитьВидимостьЭлементовФормыДатОтгрузки();
ЗаказыСервер.ПересчитатьЗависимыеРеквизитыПослеРазбиенияСтрок(Изменения, ЗависимыеРеквизитыМатериалыСтрокой());
ЗаполнитьСлужебныеРеквизиты();
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
СтруктураДействий = Новый Структура();
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "СкладОбязателен,ДатаОтгрузкиОбязательна");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
КоллекцияНаФорме = ОбеспечениеВДокументахКлиентСервер.КоллекцияНаФорме(
ЭтотОбъект, ДоступныеОстаткиПараметрыВстраивания);
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого Изменение Из Изменения Цикл
ОбрабатываемыеСтроки.Добавить(Изменение.Строка);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
КоллекцияНаФорме,
КэшированныеЗначения);
ОбеспечениеВДокументахКлиентСервер.ЗаполнитьСлужебныеРеквизиты(Объект.Материалы, ДатаОтгрузкиОбязательна, СкладОбязателен);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаСервере
Процедура ПродукцияПослеУдаленияСервер()
ЗаполнитьУслугиПоПродукции(Объект);
ПриИзмененииСуммыУслуг(ЭтаФорма);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
ТребуетсяЗаполнитьДанныеРаспоряжения = Истина;
РассчитатьПроцентРаспределенияЗатратНаВыходныеИзделия();
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаСервере
Процедура ПродукцияПриИзмененииНаСервере()
ВзаиморасчетыСервер.ФормаПриИзмененииРеквизитов(ЭтотОбъект, "Продукция.ДатаПоступления");
КонецПроцедуры
&НаКлиенте
Функция ПараметрыФормыЗапросаКоличестваИСерийМатериалы(Режим)
ПараметрыПроверки = ОбеспечениеКлиентСервер.ИнициализироватьПараметрыПроверкиЗаполнения("Материалы",
НСтр("ru = 'Сырье и материалы для производства'"));
ПараметрыПроверки.Поля.Удалить("Склад");
Если Не ИспользоватьПодразделения Тогда
ПараметрыПроверки.Поля.Удалить("Подразделение");
КонецЕсли;
Если Не ОбеспечениеКлиент.ПроверитьЗаполнение(
Объект,
Объект.Материалы,
Элементы.Материалы.ТекущаяСтрока,
ПараметрыПроверки,
Неопределено,
Объект.Подразделение) Тогда
Возврат Неопределено;
КонецЕсли;
ПараметрыФормы = ПараметрыВыбораОбеспеченияМатериалы(Режим);
ПараметрыФормы.ПараметрыУказанияСерий = ПараметрыУказанияСерий;
Возврат ПараметрыФормы;
КонецФункции
#КонецОбласти
&НаСервере
Процедура АктуализироватьСтавкуНДССервер()
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(Объект, СтруктураДействий, Неопределено);
СтруктураПересчетаСуммы = Новый Структура("ЦенаВключаетНДС", Ложь);
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ЗаполнитьСтавкуНДС", ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыЗаполненияСтавкиНДС(Объект));
СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Услуги, СтруктураДействий, Неопределено);
РассчитатьИтоговыеПоказателиДокумента(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
#Область Инициализация
ОтветПередЗаписью = Ложь;
#КонецОбласти