#Область ОписаниеПеременных
&НаКлиенте
Перем КэшированныеЗначения;
&НаКлиенте
Перем СерияРедактируетсяВШапке;
&НаКлиенте
Перем ТекущиеДанныеИдентификатор;
&НаКлиенте
Перем ФормаМодифицирована;
#КонецОбласти
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ДоступныеОстаткиПараметрыВстраивания = Неопределено Тогда
ПараметрыВстраивания = Документы.ЗаказНаСборку.ДоступныеОстаткиПараметрыВстраивания(Объект);
Иначе
ПараметрыВстраивания = ДоступныеОстаткиПараметрыВстраивания;
КонецЕсли;
ОбеспечениеВДокументахСервер.ДоступныеОстаткиПриСозданииНаСервере(ЭтотОбъект, ПараметрыВстраивания);
УстановитьУсловноеОформление();
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма);
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
ДополнительныеПараметры.Вставить("ОтложеннаяИнициализация", Истина);
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПриЧтенииСозданииНаСервере();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий.ТЧ);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий.Шапка);
КонецЕсли;
Справочники.Назначения.ФормаДокументаПриСозданииНаСервере(ЭтаФорма);
Элементы.ЗакрытьЗаказ.Доступность = ПравоДоступа("Изменение",Метаданные.Документы.ЗаказНаСборку);
УстановитьДоступностьКомандБуфераОбмена();
Перечисления.СтатусыВнутреннихЗаказов.ЗаполнитьСписокВыбора(Элементы.Статус.СписокВыбора, Ложь);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтаФорма);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПодключитьОбработчикОжидания("Подключаемый_ПриИзмененииМодифицированностиФормы", 1);
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
МенеджерОборудованияКлиент.НачатьПодключениеОборудованиеПриОткрытииФормы(Неопределено, ЭтаФорма, "СканерШтрихкода");
НоменклатураКлиент.ОбновитьКешированныеЗначенияШапкиДляУчетаСерий(Объект,КэшированныеЗначения,ПараметрыУказанияСерий.Шапка);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
МенеджерОборудованияКлиент.НачатьОтключениеОборудованиеПриЗакрытииФормы(Неопределено, ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ЗаказНаСборку.Форма.ФормаДокумента.Событие.ОбработкаВыбора");
Если ИсточникВыбора.ИмяФормы = "Обработка.СостояниеОбеспеченияЗаказов.Форма.Форма" Тогда
АдресТаблицыДвижений = ЗаполнитьОбеспечениеИзФормыСостоянияОбеспечения(
ВыбранноеЗначение.КодДействия,
ВыбранноеЗначение.АдресАналитик,
ВыбранноеЗначение.ПараметрыЗаполнения);
ВыполнитьОбработкуОповещения(ВыбранноеЗначение.ВыполняемоеОповещение, АдресТаблицыДвижений);
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПодборТоваровВДокументПродажи.Форма.Форма" Тогда
ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение);
ИначеЕсли НоменклатураКлиент.ЭтоУказаниеСерий(ИсточникВыбора) Тогда
Если СерияРедактируетсяВШапке Тогда
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий.Шапка, ВыбранноеЗначение);
НоменклатураКлиент.ОбновитьКешированныеЗначенияШапкиДляУчетаСерий(Объект,КэшированныеЗначения,ПараметрыУказанияСерий.Шапка);
Иначе
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий.ТЧ, ВыбранноеЗначение);
КонецЕсли;
ИначеЕсли ИсточникВыбора.ИмяФормы = "Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия" Тогда
РезультатОтмены = СкорректироватьСтрокиЗаказа(ВыбранноеЗначение);
ПоказатьОповещениеПользователя(НСтр("ru = 'Отмена неотработанных строк'"), , РезультатОтмены.Оповещение);
Если НоменклатураКлиент.НеобходимоОбновитьСтатусСерийВШапке(Объект, КэшированныеЗначения, ПараметрыУказанияСерий.Шапка) Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияШапкиДляУчетаСерий(Объект, КэшированныеЗначения, ПараметрыУказанияСерий.Шапка);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда
Если ИмяСобытия = "ScanData" И МенеджерОборудованияУТКлиент.ЕстьНеобработанноеСобытие() Тогда
ОбработатьШтрихкоды(МенеджерОборудованияУТКлиент.ПреобразоватьДанныеСоСканераВМассив(Параметр));
КонецЕсли;
КонецЕсли;
Если Источник = "ПодключаемоеОборудование"
И ИмяСобытия = "НеизвестныеШтрихкоды"
И Параметр.ФормаВладелец = УникальныйИдентификатор Тогда
КэшированныеЗначения.Штрихкоды.Очистить();
ДанныеШтрихкодов = Новый Массив;
Для Каждого ПолученныйШтрихкод Из Параметр.ПолученыНовыеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
Для Каждого ПолученныйШтрихкод Из Параметр.ЗарегистрированныеШтрихкоды Цикл
ДанныеШтрихкодов.Добавить(ПолученныйШтрихкод);
КонецЦикла;
ОбработатьШтрихкоды(ДанныеШтрихкодов);
КонецЕсли;
Если ИмяСобытия = "КопированиеСтрокВБуферОбмена" Тогда
УстановитьДоступностьКомандБуфераОбменаНаКлиенте();
КонецЕсли;
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
СобытияФормКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаНавигационнойСсылки(НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
СобытияФормКлиент.ОбработкаНавигационнойСсылки(ЭтотОбъект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ДоступныеОстаткиПараметрыВстраивания = Неопределено;
ПараметрыВстраивания = Документы.ЗаказНаСборку.ДоступныеОстаткиПараметрыВстраивания(Объект);
ОбеспечениеВДокументахСервер.ДоступныеОстаткиПриЧтенииНаСервере(ЭтотОбъект, ПараметрыВстраивания);
ПриЧтенииСозданииНаСервере();
СобытияФорм.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ОбеспечениеВДокументахСервер.ПослеЗаписиНаСервере(ЭтотОбъект);
УстановитьСвойстваЭлементовФормыХозяйственнаяОперация();
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
СобытияФорм.ПослеЗаписиНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
ФормаМодифицирована = Неопределено;
Подключаемый_ПриИзмененииМодифицированностиФормы();
ОповеститьОПроведенииДокумента(ПараметрыЗаписи);
ОбеспечениеВДокументахКлиент.ПослеЗаписи(ЭтотОбъект, "Подключаемый_ПроверитьВыполнениеЗаданияРаспределенияЗапасов");
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);
Если ПараметрыЗаписи.Свойство("СозданиеКорректировки") Тогда
ДополнительныеПараметры = ПараметрыЗаписи.СозданиеКорректировки;
Если Объект.Проведен Тогда
ОбъектыОснований = Новый Массив();
ОбъектыОснований.Добавить(Объект.Ссылка);
ДополнительныеПараметры.ОписаниеКоманды.Вставить("ОбъектыОснований", ОбъектыОснований);
ДополнительныеПараметры.ОписаниеКоманды.Вставить("Форма", ЭтотОбъект);
ОбеспечениеВДокументахКлиент.ОткрытьЗаполнениеКорректировкиНазначения(
ДополнительныеПараметры.Резервирование,
Объект.Ссылка,
ДополнительныеПараметры.ОписаниеКоманды);
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтаФорма, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
АктуализироватьСборкуПодДеятельность();
КонецПроцедуры
&НаКлиенте
Процедура СкладПриИзменении(Элемент)
СкладПриИзмененииСервер();
НоменклатураКлиент.ОбновитьКешированныеЗначенияШапкиДляУчетаСерий(Объект,КэшированныеЗначения, ПараметрыУказанияСерий.Шапка);
КонецПроцедуры
&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
АктуализироватьСборкуПодДеятельность();
НоменклатураКлиент.ОбновитьКешированныеЗначенияШапкиДляУчетаСерий(Объект,КэшированныеЗначения, ПараметрыУказанияСерий.Шапка);
КонецПроцедуры
&НаКлиенте
Процедура ХозяйственнаяОперацияПриИзменении(Элемент)
ХозяйственнаяОперацияПриИзмененииСервер();
НоменклатураКлиент.ОбновитьКешированныеЗначенияШапкиДляУчетаСерий(Объект,КэшированныеЗначения, ПараметрыУказанияСерий.Шапка);
КонецПроцедуры
&НаКлиенте
Процедура НоменклатураПриИзменении(Элемент)
НоменклатураПриИзмененииСервер(КэшированныеЗначения);
НоменклатураКлиент.ОбновитьКешированныеЗначенияШапкиДляУчетаСерий(Объект, КэшированныеЗначения, ПараметрыУказанияСерий.Шапка);
СкрытьГруппуОтмена();
КонецПроцедуры
&НаКлиенте
Процедура ХарактеристикаПриИзменении(Элемент)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьЗаполнитьВариантКомплектацииПоВладельцу", Объект.ВариантКомплектации);
СтруктураДействий.Вставить("ПроверитьЗаполнитьНазначение");
СтруктураСтроки = Новый Структура;
СтруктураСтроки.Вставить("Номенклатура", Объект.Номенклатура);
СтруктураСтроки.Вставить("Характеристика", Объект.Характеристика);
СтруктураСтроки.Вставить("ВариантКомплектации", Объект.ВариантКомплектации);
СтруктураСтроки.Вставить("ХарактеристикиИспользуются", Истина);
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Объект"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(СтруктураСтроки, СтруктураДействий, КэшированныеЗначения);
ЗаполнитьЗначенияСвойств(Объект, СтруктураСтроки, "ВариантКомплектации");
ХарактеристикаПриИзмененииСервер();
ВариантКомплектацииПриИзмененииНаСервере();
Если НоменклатураКлиент.НеобходимоОбновитьСтатусСерийВШапке(Объект,КэшированныеЗначения,ПараметрыУказанияСерий.Шапка) Тогда
ЗаполнитьСтатусыУказанияСерийПриИзмененииТовараВШапке(КэшированныеЗначения);
НоменклатураКлиент.ОбновитьКешированныеЗначенияШапкиДляУчетаСерий(Объект,КэшированныеЗначения,ПараметрыУказанияСерий.Шапка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УпаковкаПриИзменении(Элемент)
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(Объект, СтруктураДействий, КэшированныеЗначения);
НадписьУпаковка = ?(ЗначениеЗаполнено(Объект.Упаковка), Объект.Упаковка, Элементы.Упаковка.ПодсказкаВвода);
ВыполнитьДействияОбеспеченияКомплектаНаКлиенте("Доступно");
КонецПроцедуры
&НаКлиенте
Процедура КоличествоУпаковокПриИзменении(Элемент)
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(Объект, СтруктураДействий, КэшированныеЗначения);
ВыполнитьДействияОбеспеченияКомплектаНаКлиенте("Доступно");
СкрытьГруппуОтмена();
Если НоменклатураКлиент.НеобходимоОбновитьСтатусСерийВШапке(Объект,КэшированныеЗначения,ПараметрыУказанияСерий.Шапка) Тогда
ЗаполнитьСтатусыУказанияСерийПриИзмененииТовараВШапке(КэшированныеЗначения);
НоменклатураКлиент.ОбновитьКешированныеЗначенияШапкиДляУчетаСерий(Объект,КэшированныеЗначения,ПараметрыУказанияСерий.Шапка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СкрытьГруппуОтмена()
Объект.КоличествоОтменено = 0;
Объект.КоличествоУпаковокОтменено = 0;
Элементы.ГруппаОтмена.Видимость = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура СтатусУказанияСерийНажатие(Элемент, СтандартнаяОбработка)
ОткрытьПодборСерийКомплекта();
КонецПроцедуры
&НаКлиенте
Процедура СерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерийКомплекта(Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура СерияПриИзменении(Элемент)
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = Объект.Серия;
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий.Шапка, ВыбранноеЗначение);
НоменклатураКлиент.ОбновитьКешированныеЗначенияШапкиДляУчетаСерий(Объект,КэшированныеЗначения,ПараметрыУказанияСерий.Шапка);
КонецПроцедуры
&НаКлиенте
Процедура ДлительностьСборкиРазборкиПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.НачалоСборкиРазборки) Тогда
Объект.ОкончаниеСборкиРазборки = Объект.НачалоСборкиРазборки + Объект.ДлительностьСборкиРазборки * 86400;
ИначеЕсли ЗначениеЗаполнено(Объект.ОкончаниеСборкиРазборки) Тогда
Объект.НачалоСборкиРазборки = Объект.ОкончаниеСборкиРазборки - Объект.ДлительностьСборкиРазборки * 86400;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НачалоСборкиРазборкиПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.НачалоСборкиРазборки) Тогда
Объект.ОкончаниеСборкиРазборки = Объект.НачалоСборкиРазборки + Объект.ДлительностьСборкиРазборки * 86400;
Иначе
Объект.ОкончаниеСборкиРазборки = Неопределено;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОкончаниеСборкиРазборкиПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.ОкончаниеСборкиРазборки) Тогда
Объект.НачалоСборкиРазборки = Объект.ОкончаниеСборкиРазборки - Объект.ДлительностьСборкиРазборки * 86400;
Иначе
Объект.НачалоСборкиРазборки = Неопределено;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура НаправлениеДеятельностиПриИзменении(Элемент)
НаправлениеДеятельностиПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ГруппаСтраницыПриСменеСтраницы(Элемент, ТекущаяСтраница)
Если ЭтотОбъект.ПараметрыСвойств.Свойство(ТекущаяСтраница.Имя)
И Не ЭтотОбъект.ПараметрыСвойств.ВыполненаОтложеннаяИнициализация Тогда
СвойстваВыполнитьОтложеннуюИнициализацию();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СборкаПодДеятельностьОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура НазначениеПриИзменении(Элемент)
НазначениеПриИзмененииСервер();
КонецПроцедуры
&НаКлиенте
Процедура ВариантОбеспеченияПриИзменении(Элемент)
Перем ПараметрыФормы;
Если ОбеспечениеВДокументахКлиент.ОткрытьФормуВыбораСкладаИСерий(ЭтотОбъект) Тогда
ВариантПолученияПараметров = ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия();
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерийКомплекта(ВариантПолученияПараметров);
КонецЕсли;
ОбеспечениеВДокументахКлиент.ВариантОбеспеченияПриИзменении(
ЭтотОбъект,
ПараметрыФормы,
"ОбработатьВыборСкладаИСерииКомплекта",
Ложь,
"ВариантОбеспеченияПриИзмененииНаКлиенте");
КонецПроцедуры
&НаКлиенте
Процедура ВариантОбеспеченияОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ВариантОбеспеченияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбеспечениеВДокументахКлиент.ВариантОбеспеченияОбработкаВыбора(
ЭтотОбъект,
Объект,
ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ОбособленноПриИзменении(Элемент)
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаКлиенте
Процедура ДоступноНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерийКомплекта(Неопределено);
Если ПараметрыФормы <> Неопределено Тогда
ОткрытьФорму("Обработка.ЗапросКоличестваИСерий.Форма", ПараметрыФормы, ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияНажатие(Элемент)
ГиперссылкаСостояниеОбеспеченияНажатиеОбщий();
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияПроблемаНажатие(Элемент)
ГиперссылкаСостояниеОбеспеченияНажатиеОбщий();
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияОтгружаетсяНажатие(Элемент)
ГиперссылкаСостояниеОбеспеченияНажатиеОбщий();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент,
ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент,
ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыТовары
&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(
Истина, "Документ.ЗаказНаСборку.Форма.ФормаДокумента.Элементы.Товары.Выбор");
Если Элемент.ТекущийЭлемент = Элементы.ТоварыДоступно И Не ТолькоПросмотр Тогда
СтандартнаяОбработка = Ложь;
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерий(Неопределено);
Если ПараметрыФормы <> Неопределено Тогда
ОткрытьФорму("Обработка.ЗапросКоличестваИСерий.Форма", ПараметрыФормы, ЭтотОбъект);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПроверитьХарактеристикуПоВладельцу", ТекущаяСтрока.Характеристика);
СтруктураДействий.Вставить("ПроверитьЗаполнитьУпаковкуПоВладельцу" , ТекущаяСтрока.Упаковка);
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", Объект.Склад, ПараметрыУказанияСерий.ТЧ));
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ВариантОбеспечения,ДоступноВДругихСтроках");
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
СтруктураДействий.Вставить("НоменклатураПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыХарактеристикаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ВариантОбеспечения,ДоступноВДругихСтроках");
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
ЭтаФорма.ИмяФормы, "Товары"));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыУпаковкаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыКоличествоУпаковокПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий);
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
РаботаСТабличнымиЧастямиКлиент.КэшироватьТекущуюСтроку(Элементы.Товары, ЭтотОбъект);
Если НоваяСтрока Тогда
Элементы.Товары.ТекущиеДанные.КодСтроки = 0;
КонецЕсли;
Если Копирование Тогда
СтруктураДействий = Новый Структура;
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ВариантОбеспечения,Доступно");
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", Объект.Склад, ПараметрыУказанияСерий.ТЧ));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(Элементы.Товары.ТекущиеДанные, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОткрытьПодборСерий(Элемент.ТекстРедактирования);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыСерияПриИзменении(Элемент)
ВыбранноеЗначение = НоменклатураКлиентСервер.ВыбраннаяСерия();
ВыбранноеЗначение.Значение = Элементы.Товары.ТекущиеДанные.Серия;
ВыбранноеЗначение.ИдентификаторТекущейСтроки = Элементы.Товары.ТекущиеДанные.ПолучитьИдентификатор();
НоменклатураКлиент.ОбработатьУказаниеСерии(ЭтаФорма, ПараметрыУказанияСерий.ТЧ, ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВариантОбеспеченияПриИзменении(Элемент)
Перем ПараметрыФормы;
Если ОбеспечениеВДокументахКлиент.ОткрытьФормуВыбораСкладаИСерий(ЭтотОбъект) Тогда
ВариантПолученияПараметров = ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия();
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерий(ВариантПолученияПараметров);
КонецЕсли;
ОбеспечениеВДокументахКлиент.ВариантОбеспеченияПриИзменении(
ЭтотОбъект,
ПараметрыФормы,
"ОбработатьВыборСкладаИСерии",
Ложь,
"ТоварыВариантОбеспеченияПриИзмененииНаКлиенте");
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВариантОбеспеченияОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыОтмененоПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура;
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках");
СтруктураДействий.Вставить("ПроверитьСериюРассчитатьСтатус", Новый Структура("Склад, ПараметрыУказанияСерий", Объект.Склад, ПараметрыУказанияСерий.ТЧ));
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
РассчитатьИтоговыеПоказателиЗаказа();
КонецПроцедуры
&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СборкаТоваров") Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыВариантОбеспеченияОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ОбеспечениеВДокументахКлиент.ВариантОбеспеченияОбработкаВыбора(
ЭтотОбъект,
Элементы.Товары.ТекущиеДанные,
ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура ТоварыОбособленноПриИзменении(Элемент)
СтрокаТаблицы = Элементы.Товары.ТекущиеДанные;
ОбеспечениеВДокументахКлиент.ОбособленноПриИзменении(СтрокаТаблицы);
СтруктураДействий = Новый Структура();
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(СтрокаТаблицы, СтруктураДействий, Неопределено);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ТоварыНазначениеПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
СтруктураДействий = Новый Структура();
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, "ДоступноВДругихСтроках");
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если ОбеспечениеВДокументахКлиент.ТребуетсяОбновитьКолонкуДоступно(СтруктураДействий) Тогда
ОбновитьКолонкуДоступноСервер();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
ОчиститьСообщения();
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ЗаказНаСборку.ФормаДокумента.Команда.ЗагрузитьДанныеИзТСД");
МенеджерОборудованияКлиент.НачатьЗагрузкуДанныеИзТСД(
Новый ОписаниеОповещения("ЗагрузитьИзТСДЗавершение", ЭтотОбъект),
УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзТСДЗавершение(Результат, Параметры) Экспорт
Если Результат.Результат Тогда
ОбработатьШтрихкоды(Результат.ТаблицаТоваров);
Иначе
МенеджерОборудованияУТКлиент.СообщитьОбОшибке(Результат);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьДокумент(Команда)
ОбщегоНазначенияУТКлиент.Записать(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьКомплектующими(Команда)
ОчиститьСообщения();
Если Не ЗначениеЗаполнено(Объект.ВариантКомплектации) Тогда
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Не указано поле ""Комплектация""'"),,
"ВариантКомплектации",
"Объект");
Возврат;
КонецЕсли;
ЗаполнитьТоварыПоВариантуКомплектации();
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьТовары(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ЗаказНаСборку.ФормаДокумента.Команда.ПодобратьТовары");
Отказ = Ложь;
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Склад", Объект.Склад);
ПараметрыФормы.Вставить("РежимПодбораБезСуммовыхПараметров", Истина);
ПараметрыФормы.Вставить("ОтборПоТипуНоменклатуры", Новый ФиксированныйМассив(НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь)));
ПараметрыФормы.Вставить("СкрыватьКолонкуВидЦены", Истина);
ПараметрыФормы.Вставить("ИспользоватьДатыОтгрузки", Истина);
ПараметрыФормы.Вставить("СкрыватьКомандуЦеныНоменклатуры", Истина);
ПараметрыФормы.Вставить("Заголовок", НСтр("ru = 'Подбор товаров'"));
ПараметрыФормы.Вставить("Дата", Объект.Дата);
ПараметрыФормы.Вставить("Документ", Объект.Ссылка);
ПараметрыФормы.Вставить("ПараметрыУказанияСерий", ПараметрыУказанияСерий.ТЧ);
ПараметрыФормы.Вставить("Назначение", Объект.НазначениеТовары);
ПараметрыФормы.Вставить("Подразделение", Объект.Подразделение);
ПараметрыФормы.Вставить("ПодборВариантовОбеспечения", Истина);
ПараметрыФормы.Вставить("ДоступныеОстаткиПараметрыДокумента", Неопределено);
ОткрытьФорму("Обработка.ПодборТоваровВДокументПродажи.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуВыполнить(Команда)
ОчиститьСообщения();
Оповещение = Новый ОписаниеОповещения("ПоискПоШтрихкодуЗавершение", ЭтотОбъект);
ШтрихкодированиеНоменклатурыКлиент.ПоказатьВводШтрихкода(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПоискПоШтрихкодуЗавершение(ДанныхШтрихкода, ДополнительныеПараметры) Экспорт
ОбработатьШтрихкоды(ДанныхШтрихкода);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиДокумент(Команда)
ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
ОбщегоНазначенияУТКлиент.ПровестиИЗакрыть(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтроку(Команда)
ТаблицаФормы = Элементы.Товары;
ДанныеТаблицы = Объект.Товары;
Оповещение = Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект);
РаботаСТабличнымиЧастямиКлиент.РазбитьСтроку(ДанныеТаблицы, ТаблицаФормы, Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
Если НоваяСтрока <> Неопределено Тогда
НоваяСтрока.КодСтроки = 0;
СтруктураДействий = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
Если Объект.ХозяйственнаяОперация
= ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СборкаТоваров") Тогда
ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий,"ОбновитьКэшНоменклатура");
КонецЕсли;
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(НоваяСтрока, СтруктураДействий, КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УказатьСерииВШапке(Команда)
ОткрытьПодборСерийКомплекта();
КонецПроцедуры
&НаКлиенте
Процедура ВставитьСтроки(Команда)
КоличествоТоваровДоВставки = Объект.Товары.Количество();
ПолучитьСтрокиИзБуфераОбмена();
КоличествоВставленных = Объект.Товары.Количество()-КоличествоТоваровДоВставки;
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОВставкеСтрок(КоличествоВставленных);
КонецПроцедуры
&НаКлиенте
Процедура СкопироватьСтроки(Команда)
Если РаботаСТабличнымиЧастямиКлиент.ВыбранаСтрокаДляВыполненияКоманды(Элементы.Товары) Тогда
СкопироватьСтрокиНаСервере();
РаботаСТабличнымиЧастямиКлиент.ОповеститьПользователяОКопированииСтрок(Элементы.Товары.ВыделенныеСтроки.Количество());
КонецЕсли;
КонецПроцедуры
#Область Обеспечение
&НаКлиенте
Процедура СоздатьКорректировкуНазначенияРезервирование(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ЗаказНаСборку.ФормаДокумента.Команда.СоздатьКорректировкуНазначенияРезервирование");
ОбъектыОснований = Новый Массив();
ОбъектыОснований.Добавить(Объект.Ссылка);
ОписаниеКоманды = Новый Структура();
ОписаниеКоманды.Вставить("ОбъектыОснований", ОбъектыОснований);
Если Не Объект.Проведен Или Модифицированность Тогда
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Резервирование", Истина);
ДополнительныеПараметры.Вставить("ОписаниеКоманды", ОписаниеКоманды);
ТекстВопроса = НСтр("ru = 'Для резервирования под назначение необходимо предварительно провести документ. Выполнить проведение документа и продолжить?'");
ПоказатьВопрос(
Новый ОписаниеОповещения("СоздатьКорректировкуНазначенияЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ОписаниеКоманды.Вставить("Форма", ЭтотОбъект);
ОбеспечениеВДокументахКлиент.ОткрытьЗаполнениеКорректировкиНазначения(
Истина,
Объект.Ссылка,
ОписаниеКоманды);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СоздатьКорректировкуНазначенияСнятиеРезерва(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ЗаказНаСборку.ФормаДокумента.Команда.СоздатьКорректировкуНазначенияСнятиеРезерва");
ОбъектыОснований = Новый Массив();
ОбъектыОснований.Добавить(Объект.Ссылка);
ОписаниеКоманды = Новый Структура();
ОписаниеКоманды.Вставить("ОбъектыОснований", ОбъектыОснований);
Если Не Объект.Проведен Или Модифицированность Тогда
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("Резервирование", Ложь);
ДополнительныеПараметры.Вставить("ОписаниеКоманды", ОписаниеКоманды);
ТекстВопроса = НСтр("ru = 'Для снятия резерва под назначение необходимо предварительно провести документ. Выполнить проведение документа и продолжить?'");
ПоказатьВопрос(
Новый ОписаниеОповещения("СоздатьКорректировкуНазначенияЗавершение", ЭтотОбъект, ДополнительныеПараметры),
ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ОписаниеКоманды.Вставить("Форма", ЭтотОбъект);
ОбеспечениеВДокументахКлиент.ОткрытьЗаполнениеКорректировкиНазначения(
Ложь,
Объект.Ссылка,
ОписаниеКоманды);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказ(Команда)
Если Модифицированность Или Не Объект.Проведен Тогда
Ответ = Неопределено;
ПоказатьВопрос(Новый ОписаниеОповещения("ЗакрытьЗаказЗавершение", ЭтотОбъект),
НСтр("ru = 'Необходимо провести документ для выполнения операции. Провести документ?'"), РежимДиалогаВопрос.ДаНет);
Возврат;
КонецЕсли;
ЗакрытьЗаказФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказФрагмент()
СписокЗаказовКЗакрытию = Новый СписокЗначений;
СписокЗаказовКЗакрытию.Добавить(Объект.Ссылка);
СтруктураЗакрытия = Новый Структура;
СтруктураЗакрытия.Вставить("Заказы", СписокЗаказовКЗакрытию);
СтруктураЗакрытия.Вставить("ДокументИнициатор", Объект.Ссылка);
СтруктураЗакрытия.Вставить("ОтменитьНеотработанныеСтроки", Истина);
СтруктураЗакрытия.Вставить("ЗакрыватьЗаказы", Истина);
ОткрытьФорму("Обработка.ПомощникЗакрытияЗаказов.Форма.ФормаЗакрытия",
СтруктураЗакрытия, ЭтаФорма,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ЗакрытьЗаказЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Ответ = РезультатВопроса;
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
ИначеЕсли Не Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение)) Тогда
Возврат;
КонецЕсли;
ЗакрытьЗаказФрагмент();
КонецПроцедуры
&НаКлиенте
Процедура ВключитьОбособленноеОбеспечение(Команда)
ОбеспечениеУстановитьДействие("ФЛАГ_ОБОСОБЛЕННО");
КонецПроцедуры
&НаКлиенте
Процедура ВыключитьОбособленноеОбеспечение(Команда)
ОбеспечениеУстановитьДействие("ФЛАГ_НЕОБОСОБЛЕННО");
КонецПроцедуры
&НаКлиенте
Процедура КОбеспечению(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_КОБЕСПЕЧЕНИЮ");
КонецПроцедуры
&НаКлиенте
Процедура РезервироватьПоМереПоступления(Команда)
ОбеспечениеУстановитьДействие("ДЕЙСТВИЕ_РЕЗЕРВИРОВАТЬПОМЕРЕПОСТУПЛЕНИЯ");
КонецПроцедуры
&НаКлиенте
Процедура НеОбеспечивать(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_НЕОБЕСПЕЧИВАТЬ");
КонецПроцедуры
&НаКлиенте
Процедура Отгрузить(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_ОТГРУЗИТЬ");
КонецПроцедуры
&НаКлиенте
Процедура Резервировать(Команда)
ОбеспечениеУстановитьДействиеСВопросом("ДЕЙСТВИЕ_РЕЗЕРВИРОВАТЬ");
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтаФорма, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура СвойстваВыполнитьОтложеннуюИнициализацию()
УправлениеСвойствами.ЗаполнитьДополнительныеРеквизитыВФорме(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(ЭтаФорма);
ОбщегоНазначенияУТ.УстановитьУсловноеОформлениеПриоритета(ЭтотОбъект);
НоменклатураСервер.УстановитьУсловноеОформлениеХарактеристикНоменклатуры(ЭтаФорма);
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, "СерииВсегдаВТЧТовары");
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, Неопределено,
"Серия", "Объект.СтатусУказанияСерий", "ТипНоменклатуры");
НоменклатураСервер.УстановитьУсловноеОформлениеСерийНоменклатуры(ЭтаФорма, "СерииВсегдаВТЧТовары",
"Серия", "Объект.СтатусУказанияСерий", "ТипНоменклатуры");
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.КоличествоУпаковок.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.КоличествоОтменено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ОтборЭлемента.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
НоменклатураСервер.УстановитьУсловноеОформлениеНазначенияНоменклатуры(ЭтаФорма);
#Область Обеспечение
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Товары.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.Товары.Отменено");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
ОбеспечениеВДокументахСервер.УстановитьУсловноеОформлениеОбособленно(
УсловноеОформление,
Элементы.ТоварыОбособленно,
"Объект.Товары.ВариантОбеспечения",
"Объект.Товары.ТипНоменклатуры");
ДоступныеОстаткиПараметрыВстраиванияСтарые = ДоступныеОстаткиПараметрыВстраивания;
Операция = Новый Структура("ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.СборкаТоваров);
ДоступныеОстаткиПараметрыВстраивания = Документы.ЗаказНаСборку.ДоступныеОстаткиПараметрыВстраивания(Операция);
ОбеспечениеВДокументахСервер.ДоступныеОстаткиДобавитьОформлениеКолонкиДоступно(ЭтотОбъект);
Операция = Новый Структура("ХозяйственнаяОперация", Перечисления.ХозяйственныеОперации.РазборкаТоваров);
ДоступныеОстаткиПараметрыВстраивания = Документы.ЗаказНаСборку.ДоступныеОстаткиПараметрыВстраивания(Операция);
ОбеспечениеВДокументахСервер.ДоступныеОстаткиДобавитьОформлениеКолонкиДоступно(ЭтотОбъект);
ДоступныеОстаткиПараметрыВстраивания = ДоступныеОстаткиПараметрыВстраиванияСтарые;
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.НадписьУпаковка.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(
ДоступныеОстаткиПараметрыВстраивания.УсловноеОформление.ПутиКДанным.ПерераспределятьЗапасы);
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
#КонецОбласти
НаправленияДеятельностиСервер.УстановитьУсловноеОформлениеНаправленияДеятельности(ЭтаФорма);
КонецПроцедуры
#Область Обеспечение
&НаКлиенте
Процедура ТоварыВариантОбеспеченияПриИзмененииНаКлиенте(Результат, ДополнительныеПараметры) Экспорт
ТоварыВариантОбеспеченияПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ВариантОбеспеченияПриИзмененииНаКлиенте(Результат, ДополнительныеПараметры) Экспорт
ВариантОбеспеченияПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПроверитьВыполнениеЗаданияРаспределенияЗапасов()
Ошибка = Ложь;
Если ОбеспечениеВДокументахКлиент.НужноОбновитьДоступностьПослеЗаписи(ЭтотОбъект,
"Подключаемый_ПроверитьВыполнениеЗаданияРаспределенияЗапасов", Ошибка) Тогда
ОбеспечениеВДокументахКлиент.НастроитьГиперссылкиСостояниеОбеспеченияПослеЗаписи(ЭтотОбъект, Ошибка);
ОбновлятьКолонку = ОбеспечениеВДокументахКлиент.ОбновлятьКолонкуДоступноПослеРаспределенияЗапасов(ЭтотОбъект);
Если ОбновлятьКолонку Тогда
ОбновитьКолонкуДоступноПослеРаспределенияЗапасов();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьКолонкуДоступноПослеРаспределенияЗапасов()
ОбеспечениеВДокументахСервер.ОбновитьДоступностьПослеЗаписи(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Функция ПараметрыВыбораОбеспечения(Режим)
ПараметрыФормы = ОбеспечениеВДокументахСервер.ПараметрыВыбораОбеспечения(
ЭтотОбъект,
Элементы.Товары.ТекущаяСтрока,
Режим);
Возврат ПараметрыФормы;
КонецФункции
&НаКлиенте
Функция ПараметрыФормыЗапросаКоличестваИСерий(Режим)
ПараметрыПроверки = ОбеспечениеКлиентСервер.ИнициализироватьПараметрыПроверкиЗаполнения("Товары",
НСтр("ru = 'Комплектующие'"));
Если Не ОбеспечениеКлиент.ПроверитьЗаполнение(
Объект,
Объект.Товары,
Элементы.Товары.ТекущаяСтрока,
ПараметрыПроверки,
Объект.Склад,
Режим) Тогда
Возврат Неопределено;
КонецЕсли;
ПараметрыФормы = ПараметрыВыбораОбеспечения(Режим);
ПараметрыФормы.ПараметрыУказанияСерий = ПараметрыУказанияСерий.ТЧ;
Возврат ПараметрыФормы;
КонецФункции
&НаСервере
Функция ПараметрыВыбораОбеспеченияКомплекта(Режим)
ПараметрыФормы = ОбеспечениеВДокументахСервер.ПараметрыВыбораОбеспечения(
ЭтотОбъект,
Неопределено,
Режим);
Возврат ПараметрыФормы;
КонецФункции
&НаСервере
Процедура ТоварыВариантОбеспеченияПриИзмененииНаСервере()
Изменения = ОбеспечениеВДокументахСервер.ВариантОбеспеченияПриИзменении(
ЭтотОбъект,
Элементы.Товары.ТекущаяСтрока);
Режим = ОбеспечениеВДокументахКлиентСервер.РежимВыборДействияНепосредственно();
ПослеЗаполненияОбеспечения(Изменения, Режим, Неопределено);
КонецПроцедуры
&НаСервере
Процедура ВариантОбеспеченияПриИзмененииНаСервере()
СлужебныеПараметры = ДоступныеОстаткиПараметрыВстраивания.СлужебныеПараметры;
ВариантОбеспеченияВыбранноеЗначение = СлужебныеПараметры.ВариантОбеспеченияВыбранноеЗначение;
Объект.ВариантОбеспечения = ВариантОбеспеченияВыбранноеЗначение.ВариантОбеспечения;
Если ВариантОбеспеченияВыбранноеЗначение.РазбитьСтроку Тогда
Коэффициент = Доступно / Объект.КоличествоУпаковок;
Количество = Объект.Количество;
Объект.Количество = Количество * Коэффициент;
КонецЕсли;
ПослеЗаполненияОбеспеченияКомплекта();
КонецПроцедуры
&НаСервере
Функция ЗаполнитьОбеспечениеИзФормыСостоянияОбеспечения(КодДействия, АдресАналитик, ПараметрыЗаполнения)
Модифицированность = Истина;
Изменения = ОбеспечениеВДокументахСервер.ЗаполнитьОбеспечениеИзФормыСостоянияОбеспечения(
КодДействия,
АдресАналитик,
ЭтотОбъект);
Режим = ОбеспечениеВДокументахКлиентСервер.РежимСостоянияОбеспечения();
ПослеЗаполненияОбеспечения(Изменения, Режим, ПараметрыЗаполнения);
АдресТаблицыДвижений = АдресТаблицыДвиженийВХранилище();
Возврат АдресТаблицыДвижений;
КонецФункции
&НаСервере
Функция АдресТаблицыДвиженийВХранилище()
Возврат ОбеспечениеВДокументахСервер.АдресТаблицыДвиженийВХранилище(ЭтотОбъект);
КонецФункции
&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыДокументаДляДействийОбеспечения(Форма, ДатаОтгрузки)
ПараметрыДокумента = Новый Структура();
ПараметрыДокумента.Вставить("Форма", Форма);
ПараметрыДокумента.Вставить("Коллекция", Форма.Объект.Товары);
ПараметрыДокумента.Вставить("ВариантОбеспеченияИФлагОбособленно", Неопределено);
Возврат ПараметрыДокумента;
КонецФункции
&НаКлиенте
Процедура ГиперссылкаСостояниеОбеспеченияНажатиеОбщий()
ПараметрыФормы = ОбеспечениеВДокументахКлиент.ГиперссылкаСостояниеОбеспеченияНажатие(ЭтотОбъект);
Если ПараметрыФормы.КонтекстИспользования = "ТАБЛИЦА" Тогда
ПараметрыФормы.АдресТаблицыДвижений = АдресТаблицыДвиженийВХранилище();
КонецЕсли;
ОткрытьФорму("Обработка.СостояниеОбеспеченияЗаказов.Форма", ПараметрыФормы, ЭтотОбъект, УникальныйИдентификатор,,,,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьДействияОбеспеченияНаКлиенте(СтруктураДействий, ПоляСтрокой)
Если ЭтоСборкаТоваров Тогда
ПараметрыДокумента = ПараметрыДокументаДляДействийОбеспечения(ЭтотОбъект, Неопределено);
ОбеспечениеВДокументахКлиентСервер.ДобавитьДействияОбеспечения(СтруктураДействий, ПоляСтрокой, ПараметрыДокумента);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, Знач ПоляСтрокой, ДатаОтгрузки = Неопределено)
Если ЭтоСборкаТоваров Тогда
ПараметрыДокумента = ПараметрыДокументаДляДействийОбеспечения(ЭтотОбъект, ДатаОтгрузки);
ОбеспечениеВДокументахКлиентСервер.ДобавитьДействияОбеспечения(СтруктураДействий, ПоляСтрокой, ПараметрыДокумента);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьДействияОбеспеченияКомплектаНаКлиенте(СтруктураДействий, ПоляСтрокой)
ПараметрыДокумента = ПараметрыДокументаДляДействийОбеспечения(ЭтотОбъект, Неопределено);
ОбеспечениеВДокументахКлиентСервер.ДобавитьДействияОбеспечения(СтруктураДействий, ПоляСтрокой, ПараметрыДокумента);
КонецПроцедуры
&НаСервере
Процедура ДобавитьДействияОбеспеченияКомплектаНаСервере(СтруктураДействий, Знач ПоляСтрокой, ДатаОтгрузки = Неопределено)
ПараметрыДокумента = ПараметрыДокументаДляДействийОбеспечения(ЭтотОбъект, ДатаОтгрузки);
ОбеспечениеВДокументахКлиентСервер.ДобавитьДействияОбеспечения(СтруктураДействий, ПоляСтрокой, ПараметрыДокумента);
Если СтруктураДействий.Свойство("ЗаполнитьКолонкуДоступно") Тогда
СтруктураДействий.ЗаполнитьКолонкуДоступно.Вставить("ИдентификаторСтрокиПолученный", Неопределено);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ОбеспечениеУстановитьДействие(КодДействия)
Результат = ОбеспечениеВДокументахСервер.ОбеспечениеУстановитьДействиеСтруктураРезультата();
Если КодДействия = "ФЛАГ_ОБОСОБЛЕННО" Или КодДействия = "ФЛАГ_НЕОБОСОБЛЕННО" Тогда
Изменения = ОбеспечениеВДокументахСервер.УстановитьДействиеОбособленно(
КодДействия,
ЭтотОбъект,
Элементы.Товары.ВыделенныеСтроки);
ОбновитьКолонкуДоступноСервер();
Иначе
Изменения = ОбеспечениеВДокументахСервер.УстановитьДействие(
КодДействия,
ЭтотОбъект,
Элементы.Товары.ВыделенныеСтроки);
ЗаполнитьЗначенияСвойств(Результат, Изменения);
Если Изменения.ТаблицаИзменений <> Неопределено Тогда
ПослеЗаполненияОбеспечения(
Изменения.ТаблицаИзменений,
ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия(),
Результат);
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ОбеспечениеУстановитьДействиеСВопросом(КодДействия)
Результат = ОбеспечениеУстановитьДействие(КодДействия);
ОбеспечениеВДокументахКлиент.ПоказатьВопросЗаполнятьОбеспечениеЦелымиУпаковками(
ЭтотОбъект,
Объект.Товары,
Результат,
"ПослеВопросаЗаполнятьОбеспечениеЦелымиУпаковками");
КонецПроцедуры
&НаКлиенте
Процедура ПослеВопросаЗаполнятьОбеспечениеЦелымиУпаковками(Ответ, Результат) Экспорт
ОбеспечениеУстановитьДействиеПослеВопроса(Ответ, Результат);
КонецПроцедуры
&НаСервере
Процедура ОбеспечениеУстановитьДействиеПослеВопроса(Ответ, Результат)
СтруктураРезультата = ОбеспечениеВДокументахСервер.УстановитьДействиеПослеВопроса(Ответ, Результат, ЭтотОбъект);
ПослеЗаполненияОбеспечения(
СтруктураРезультата.ТаблицаИзменений,
ОбеспечениеВДокументахКлиентСервер.РежимВыборДействия(),
СтруктураРезультата);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииМодифицированностиФормы()
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.СборкаТоваров") Тогда
Если ФормаМодифицирована <> Модифицированность Тогда
ФормаМодифицирована = Модифицированность;
ОбеспечениеВДокументахКлиент.НастроитьГиперссылкиСостояниеОбеспечения(ЭтотОбъект);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаполненияОбеспечения(Изменения, Режим = Неопределено, ПараметрыЗаполнения = Неопределено)
Документы.ЗаказНаСборку.ПослеЗаполненияОбеспечения(Объект, Изменения, Режим, ПараметрыЗаполнения);
СтруктураДействий = Новый Структура();
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
КоллекцияНаФорме = ОбеспечениеВДокументахКлиентСервер.КоллекцияНаФорме(
ЭтотОбъект, ДоступныеОстаткиПараметрыВстраивания);
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого Изменение Из Изменения Цикл
ОбрабатываемыеСтроки.Добавить(Изменение.Строка);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
КоллекцияНаФорме,
КэшированныеЗначения);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаСервере
Процедура ОбновитьКолонкуДоступноСервер()
ОбеспечениеВДокументахСервер.ОбновитьКолонкуДоступно(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаполненияОбеспеченияКомплекта(Режим = Неопределено)
Документы.ЗаказНаСборку.ПослеЗаполненияОбеспечения(Объект, Неопределено, Режим, Неопределено);
ОбновитьКолонкуДоступноСервер();
УстановитьОформлениеЭлементаОбособленно();
УстановитьОформлениеЭлементаДоступно();
УстановитьДоступностьСерииВШапке();
КонецПроцедуры
&НаКлиенте
Функция ПараметрыФормыЗапросаКоличестваИСерийКомплекта(Режим)
ОшибкиПользователю = Неопределено;
ЕстьОшибки = Ложь;
Если Объект.Количество = 0 Тогда
Поле = "Объект.КоличествоУпаковок";
Текст = НСтр("ru = 'Поле ""Количество"" не заполнено'");
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(ОшибкиПользователю, Поле, Текст, "");
ЕстьОшибки = Истина;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Номенклатура) Тогда
Поле = "Объект.Номенклатура";
Текст = НСтр("ru = 'Поле ""Номенклатура"" не заполнено'");
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(ОшибкиПользователю, Поле, Текст, "");
ЕстьОшибки = Истина;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Характеристика) И ХарактеристикиИспользуются Тогда
Поле = "Объект.Характеристика";
Текст = НСтр("ru = 'Поле ""Характеристика"" не заполнено'");
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(ОшибкиПользователю, Поле, Текст, "");
ЕстьОшибки = Истина;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.Склад) Тогда
Поле = "Объект.Склад";
Текст = НСтр("ru = 'Поле ""Склад"" не заполнено'");
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(ОшибкиПользователю, Поле, Текст, "");
ЕстьОшибки = Истина;
КонецЕсли;
Если ЕстьОшибки Тогда
ОчиститьСообщения();
ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(ОшибкиПользователю);
Возврат Неопределено;
Иначе
ПараметрыФормы = ПараметрыВыбораОбеспеченияКомплекта(Режим);
КонецЕсли;
Если Объект.СтатусУказанияСерий = 10
Или Объект.СтатусУказанияСерий = 9
Или Объект.СтатусУказанияСерий = 11 Тогда
Серии = Новый Массив;
Для Каждого СтрокаСерии Из Объект.Серии Цикл
Если СтрокаСерии.Номенклатура = ПараметрыФормы.Номенклатура
И СтрокаСерии.Характеристика = ПараметрыФормы.Характеристика Тогда
Серия = Новый Структура("Серия, Количество", СтрокаСерии.Серия, СтрокаСерии.Количество);
Серии.Добавить(Серия);
КонецЕсли;
КонецЦикла;
ПараметрыФормы.Серия = Серии;
КонецЕсли;
ПараметрыФормы.ПараметрыУказанияСерий = ПараметрыУказанияСерий.Шапка;
ПараметрыФормы.РазбиватьСтрокиЗапрещено = Истина;
Возврат ПараметрыФормы;
КонецФункции
&НаКлиенте
Процедура ОбработатьВыборСкладаИСерии(ВыбранноеЗначение, ПараметрыФормы) Экспорт
Если Не ОбеспечениеВДокументахКлиент.ЕстьПодобранныеТовары(ВыбранноеЗначение) Тогда
Возврат;
КонецЕсли;
Оповещение = ОбработатьВыборСкладаИСерииНаСервере(ВыбранноеЗначение, ПараметрыФормы);
ТекстОповещения = ОбеспечениеВДокументахКлиент.ТекстОповещенияОбработкиВыборСкладаИСерии(ПараметрыФормы.Режим);
ПоказатьОповещениеПользователя(ТекстОповещения, , Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьВыборСкладаИСерииКомплекта(ВыбранноеЗначение, ПараметрыФормы) Экспорт
Если Не ОбеспечениеВДокументахКлиент.ЕстьПодобранныеТовары(ВыбранноеЗначение) Тогда
Возврат;
КонецЕсли;
Оповещение = ОбработатьВыборСкладаИСерииНаСервереКомплекта(ВыбранноеЗначение, ПараметрыФормы);
ТекстОповещения = ОбеспечениеВДокументахКлиент.ТекстОповещенияОбработкиВыборСкладаИСерии(ПараметрыФормы.Режим);
ПоказатьОповещениеПользователя(ТекстОповещения, , Оповещение);
КонецПроцедуры
&НаСервере
Функция ОбработатьВыборСкладаИСерииНаСервере(ВыбранноеЗначение, ПараметрыФормы)
Модифицированность = Истина;
Изменения = ОбеспечениеВДокументахСервер.ПриВыбореСклада(
ВыбранноеЗначение,
ЭтотОбъект,
Элементы.Товары.ТекущаяСтрока,
ПараметрыФормы.ЗаполняемыеПоля);
ПослеЗаполненияОбеспечения(Изменения, ПараметрыФормы.Режим);
ТекстОбработаноСтрок = ОбеспечениеВДокументахСервер.ТекстОбработаноСтрок(Изменения.Количество());
Возврат ТекстОбработаноСтрок;
КонецФункции
&НаСервере
Функция ОбработатьВыборСкладаИСерииНаСервереКомплекта(ВыбранноеЗначение, ПараметрыФормы)
Модифицированность = Истина;
Если Документы.ЗаказНаСборку.СерииУказываютсяВОтдельнойТабличнойЧасти(Объект) Тогда
ПараметрыОтбора = Новый Структура("Номенклатура, Характеристика", Объект.Номенклатура, Объект.Характеристика);
НайденныеСтроки = Объект.Серии.НайтиСтроки(ПараметрыОтбора);
Для Каждого НайденнаяСтрока Из НайденныеСтроки Цикл
Объект.Серии.Удалить(НайденнаяСтрока);
КонецЦикла;
Объект.Количество = 0;
Для Каждого Строка Из ВыбранноеЗначение.ПодобранныеТовары Цикл
Объект.Количество = Объект.Количество + Строка.Количество;
Если (Строка.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.Отгрузить
Или Строка.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.СоСклада)
И ЗначениеЗаполнено(Строка.Серия) Тогда
СтрокаСерии = Объект.Серии.Добавить();
СтрокаСерии.Номенклатура = Объект.Номенклатура;
СтрокаСерии.Характеристика = Объект.Характеристика;
СтрокаСерии.Серия = Строка.Серия;
СтрокаСерии.Количество = Строка.Количество;
Если Строка.Обособленно Тогда
СтрокаСерии.Назначение = Объект.Назначение;
Иначе
СтрокаСерии.Назначение = Справочники.Назначения.ПустаяСсылка();
КонецЕсли;
КонецЕсли;
КонецЦикла;
Иначе
Объект.Количество = ВыбранноеЗначение.ПодобранныеТовары[0].Количество;
Объект.Серия = ВыбранноеЗначение.ПодобранныеТовары[0].Серия;
КонецЕсли;
Объект.ВариантОбеспечения = ВыбранноеЗначение.ПодобранныеТовары[0].ВариантОбеспечения;
ПослеЗаполненияОбеспеченияКомплекта(ПараметрыФормы.Режим);
КонецФункции
&НаСервере
Процедура ВыполнитьДействияОбеспеченияКомплектаНаСервере(Поля)
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров Тогда
Действия = Новый Структура();
ДобавитьДействияОбеспеченияКомплектаНаСервере(Действия, Поля);
ПоляОбъекта = "Количество,Номенклатура,Характеристика,ВариантОбеспечения,Обособленно,Подразделение,
|Склад,Назначение,Статус,НачалоСборкиРазборки,ХозяйственнаяОперация,КоличествоУпаковок,Упаковка,Серия,Дата,Приоритет";
ПоляОбъектаИСсылка = ПоляОбъекта + ",Ссылка";
ПоляФормы = "Доступно,ПерераспределятьЗапасы,ОтгружатьЕслиДоступно,ПерераспределятьЗапасы";
ПоляФикции = "НомерСтроки";
Шапка = Новый Структура(ПоляОбъектаИСсылка + "," + ПоляФормы + "," + ПоляФикции);
Шапка.Вставить("ТипНоменклатуры", ТипНоменклатуры);
ЗаполнитьЗначенияСвойств(Шапка, Объект, ПоляОбъектаИСсылка);
ЗаполнитьЗначенияСвойств(Шапка, ЭтотОбъект, ПоляФормы);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(Шапка, Действия, Неопределено);
ЗаполнитьЗначенияСвойств(Объект, Шапка, ПоляОбъекта);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Шапка, ПоляФормы);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьДействияОбеспеченияКомплектаНаКлиенте(Поля)
Если Объект.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РазборкаТоваров") Тогда
Действия = Новый Структура();
ДобавитьДействияОбеспеченияКомплектаНаКлиенте(Действия, Поля);
ПоляОбъекта = "Количество,Номенклатура,Характеристика,ВариантОбеспечения,Обособленно,Подразделение,
|Склад,Назначение,Статус,НачалоСборкиРазборки,ХозяйственнаяОперация,КоличествоУпаковок,Упаковка,Серия,Дата,Приоритет";
ПоляОбъектаИСсылка = ПоляОбъекта + ",Ссылка";
ПоляФормы = "Доступно,ПерераспределятьЗапасы,ОтгружатьЕслиДоступно,ПерераспределятьЗапасы";
ПоляФикции = "НомерСтроки";
Шапка = Новый Структура(ПоляОбъектаИСсылка + "," + ПоляФормы + "," + ПоляФикции);
Шапка.Вставить("ТипНоменклатуры", ТипНоменклатуры);
ЗаполнитьЗначенияСвойств(Шапка, Объект, ПоляОбъектаИСсылка);
ЗаполнитьЗначенияСвойств(Шапка, ЭтотОбъект, ПоляФормы);
ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(Шапка, Действия, Неопределено);
ЗаполнитьЗначенияСвойств(Объект, Шапка, ПоляОбъекта);
ЗаполнитьЗначенияСвойств(ЭтотОбъект, Шапка, ПоляФормы);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ПриИзмененииРеквизитов
&НаСервере
Процедура СкладПриИзмененииСервер()
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
ПодготовитьЗаполнитьУстановитьВидимостьСерий();
АктуализироватьСборкуПодДеятельность();
КонецПроцедуры
&НаСервере
Процедура ХозяйственнаяОперацияПриИзмененииСервер()
ЭтоСборкаТоваров = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров;
ДоступныеОстаткиПараметрыВстраивания = Неопределено;
ПараметрыВстраивания = Документы.ЗаказНаСборку.ДоступныеОстаткиПараметрыВстраивания(Объект);
ОбеспечениеВДокументахСервер.ДоступныеОстаткиПриСозданииНаСервере(ЭтотОбъект, ПараметрыВстраивания);
УстановитьСвойстваЭлементовФормыХозяйственнаяОперация();
Объект.Назначение = Неопределено;
Объект.НаправлениеДеятельности = Справочники.НаправленияДеятельности.ПустаяСсылка();
НаправлениеДеятельностиПриИзмененииСервер();
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ЗаказНаСборку));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий.ТЧ);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий.Шапка);
НастроитьЭлементыСерий();
Если ЭтоСборкаТоваров Тогда
СтруктураДействий = Новый Структура();
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "ВариантОбеспечения");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
СтрокиТаблицы = Объект.Товары.НайтиСтроки(
Новый Структура("ВариантОбеспечения", Перечисления.ВариантыОбеспечения.ПустаяСсылка()));
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
СтрокиТаблицы,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура НоменклатураПриИзмененииСервер(КэшЗначений)
ТипНоменклатуры = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Номенклатура, "ТипНоменклатуры");
Действия = Новый Структура("
|ПроверитьХарактеристикуПоВладельцу, ПересчитатьКоличествоЕдиниц, ПроверитьЗаполнитьВариантКомплектацииПоВладельцу,
|ПроверитьЗаполнитьУпаковкуПоВладельцу");
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, Действия);
Действия.ПроверитьХарактеристикуПоВладельцу = Объект.Характеристика;
Действия.ПроверитьЗаполнитьВариантКомплектацииПоВладельцу = Объект.ВариантКомплектации;
Действия.ПроверитьЗаполнитьУпаковкуПоВладельцу = Объект.Упаковка;
Шапка = Новый Структура("
|Номенклатура, Характеристика, Назначение, ВариантКомплектации, ВариантОбеспечения, Упаковка, ТипНоменклатуры,
|Количество, КоличествоУпаковок, ХарактеристикиИспользуются");
ЗаполнитьЗначенияСвойств(Шапка, Объект);
Шапка.ХарактеристикиИспользуются = ХарактеристикиИспользуются;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(Шапка, Действия, КэшЗначений);
ЗаполнитьЗначенияСвойств(Объект, Шапка);
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.РазборкаТоваров Тогда
ВыполнитьДействияОбеспеченияКомплектаНаСервере("ВариантОбеспечения,Доступно");
КонецЕсли;
ВариантКомплектацииПриИзмененииНаСервере();
ХарактеристикиИспользуются = Шапка.ХарактеристикиИспользуются;
Элементы.Характеристика.Доступность = ХарактеристикиИспользуются;
Справочники.УпаковкиЕдиницыИзмерения.ОтобразитьИнформациюОЕдиницеХранения(Объект.Номенклатура, Элементы.Упаковка);
НадписьУпаковка = ?(ЗначениеЗаполнено(Объект.Упаковка), Объект.Упаковка, Элементы.Упаковка.ПодсказкаВвода);
УстановитьДоступностьНазначенияВШапке();
Если ПараметрыУказанияСерий.Шапка.ИспользоватьСерииНоменклатуры Тогда
ЗаполнитьСтатусыУказанияСерийПриИзмененииТовараВШапке(КэшЗначений);
КонецЕсли;
УстановитьОформлениеЭлементаОбособленно();
УстановитьОформлениеЭлементаДоступно();
КонецПроцедуры
&НаСервере
Процедура ХарактеристикаПриИзмененииСервер()
ВариантКомплектацииПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура НазначениеПриИзмененииСервер()
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
#Область ПодборыИОбработкаПроверкиКоличества
&НаКлиенте
Процедура ОбработкаВыбораПодборНаКлиенте(ВыбранноеЗначение)
Если Не ЗначениеЗаполнено(ВыбранноеЗначение) Тогда
Возврат;
КонецЕсли;
ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение);
КонецПроцедуры
&НаСервере
Процедура ОбработкаВыбораПодборНаСервере(ВыбранноеЗначение)
ТаблицаТоваров = ПолучитьИзВременногоХранилища(ВыбранноеЗначение.АдресТоваровВХранилище);
Изменения = Новый Массив(ТаблицаТоваров.Количество());
Для Индекс = 0 По ТаблицаТоваров.Количество() - 1 Цикл
СтрокаТовара = ТаблицаТоваров[Индекс];
ТекущаяСтрока = Объект.Товары.Добавить();
Изменения[Индекс] = ТекущаяСтрока;
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара,
"Номенклатура,Характеристика,ХарактеристикиИспользуются,Упаковка,КоличествоУпаковок,ВариантОбеспечения,
|Обособленно,Серия");
КонецЦикла;
СтруктураДействий = Новый Структура();
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий);
СтруктураДействий.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействий.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
НазначенияКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтотОбъект, СтруктураДействий, Истина);
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "ВариантОбеспечения");
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
Изменения,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
Документы.ЗаказНаСборку.ЗаполнитьНачалоОкончаниеСборкиПриУстановкеОтгрузитьИлиРезервировать(Объект, Изменения);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий.ТЧ);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий)
СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
КонецПроцедуры
#КонецОбласти
#Область ШтрихкодыИТорговоеОборудование
&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкодов)
СтруктураДействийСДобавленнымиСтроками = Новый Структура;
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакТипНоменклатуры", Новый Структура("Номенклатура", "ТипНоменклатуры"));
СтруктураДействийСДобавленнымиСтроками.Вставить("ЗаполнитьПризнакАртикул", Новый Структура("Номенклатура", "Артикул"));
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействийСДобавленнымиСтроками);
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСДобавленнымиСтроками);
СтруктураДействийСИзмененнымиСтроками = Новый Структура;
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействийСИзмененнымиСтроками);
СтруктураДействий = ШтрихкодированиеНоменклатурыКлиент.ПараметрыОбработкиШтрихкодов();
СтруктураДействий.Штрихкоды = ДанныеШтрихкодов;
СтруктураДействий.СтруктураДействийСДобавленнымиСтроками = СтруктураДействийСДобавленнымиСтроками;
СтруктураДействий.СтруктураДействийСИзмененнымиСтроками = СтруктураДействийСИзмененнымиСтроками;
СтруктураДействий.ПараметрыУказанияСерий = ПараметрыУказанияСерий.ТЧ;
СтруктураДействий.ТолькоТовары = Истина;
СтруктураДействий.ДополнятьТарой = Ложь;
ОбработатьШтрихкодыСервер(СтруктураДействий, КэшированныеЗначения);
ШтрихкодированиеНоменклатурыКлиент.ОбработатьНеизвестныеШтрихкоды(СтруктураДействий,КэшированныеЗначения,ЭтаФорма);
Если ШтрихкодированиеНоменклатурыКлиент.НужноОткрытьФормуУказанияСерийПослеОбработкиШтрихкодов(СтруктураДействий) Тогда
ТекущиеДанныеИдентификатор = СтруктураДействий.МассивСтрокССериями[0];
ПодключитьОбработчикОжидания("ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры",0.1,Истина);
КонецЕсли;
Если СтруктураДействий.ТекущаяСтрока <> Неопределено Тогда
Элементы.Товары.ТекущаяСтрока = СтруктураДействий.ТекущаяСтрока;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьШтрихкодыСервер(СтруктураПараметровДействия, КэшированныеЗначения)
ДобавитьДействияОбеспеченияНаСервере(
СтруктураПараметровДействия.СтруктураДействийСДобавленнымиСтроками,
"ВариантОбеспечения");
ШтрихкодированиеНоменклатурыСервер.ОбработатьШтрихкоды(ЭтаФорма,Объект,СтруктураПараметровДействия,КэшированныеЗначения);
ОбеспечениеВДокументахКлиентСервер.УдалитьДействияОбеспечения(СтруктураПараметровДействия.СтруктураДействийСДобавленнымиСтроками);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
#КонецОбласти
#Область Серии
&НаСервере
Процедура НастроитьЭлементыСерий()
Элементы.ТоварыСерия.Видимость = ПараметрыУказанияСерий.ТЧ.ИспользоватьСерииНоменклатуры;
Элементы.УказатьСерииВШапке.Видимость = ПараметрыУказанияСерий.Шапка.ИспользоватьСерииНоменклатуры;
Элементы.СтатусУказанияСерий.Видимость = ПараметрыУказанияСерий.Шапка.ИспользоватьСерииНоменклатуры;
Элементы.Серия.Видимость = ПараметрыУказанияСерий.Шапка.ИспользоватьСерииНоменклатуры;
УстановитьДоступностьСерииВШапке();
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьСерииВШапке()
Если Объект.СтатусУказанияСерий > 12 Тогда
Элементы.Серия.Доступность = Истина;
Иначе
Элементы.Серия.Доступность = Ложь;
КонецЕсли;
Элементы.УказатьСерииВШапке.Доступность =
Объект.СтатусУказанияСерий > 0
И Объект.СтатусУказанияСерий < 13;
КонецПроцедуры
&НаСервере
Процедура ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий, ТоварВШапке)
Если ТоварВШапке Тогда
НоменклатураСервер.ОбработатьУказаниеСерий(Объект,ПараметрыУказанияСерий.Шапка,ПараметрыФормыУказанияСерий);
Иначе
НоменклатураСервер.ОбработатьУказаниеСерий(Объект,ПараметрыУказанияСерий.ТЧ,ПараметрыФормыУказанияСерий);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСтатусыУказанияСерийПриИзмененииТовараВШапке(КэшированныеЗначения)
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерийПриИзмененииТовараВШапке(Объект,
ПараметрыУказанияСерий.Шапка, КэшированныеЗначения);
УстановитьДоступностьСерииВШапке();
КонецПроцедуры
&НаСервере
Процедура ПодготовитьЗаполнитьУстановитьВидимостьСерий()
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ЗаказНаСборку));
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий.ТЧ);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий.Шапка);
НастроитьЭлементыСерий();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийПриСканированииШтрихкодаНоменклатуры()
Если ТекущиеДанныеИдентификатор = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(ТекущиеДанныеИдентификатор);
ОткрытьПодборСерий(, ТекущиеДанные);
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерий(Текст = "", ТекущиеДанные = Неопределено)
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерий(ОбеспечениеВДокументахКлиентСервер.РежимПодборСерий());
Если ПараметрыФормы <> Неопределено Тогда
ОткрытьФорму(
"Обработка.ЗапросКоличестваИСерий.Форма",
ПараметрыФормы,
ЭтотОбъект,
,
,
,
Новый ОписаниеОповещения("ОбработатьВыборСкладаИСерии", ЭтотОбъект, ПараметрыФормы));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийЗавершение(Результат, ДополнительныеПараметры) Экспорт
ПараметрыФормыУказанияСерий = ДополнительныеПараметры.ПараметрыФормыУказанияСерий;
ТоварВШапке = ДополнительныеПараметры.ТоварВШапке;
ЗначениеВозврата = Результат;
Если ЗначениеВозврата <> Неопределено Тогда
ОбработатьУказаниеСерийСервер(ПараметрыФормыУказанияСерий, ТоварВШапке);
КонецЕсли;
Если ТоварВШапке Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияШапкиДляУчетаСерий(Объект,КэшированныеЗначения,ПараметрыУказанияСерий.Шапка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьПодборСерийКомплекта(Текст = "")
ПараметрыФормы = ПараметрыФормыЗапросаКоличестваИСерийКомплекта(ОбеспечениеВДокументахКлиентСервер.РежимПодборСерий());
Если ПараметрыФормы <> Неопределено Тогда
ОткрытьФорму(
"Обработка.ЗапросКоличестваИСерий.Форма",
ПараметрыФормы,
ЭтотОбъект,
,
,
,
Новый ОписаниеОповещения("ОбработатьВыборСкладаИСерииКомплекта", ЭтотОбъект, ПараметрыФормы));
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область РаботаСБуферомОбмена
&НаСервере
Процедура СкопироватьСтрокиНаСервере()
РаботаСТабличнымиЧастями.СкопироватьСтрокиВБуферОбмена(Объект.Товары, Элементы.Товары.ВыделенныеСтроки);
КонецПроцедуры
&НаСервере
Процедура ПолучитьСтрокиИзБуфераОбмена()
ПараметрыОтбора = Новый Соответствие;
ПараметрыОтбора.Вставить("Номенклатура.ТипНоменклатуры", НоменклатураКлиентСервер.ОтборПоТоваруМногооборотнойТаре(Ложь));
Колонки = "Номенклатура,Характеристика,Упаковка,КоличествоУпаковок";
ТаблицаТоваров = РаботаСТабличнымиЧастями.СтрокиИзБуфераОбмена(ПараметрыОтбора, Колонки);
Если Не ЗначениеЗаполнено(ТаблицаТоваров) Тогда
Возврат;
КонецЕсли;
СтруктураДействий = Новый Структура;
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "ВариантОбеспечения");
ДобавитьВСтруктуруДействияПриИзмененииКоличестваУпаковок(СтруктураДействий);
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
ТекущаяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаТовара);
ОбрабатываемыеСтроки.Добавить(ТекущаяСтрока);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий.ТЧ);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьКомандБуфераОбмена()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность",
РаботаСТабличнымиЧастями.ЕстьСтрокиВБуфереОбмена());
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьКомандБуфераОбменаНаКлиенте()
МассивЭлементов = Новый Массив();
МассивЭлементов.Добавить("ТоварыВставитьСтроки");
МассивЭлементов.Добавить("ТоварыКонтекстноеМенюВставитьСтроки");
ОбщегоНазначенияУТКлиентСервер.УстановитьСвойствоЭлементовФормы(Элементы, МассивЭлементов, "Доступность", Истина);
КонецПроцедуры
#КонецОбласти
#Область Прочее
&НаСервере
Процедура НаправлениеДеятельностиПриИзмененииСервер()
Если Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров Тогда
Если ЗначениеЗаполнено(Объект.НаправлениеДеятельности) Тогда
Объект.Назначение = Справочники.Назначения.ПустаяСсылка();
КонецЕсли;
ШаблонНазначения = Документы.ЗаказНаСборку.ШаблонНазначения(Объект);
Если ЗначениеЗаполнено(Объект.Ссылка) Или ШаблонНазначения.Заказ = Неопределено Тогда
Объект.НазначениеТовары = Справочники.Назначения.НайтиПоШаблону(ШаблонНазначения);
Иначе
Объект.НазначениеТовары = Неопределено;
КонецЕсли;
Иначе
НаправленияДеятельностиСервер.ПриИзмененииНаправленияДеятельности(ЭтотОбъект);
КонецЕсли;
Объект.ОбосабливатьПоНазначениюЗаказа = Константы.ВариантОбособленияТоваровВСборке.Получить()
<> Перечисления.ВариантыОбособленияТоваровВСборке.НазначениеСобираемогоКомплекта;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.ТЧ);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.Шапка);
АктуализироватьСборкуПодДеятельность();
ОбеспечениеВДокументахСервер.ПриИзмененииРеквизитаДокумента(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьГруппыДополнительно()
Элементы.ГруппаДополнительно.Видимость =
ПолучитьФункциональнуюОпцию("ОтветственныйВДокументах")
Или ПолучитьФункциональнуюОпцию("ИспользоватьПодразделения")
Или ПолучитьФункциональнуюОпцию("ИспользоватьСделкиСКлиентами");
КонецПроцедуры
&НаСервере
Процедура УстановитьДоступностьНазначенияВШапке()
ТипНомеклатуры = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Номенклатура,"ТипНоменклатуры");
Если ТипНомеклатуры = Перечисления.ТипыНоменклатуры.Товар Тогда
Элементы.Назначение.Доступность = Истина;
Элементы.Назначение.ПодсказкаВвода = НСтр("ru = '<без назначения>'");
Иначе
Элементы.Назначение.Доступность = Ложь;
Элементы.Назначение.ПодсказкаВвода = НСтр("ru = '<для товаров>'");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере()
Если Не ПравоДоступа("Добавление", Метаданные.Документы.КорректировкаНазначенияТоваров)
Или Не ПолучитьФункциональнуюОпцию("ИспользоватьОбособленноеОбеспечениеЗаказов") Тогда
Элементы.ТоварыСоздатьКорректировкуНазначенияСнятиеРезерва.Видимость = Ложь;
Элементы.ТоварыСоздатьКорректировкуНазначенияРезервирование.Видимость = Ложь;
КонецЕсли;
ПараметрыУказанияСерий = Новый ФиксированнаяСтруктура(НоменклатураСервер.ПараметрыУказанияСерий(Объект, Документы.ЗаказНаСборку));
ТипНоменклатуры = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.Номенклатура, "ТипНоменклатуры");
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ХарактеристикиИспользуются = Справочники.Номенклатура.ХарактеристикиИспользуются(Объект.Номенклатура);
Элементы.Характеристика.Доступность = ХарактеристикиИспользуются;
Справочники.УпаковкиЕдиницыИзмерения.ОтобразитьИнформациюОЕдиницеХранения(Объект.Номенклатура, Элементы.Упаковка);
АктуализироватьСборкуПодДеятельность(Ложь);
УстановитьВидимостьГруппыДополнительно();
УстановитьДоступностьНазначенияВШапке();
НастроитьЭлементыСерий();
Элементы.ДокументОснование.Видимость = ЗначениеЗаполнено(Объект.ДокументОснование);
Элементы.ВариантОбеспечения.Доступность = Не ЕстьРазборкаПоЗаказу();
Элементы.ГруппаОтмена.Видимость = Объект.КоличествоОтменено > 0;
НаправленияДеятельностиСервер.ПриЧтенииСозданииНаСервере(ЭтотОбъект);
УстановитьСвойстваЭлементовФормыХозяйственнаяОперация();
НадписьУпаковка = ?(ЗначениеЗаполнено(Объект.Упаковка), Объект.Упаковка, Элементы.Упаковка.ПодсказкаВвода);
РаботаСТабличнымиЧастями.ИнициализироватьКэшСтрок(Элементы.Товары);
ЭтоСборкаТоваров = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьСлужебныеРеквизитыПоНоменклатуре()
ПараметрыЗаполненияРеквизитов = Новый Структура;
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакХарактеристикиИспользуются",
Новый Структура("Номенклатура", "ХарактеристикиИспользуются"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакТипНоменклатуры",
Новый Структура("Номенклатура", "ТипНоменклатуры"));
ПараметрыЗаполненияРеквизитов.Вставить("ЗаполнитьПризнакАртикул",
Новый Структура("Номенклатура", "Артикул"));
НоменклатураСервер.ЗаполнитьСлужебныеРеквизитыПоНоменклатуреВКоллекции(Объект.Товары,ПараметрыЗаполненияРеквизитов);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьТоварыПоВариантуКомплектации()
Если Объект.Ссылка.Пустая() Или Не Документы.ЗаказНаСборку.ЕстьСборкаПоЗаказу(Объект.Ссылка) Тогда
ОбновитьПризнакИспользованияХарактеристик = Истина;
Объект.Товары.Загрузить(Справочники.ВариантыКомплектацииНоменклатуры.ПолучитьКомплектующиеНоменклатуры(
Объект.ВариантКомплектации, , Объект.Количество));
Иначе
ОбновитьПризнакИспользованияХарактеристик = Ложь;
Справочники.ВариантыКомплектацииНоменклатуры.ОбновитьКоличествоКомплектующихПоКоличествуКомплектов(
Объект.Товары, Объект.Количество, Объект.ВариантКомплектации);
КонецЕсли;
СтруктураДействий = Новый Структура();
ДобавитьДействияОбеспеченияНаСервере(СтруктураДействий, "ВариантОбеспечения");
НаправленияДеятельностиКлиентСервер.СтруктураДействийВставитьПриДобавленииСтроки(ЭтаФорма, СтруктураДействий);
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьТЧ(Объект.Товары, СтруктураДействий, Неопределено);
ОбновитьКолонкуДоступноСервер();
Если ОбновитьПризнакИспользованияХарактеристик Тогда
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
КонецЕсли;
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект, ПараметрыУказанияСерий.ТЧ);
КонецПроцедуры
&НаКлиенте
Процедура ОповеститьОПроведенииДокумента(ПараметрыЗаписи)
ПараметрыОповещения = Новый Структура;
ПараметрыОповещения.Вставить("РежимЗаписи", ПараметрыЗаписи.РежимЗаписи);
ПараметрыОповещения.Вставить("ЕстьРаспоряжение", Истина);
Оповестить("Запись_ЗаказНаСборку", ПараметрыОповещения, Объект.Ссылка);
КонецПроцедуры
&НаСервере
Функция ЕстьРазборкаПоЗаказу()
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
Результат = Ложь;
Иначе
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА КАК ЕстьОтгрузка
|ИЗ
| РегистрНакопления.ЗаказыНаСборку КАК Т
|ГДЕ
| Т.ЗаказНаСборку = &Ссылка
| И Т.ТипСборки = ЗНАЧЕНИЕ(Перечисление.ТипыДвиженияЗапасов.Отгрузка)
| И Т.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
| И Т.КОформлению > 0";
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
УстановитьПривилегированныйРежим(Истина);
Результат = Не Запрос.Выполнить().Пустой();
КонецЕсли;
Возврат Результат;
КонецФункции
&НаКлиенте
Процедура ВариантКомплектацииПриИзменении(Элемент)
ВариантКомплектацииПриИзмененииНаСервере();
КонецПроцедуры
&НаСервере
Процедура ВариантКомплектацииПриИзмененииНаСервере()
Объект.ДлительностьСборкиРазборки = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.ВариантКомплектации, "ДлительностьСборкиРазборки");
Если ЗначениеЗаполнено(Объект.НачалоСборкиРазборки) Тогда
Объект.ОкончаниеСборкиРазборки = Объект.НачалоСборкиРазборки + Объект.ДлительностьСборкиРазборки * 86400;
ИначеЕсли ЗначениеЗаполнено(Объект.ОкончаниеСборкиРазборки) Тогда
Объект.НачалоСборкиРазборки = Объект.ОкончаниеСборкиРазборки - Объект.ДлительностьСборкиРазборки * 86400;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьСвойстваЭлементовФормыХозяйственнаяОперация()
ЭтоСборка = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров;
Если ЭтоСборка Тогда
Элементы.КоличествоУпаковок.Заголовок = НСтр("ru = 'Собрать'");
ЭтаФорма.Команды.ОтменитьНеотработанные.Подсказка = НСтр("ru = 'Отмене подлежит несобранное количество комплектов и неиспользованные комплектующие'");
ОбеспечениеВДокументахСервер.НастроитьГиперссылкиСостояниеОбеспечения(ЭтотОбъект);
Иначе
Элементы.КоличествоУпаковок.Заголовок = НСтр("ru = 'Разобрать'");
ЭтаФорма.Команды.ОтменитьНеотработанные.Подсказка = НСтр("ru = 'Отмене подлежит неиспользованное количество комплектов и неполученные комплектующие'");
КонецЕсли;
Элементы.ВариантОбеспечения.Видимость = Не ЭтоСборка;
Элементы.Обособленно.Видимость = Не ЭтоСборка;
Элементы.ТоварыНазначение.Видимость = Не ЭтоСборка;
Элементы.Назначение.Видимость = ЭтоСборка;
Элементы.ТоварыВариантОбеспечения.Видимость = ЭтоСборка;
ЕстьПраво = ОбеспечениеВДокументахСервер.ЕстьПравоПросмотраГиперссылкиСостоянияОбеспечения();
Элементы.СтраницыГиперссылкаСостояниеОбеспечения.Видимость = ЕстьПраво И ЭтоСборка;
Элементы.ТоварыОбособленно.Видимость = ЭтоСборка;
Элементы.ТоварыГруппаДействия.Видимость = ЭтоСборка;
Элементы.ТоварыГруппаФлагОбособленно.Видимость = ЭтоСборка;
Элементы.ТоварыКонтекстноеМенюГруппаОбеспечение.Видимость = ЭтоСборка;
Элементы.ТоварыДоступно.Видимость = ЭтоСборка;
УстановитьОформлениеЭлементаОбособленно();
УстановитьОформлениеЭлементаДоступно();
КонецПроцедуры
&НаСервере
Процедура УстановитьОформлениеЭлементаОбособленно()
Элементы.Обособленно.Доступность = ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар
И Объект.ВариантОбеспечения <> Перечисления.ВариантыОбеспечения.Отгрузить;
КонецПроцедуры
&НаСервере
Процедура УстановитьОформлениеЭлементаДоступно()
ЭтоСборка = Объект.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.СборкаТоваров;
НужнаКолонкаДоступно =
Объект.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.РезервироватьПоМереПоступления
ИЛИ Объект.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.КОбеспечению
ИЛИ Объект.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.НеТребуется;
Элементы.Доступно.Видимость = Не ЭтоСборка И НужнаКолонкаДоступно;
Элементы.НадписьУпаковка.Видимость = Не ЭтоСборка И НужнаКолонкаДоступно;
КонецПроцедуры
&НаСервере
Процедура РассчитатьИтоговыеПоказателиЗаказа()
ВсеСтрокиОтменены = Истина;
ТолькоНеТребуется = Истина;
ВариантНеТребуется = Перечисления.ВариантыОбеспечения.НеТребуется;
Для Каждого СтрокаТовары Из Объект.Товары Цикл
ВсеСтрокиОтменены = ВсеСтрокиОтменены И СтрокаТовары.Отменено;
ТолькоНеТребуется = ТолькоНеТребуется И (СтрокаТовары.Отменено Или СтрокаТовары.ВариантОбеспечения = ВариантНеТребуется);
КонецЦикла;
КонецПроцедуры
#Область ОтменаСтрок
&НаКлиенте
Процедура ОтменитьНеотработанные(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ЗаказНаСборку.ФормаДокумента.Команда.ОтменитьНеотработанные");
РезультатОтмены = ОтменитьНеотработанныеСервер();
ПоказатьОповещениеПользователя(НСтр("ru = 'Отмена неотработанных строк'"), , РезультатОтмены.Оповещение);
Если НоменклатураКлиент.НеобходимоОбновитьСтатусСерийВШапке(Объект, КэшированныеЗначения, ПараметрыУказанияСерий.Шапка) Тогда
НоменклатураКлиент.ОбновитьКешированныеЗначенияШапкиДляУчетаСерий(Объект, КэшированныеЗначения, ПараметрыУказанияСерий.Шапка);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ОтменитьНеотработанныеСервер()
СтруктураКорректировкиСтрокЗаказа = ЗаказыСервер.СтруктураКорректировкиСтрокЗаказа();
СтруктураКорректировкиСтрокЗаказа.ОтменитьНеотработанныеСтроки = Истина;
Возврат СкорректироватьСтрокиЗаказа(СтруктураКорректировкиСтрокЗаказа);
КонецФункции
&НаКлиенте
Процедура ОтменитьВыделенныеСтроки(Команда)
ОценкаПроизводительностиКлиент.НачатьЗамерВремени(Истина,
"Документ.ЗаказНаСборку.ФормаДокумента.Команда.ОтменитьВыделенныеСтроки");
ОтменитьВыделенныеСтрокиСервер();
ПоказатьОповещениеПользователя(НСтр("ru = 'Отмена выделенных строк'"), , НСтр("ru = 'Выделенные строки отменены'"));
КонецПроцедуры
&НаСервере
Процедура ОтменитьВыделенныеСтрокиСервер()
ВыделенныеСтроки = Элементы.Товары.ВыделенныеСтроки;
СтруктураДействий = Новый Структура();
КэшированныеЗначения = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруКэшируемыеЗначения();
ОбрабатываемыеСтроки = Новый Массив();
Для Каждого Идентификатор Из ВыделенныеСтроки Цикл
Строка = Объект.Товары.НайтиПоИдентификатору(Идентификатор);
Строка.Отменено = Истина;
ОбрабатываемыеСтроки.Добавить(Строка);
КонецЦикла;
ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
ОбрабатываемыеСтроки,
СтруктураДействий,
Объект.Товары,
КэшированныеЗначения);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий.ТЧ);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Объект,ПараметрыУказанияСерий.Шапка);
ОбновитьКолонкуДоступноСервер();
КонецПроцедуры
&НаСервере
Функция СкорректироватьСтрокиЗаказа(СтруктураДополнительныхПараметров)
ЗаказОбъект = РеквизитФормыВЗначение("Объект");
СтруктураДополнительныхПараметров.ПроверятьОстатки = Истина;
СтруктураРезультата = ЗаказОбъект.СкорректироватьСтрокиЗаказа(СтруктураДополнительныхПараметров);
Если СтруктураДополнительныхПараметров.ЗакрыватьЗаказы Тогда
ЗаказОбъект.Статус = Перечисления.СтатусыВнутреннихЗаказов.Закрыт;
КонецЕсли;
ЗначениеВРеквизитФормы(ЗаказОбъект, "Объект");
Элементы.ГруппаОтмена.Видимость = Объект.КоличествоОтменено > 0;
ЗаполнитьСлужебныеРеквизитыПоНоменклатуре();
ОбновитьКолонкуДоступноСервер();
Модифицированность = Истина;
Возврат СтруктураРезультата;
КонецФункции
&НаСервере
Процедура АктуализироватьСборкуПодДеятельность(Заполнить = Истина)
ПараметрыЗаполнения = Документы.ЗаказНаСборку.ПараметрыЗаполненияВидаДеятельностиНДС(Объект);
Если Заполнить Тогда
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(
Объект.СборкаПодДеятельность,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецЕсли;
УчетНДСУП.ЗаполнитьСписокВыбораВидаДеятельностиНДС(
Элементы.СборкаПодДеятельность,
Объект.СборкаПодДеятельность,
ПараметрыЗаполнения,
УчетНДСКэшированныеЗначенияПараметров);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
&НаКлиенте
Процедура СоздатьКорректировкуНазначенияЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Ответ = РезультатВопроса;
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
Иначе
ОчиститьСообщения();
Записать(Новый Структура("РежимЗаписи,СозданиеКорректировки", РежимЗаписиДокумента.Проведение, ДополнительныеПараметры));
КонецЕсли;
КонецПроцедуры
#КонецОбласти