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