Дополнительные сведения по товарам заказов торговых площадок / Заполнение данных экземпляров / Модуль формы

файл
#Область ОписаниеПеременных

&НаКлиенте
Перем КлючТекущейЗаписи;

#КонецОбласти

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	Постфикс      = РегистрыСведений.ЗаказыТорговыхПлощадок.ПостфиксНовогоОтправления();
	УчетнаяЗапись = Параметры.УчетнаяЗапись;
	Заказ         = Параметры.Заказ;
	НомерЗаказа   = Параметры.НомерЗаказа;
	
	ВидМаркетплейса = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УчетнаяЗапись, "ВидМаркетплейса");
	Логотип = ИнтеграцияСМаркетплейсамиКлиентСервер.ЛоготипТорговойПлощадки(ВидМаркетплейса);
	ЦветГиперссылки         = ЦветаСтиля.ГиперссылкаЦвет;
	ЦветТребуетсяЗаполнение = ЦветаСтиля.ПоясняющийОшибкуТекст;
	ЦветПоясняющийТекст     = ЦветаСтиля.ПоясняющийТекст;
	
	ЗаполнитьДанныеФормыПоЗаказу();
	
	СвойстваСписка = ОбщегоНазначения.СтруктураСвойствДинамическогоСписка();
	ЗаполнитьЗначенияСвойств(СвойстваСписка, Список);
	СвойстваСписка.ТекстЗапроса =
		РегистрыСведений.ДополнительныеСведенияПоТоварамЗаказовТорговыхПлощадок.ТекстЗапросаДинамическогоСписка(УчетнаяЗапись);
	ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СвойстваСписка);
	
	ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, "УчетнаяЗапись", УчетнаяЗапись);
	ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, "Заказ",         Заказ);
	
	ПредставлениеРеквизитаСтранаПроисхождения =
		Метаданные.Справочники.Номенклатура.Реквизиты.СтранаПроисхождения.Представление();
	
	УстановитьЗаголовкиКолонкамСписка();
	
	ЗаполнитьСписокРеквизитовРегистра();
	
	УстановитьУсловноеОформление();

КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)

	ПерезаполнитьДанныеЭкземпляров();

КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

	Если (ИмяСобытия = "Запись_ПередачаТоваровХранителю"
				Или ИмяСобытия = "Запись_РеализацияТоваровУслуг")
			И ТипЗнч(Параметр) = Тип("Структура")
			И (Параметр.Количество() = 0
				Или Параметр.Свойство("РежимЗаписи")
					И (Параметр.РежимЗаписи = РежимЗаписиДокумента.Проведение
						Или Параметр.РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения)) Тогда
		ПерезаполнитьДанныеЭкземпляров();
		
	ИначеЕсли ИмяСобытия = "МП_ОбновлениеСведенийПоЗаказамИОтправлениям" 
				И Источник = УчетнаяЗапись Тогда
		ОформитьДокументыОтгрузкиЗавершение(Параметр);
		
	ИначеЕсли ИмяСобытия = "Запись_ЗаказКлиента" И Источник = Заказ Тогда
		ЗаполнитьДанныеФормыПоЗаказу();
	КонецЕсли;

КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура НомерЗаказаОткрытие(Элемент, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;
	ПоказатьЗначение(, Заказ);

КонецПроцедуры

&НаКлиенте
Процедура ТекстДокументыНаОснованииОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;
	
	Если НавигационнаяСсылкаФорматированнойСтроки = "ОткрытьДокументОтгрузки" Тогда
		ПоказатьЗначение(Неопределено, ТекущийДокументОтгрузки);
		
	ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "ОформитьДокументыОтгрузки" Тогда
		ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку("e1cib/command/РегистрСведений.ЗаказыТорговыхПлощадок.Команда.ОформитьДокументыОтгрузки");
	КонецЕсли;

КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)

	ПриАктивизацииСтрокиСписка();

КонецПроцедуры

&НаКлиенте
Процедура СписокПриАктивизацииЯчейки(Элемент)

	Если Элемент = Неопределено Или Элемент.ТекущийЭлемент = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ДоступностьОчисткиЗначения = Элемент.ТекущийЭлемент.Имя = "СписокШтрихкодУпаковки"
									Или Элемент.ТекущийЭлемент.Имя = "СписокУИН";
	
	Если ДоступностьОчисткиЗначения Тогда
		ТекущиеДанные = Элемент.ТекущиеДанные;
		Если ТекущиеДанные <> Неопределено Тогда
			Отбор = Новый Структура("НомерОтправления", ТекущиеДанные.НомерОтправления);
			СтрокиДанных = ДанныеПоНомерамОтправлений.НайтиСтроки(Отбор);
			Если СтрокиДанных.Количество() > 0 Тогда
				СтатусОтправления = СтрокиДанных[0].ДанныеОтправления.Статус;
				
				ДоступностьОчисткиЗначения =
					(СтатусОтправления = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовТорговыхПлощадок.ОжидаетСборки"));
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
	Элементы.СписокОчиститьЗначение.Доступность          = ДоступностьОчисткиЗначения;
	Элементы.КонтекстноеМенюОчиститьЗначение.Доступность = ДоступностьОчисткиЗначения;

КонецПроцедуры

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)

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

КонецПроцедуры

&НаКлиенте
Процедура СписокПередНачаломИзменения(Элемент, Отказ)

	Отказ = Истина;

КонецПроцедуры

&НаКлиенте
Процедура СписокПередУдалением(Элемент, Отказ)

	Отказ = Истина;
	
	ОчиститьСообщения();
	
	Если Элемент.ТекущийЭлемент.Имя = "СписокШтрихкодУпаковки" Тогда
		ИмяРеквизита = СписокРеквизитовРегистра.НайтиПоЗначению("ШтрихкодУпаковки").Значение;
		Значение = ПредопределенноеЗначение("Справочник.ШтрихкодыУпаковокТоваров.ПустаяСсылка");
	ИначеЕсли Элемент.ТекущийЭлемент.Имя = "СписокУИН" Тогда
		ИмяРеквизита = СписокРеквизитовРегистра.НайтиПоЗначению("УИН").Значение;
		Значение = "";
	Иначе
		Возврат;
	КонецЕсли;
	
	ДопПараметры = Новый Структура;
	ДопПараметры.Вставить("ВыделенныеСтроки", Элемент.ВыделенныеСтроки);
	ДопПараметры.Вставить("ИмяРеквизита",     Строка(ИмяРеквизита));
	
	ВыборЗначенияЗавершение(Значение, ДопПараметры);

КонецПроцедуры

&НаКлиенте
Процедура СписокНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, Выполнение)

	ОчиститьСообщения();
	
	ПараметрыПеретаскивания.ДопустимыеДействия =  ДопустимыеДействияПеретаскивания.Перемещение;
	ПараметрыПеретаскивания.Действие           = ДействиеПеретаскивания.Перемещение;
	
	ПереносимыеСтроки = Новый Массив;
	ЗаполнитьПереносимыеСтроки(ПереносимыеСтроки, ПараметрыПеретаскивания.Значение);
	ПараметрыПеретаскивания.Значение = ПереносимыеСтроки;

КонецПроцедуры

&НаКлиенте
Процедура СписокПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)

	СтандартнаяОбработка = Ложь;
	ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Перемещение;

КонецПроцедуры

&НаКлиенте
Процедура СписокПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)

	ДопПараметры = Новый Структура;
	ДопПараметры.Вставить("ВыделенныеСтроки", ПараметрыПеретаскивания.Значение);
	
	Если ТипЗнч(Строка) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда
		НомерОтправления = Строка.Ключ;
		ДопПараметры.Вставить("ИсточникНомераОтправления", Неопределено);
	ИначеЕсли ТипЗнч(Строка) = Тип("РегистрСведенийКлючЗаписи.ДополнительныеСведенияПоТоварамЗаказовТорговыхПлощадок") Тогда
		НомерОтправления = "";
		ДопПараметры.Вставить("ИсточникНомераОтправления", Строка);
	Иначе
		Возврат;
	КонецЕсли;
	
	ПеренестиВОтправлениеЗавершение(НомерОтправления, ДопПараметры);

КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ОбновитьСведения(Команда)

	ОчиститьСообщения();
	
	ПерезаполнитьДанныеЭкземпляров();

КонецПроцедуры

&НаКлиенте
Процедура РазбитьСтроку(Команда)

	ОчиститьСообщения();
	
	ТекущиеДанные = Элементы.Список.ТекущиеДанные;
	Если ТекущиеДанные = Неопределено Тогда
		Возврат;
	ИначеЕсли ТекущиеДанные.РодительскаяГруппировкаСтроки = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Для разбивки выберите строку с товаром.'"));
		Возврат;
	КонецЕсли;
	
	ТекущиеДанные = Элементы.Список.ТекущиеДанные;
	
	ТаблицаДляРазбиения.Очистить();
	НоваяСтрока = ТаблицаДляРазбиения.Добавить();
	ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекущиеДанные);
	
	ОповещениеПослеРазбиения = Новый ОписаниеОповещения("РазбитьСтрокуЗавершение", ЭтотОбъект);

	ПараметрыРазбиенияСтроки = РаботаСТабличнымиЧастямиКлиент.ПараметрыРазбиенияСтроки();
	ПараметрыРазбиенияСтроки.ИмяПоляКоличество = "Количество";
	
	ПараметрыОбработки = Новый Структура;
	ПараметрыОбработки.Вставить("ТабличнаяЧасть",           ТаблицаДляРазбиения);
	ПараметрыОбработки.Вставить("ЭлементФормы",             Элементы.Список);
	ПараметрыОбработки.Вставить("ОповещениеПослеРазбиения", ОповещениеПослеРазбиения);
	ПараметрыОбработки.Вставить("ПараметрыРазбиенияСтроки", ПараметрыРазбиенияСтроки);

	РаботаСТабличнымиЧастямиКлиент.ВвестиКоличествоДляРазбиения(ПараметрыОбработки);

КонецПроцедуры

&НаКлиенте
Процедура ПеренестиВОтправление(Команда)

	ОчиститьСообщения();
	
	ТекущиеДанные = Элементы.Список.ТекущиеДанные;
	
	Если ТекущиеДанные = Неопределено Или Элементы.Список.ВыделенныеСтроки.Количество() = 0 Тогда
		Возврат;
	ИначеЕсли Элементы.Список.ВыделенныеСтроки.Количество() = 1
			И ТекущиеДанные.РодительскаяГруппировкаСтроки = Неопределено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Для переноса выберите строки с товарами.'"));
		Возврат;
	ИначеЕсли Элементы.Список.ВыделенныеСтроки.Количество() = 1
			И ТекущиеДанные.Отменено Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Товар отменен в заказе. Выберите другую позицию.'"));
		Возврат;
	КонецЕсли;
	
	ПереносимыеСтроки = Новый Массив;
	ЗаполнитьПереносимыеСтроки(ПереносимыеСтроки, Элементы.Список.ВыделенныеСтроки);
	
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("Заказ",            Заказ);
	ПараметрыФормы.Вставить("ДокументОтгрузки", ?(ПереносимыеСтроки.Количество() = 1,
													ТекущиеДанные.ДокументОтгрузки,
													Неопределено));
	
	ДопПараметры = Новый Структура;
	ДопПараметры.Вставить("ВыделенныеСтроки",          ПереносимыеСтроки);
	ДопПараметры.Вставить("ИсточникНомераОтправления", Неопределено);
	ОповещениеЗавершения = Новый ОписаниеОповещения("ПеренестиВОтправлениеЗавершение", ЭтотОбъект, ДопПараметры);
	
	ОткрытьФорму(
		"РегистрСведений.ДополнительныеСведенияПоТоварамЗаказовТорговыхПлощадок.Форма.ВыборВариантаПереносаТоваров",
		ПараметрыФормы,
		ЭтотОбъект,
		,,,
		ОповещениеЗавершения,
		РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

КонецПроцедуры

&НаКлиенте
Процедура ОтменитьСтроки(Команда)

	ОчиститьСообщения();
	
	Если Не ЗаказПроведен Тогда
		ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Отмена невозможна, т.к. %1 не проведен. Для отмены строк проведите документ.'"),
			Заказ);
		ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, Заказ);
		Возврат;
	КонецЕсли;
	
	ОтменяемыеСтроки = ОбщегоНазначенияКлиент.СкопироватьРекурсивно(Элементы.Список.ВыделенныеСтроки);
	
	СтрокиГруппы = Новый Массив;
	ПроверитьВозможностьОтменыСтрок(ОтменяемыеСтроки, СтрокиГруппы, ЭкземплярыБезДокументовОтгрузки);
	
	Если СтрокиГруппы.Количество() > 0 Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(
			НСтр("ru = 'Для отмены доступны только строки с товарами.'"));
		
		Если СтрокиГруппы.Количество() = Элементы.Список.ВыделенныеСтроки.Количество() Тогда
			Возврат;
		КонецЕсли;
	КонецЕсли;
	
	Если ОтменяемыеСтроки.Количество() = 0 Тогда
		ОбщегоНазначенияКлиент.СообщитьПользователю(
			НСтр("ru = 'Отмена невозможна, т.к. для выбранных строк установлена отмена или оформлены документы отгрузки. Для отмены строк отмените проведение документов отгрузки.'"));
		Возврат;
	КонецЕсли;
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ВопросОтменыЗавершение", ЭтотОбъект, ОтменяемыеСтроки);
	Если ОтменяемыеСтроки.Количество() <> Элементы.Список.ВыделенныеСтроки.Количество() Тогда
		ПоказатьВопрос(ОписаниеОповещения,
			НСтр("ru = 'К отмене доступны только неотмененные строки и без отгрузки. Продолжить?'"),
			РежимДиалогаВопрос.ДаНет,
			,
			КодВозвратаДиалога.Да);
	Иначе
		ВыполнитьОбработкуОповещения(ОписаниеОповещения, КодВозвратаДиалога.Да);
	КонецЕсли;

КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаСервере
Процедура УстановитьУсловноеОформление()

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

КонецПроцедуры

&НаСервере
Процедура УстановитьЗаголовкиКолонкамСписка()

	ПутьКСписку = "Список.";
	Для Каждого Колонка Из Элементы.Список.ПодчиненныеЭлементы Цикл
		Если ТипЗнч(Колонка) <> Тип("ПолеФормы") Или Не ПустаяСтрока(Колонка.Заголовок) Тогда
			Продолжить;
		КонецЕсли;
		
		Поле = Список.Поля.Найти(СтрЗаменить(Колонка.ПутьКДанным, ПутьКСписку, ""));
		Если Поле <> Неопределено Тогда
			Колонка.Заголовок = Поле.Заголовок;
		КонецЕсли;
	КонецЦикла;

КонецПроцедуры

&НаСервере
Процедура ЗаполнитьСписокРеквизитовРегистра()

	СписокРеквизитовРегистра.Очистить();
	
	РеквизитыРС = Метаданные.РегистрыСведений.ДополнительныеСведенияПоТоварамЗаказовТорговыхПлощадок.Реквизиты;
	
	СписокРеквизитовРегистра.Добавить("СтранаПроисхождения", РеквизитыРС.Найти("СтранаПроисхождения"));
	СписокРеквизитовРегистра.Добавить("НомерГТД",            РеквизитыРС.Найти("НомерГТД"));
	СписокРеквизитовРегистра.Добавить("ШтрихкодУпаковки",    РеквизитыРС.Найти("ШтрихкодУпаковки"));
	СписокРеквизитовРегистра.Добавить("УИН",                 РеквизитыРС.Найти("УИН"));

КонецПроцедуры

&НаКлиенте
Процедура УстановитьПараметрыСпискаНаКлиенте(ЗначенияПараметров)

	Если ЗначенияПараметров <> Неопределено Тогда
		МаксимальныйИдентификаторЭкземпляра = ЗначенияПараметров.МаксимальныйИдентификаторЭкземпляра;
		
		ЗаполнитьДанныеПоНомерамОтправлений(ЗначенияПараметров);
		
		ОбщегоНазначенияКлиентСервер.УстановитьПараметрДинамическогоСписка(Список, "ОтправленияИзмененные",
			ЗначенияПараметров.ОтправленияИзмененные);
		
		ЭкземплярыБезДокументовОтгрузки.ЗагрузитьЗначения(ЗначенияПараметров.ЭкземплярыБезДокументовОтгрузки);
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьДанныеПоНомерамОтправлений(ЗначенияПараметров)

	ДанныеПоНомерамОтправлений.Очистить();
	
	Для Каждого СоставДанных Из ЗначенияПараметров.ДанныеПоНомерамОтправлений Цикл
		НоваяСтрока = ДанныеПоНомерамОтправлений.Добавить();
		НоваяСтрока.НомерОтправления                  = СоставДанных.Ключ;
		НоваяСтрока.ДанныеОтправления                 = СоставДанных.Значение;
		
		НоваяСтрока.ОправлениеИзменено                =
			(ЗначенияПараметров.ОтправленияИзмененные.Найти(НоваяСтрока.НомерОтправления) <> Неопределено);
		НоваяСтрока.ОтправлениеСНезаполненнымиДанными =
			(ЗначенияПараметров.ОтправленияСНезаполненнымиДанными.Найти(НоваяСтрока.НомерОтправления) <> Неопределено);
		НоваяСтрока.ОтправлениеБезДокументаОтгрузки   =
			(ЗначенияПараметров.ОтправленияБезДокументовОтгрузки.Найти(НоваяСтрока.НомерОтправления) <> Неопределено);
		НоваяСтрока.ОтправлениеВДоставке              =
			(ЗначенияПараметров.ОтправленияВДоставке.Найти(НоваяСтрока.НомерОтправления) <> Неопределено);
		НоваяСтрока.ОтправлениеВКонечномСтатусе       =
			(ЗначенияПараметров.ОтправленияВКонечномСтатусе.Найти(НоваяСтрока.НомерОтправления) <> Неопределено);
	КонецЦикла;

КонецПроцедуры

&НаКлиенте
Процедура УстановитьДоступностьКоманд(Доступность)

	Элементы.СписокГруппаДействия.Доступность          = Доступность;
	Элементы.ОформитьДокументыОтгрузки.Доступность     = Доступность;
	Элементы.КонтекстноеМенюГруппаДействия.Доступность = Доступность;

КонецПроцедуры

&НаКлиенте
Процедура ОбновитьТекстДокументыНаОсновании(ДанныеТекущегоОтправления, ЭтоГруппировка, ЭтоИзмененноеОтправление)

	ТекстыПоляДокументыНаОсновании.Очистить();
	ТекстДокументыНаОсновании = "";
	
	Если ДанныеТекущегоОтправления = Неопределено Тогда
		ТекущийДокументОтгрузки = Неопределено;
	Иначе
		ТекущийДокументОтгрузки = ДанныеТекущегоОтправления.ДокументОтгрузки;
	КонецЕсли;
	
	НавигационнаяСсылка = "";
	ТекстДокумента      = "";
	
	Если ЭтоГруппировка Тогда
		Если ЗначениеЗаполнено(ТекущийДокументОтгрузки) Тогда
			Шаблон = ИнтеграцияСМаркетплейсамиКлиентСервер.ШаблонНавигационнойСсылкиДокументаОтгрузки(
				ТекущийДокументОтгрузки,
				ДанныеТекущегоОтправления.Статус);
			
			НавигационнаяСсылка = "ОткрытьДокументОтгрузки";
			ТекстДокумента      = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				Шаблон,
				ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ДанныеТекущегоОтправления.НомерДокументаОтгрузки),
				Формат(ДанныеТекущегоОтправления.ДатаДокументаОтгрузки, "ДЛФ=DD"));
			
		Иначе
			ТекстДокумента = НСтр("ru = 'Требуется оформление документа отгрузки'");
		КонецЕсли;
	
		Если ЗначениеЗаполнено(НавигационнаяСсылка) Тогда
			Если ЭтоИзмененноеОтправление Тогда
				ЦветТекста = ЦветТребуетсяЗаполнение;
			Иначе
				ЦветТекста = ЦветГиперссылки;
			КонецЕсли;
		Иначе
			ЦветТекста = Неопределено;
		КонецЕсли;
		
		ПредставлениеДокумента = Новый ФорматированнаяСтрока(ТекстДокумента,, ЦветТекста,, НавигационнаяСсылка);
		ТекстыПоляДокументыНаОсновании.Добавить(ПредставлениеДокумента);
		
		ОбщегоНазначенияУТКлиентСервер.ОбновитьТекстДокументыНаОсновании(ЭтотОбъект);
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ПриАктивизацииСтрокиСписка()

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

КонецПроцедуры

&НаСервере
Процедура ЗаполнитьДанныеФормыПоЗаказу()
	
	РеквизитыЗаказа = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Заказ, "Проведен, Склад");
	Склад = РеквизитыЗаказа.Склад;
	ЗаказПроведен = РеквизитыЗаказа.Проведен;
	
КонецПроцедуры

#Область ОбновлениеДанныхЭкземпляров

&НаКлиенте
Процедура ПерезаполнитьДанныеЭкземпляров()

	Элементы.СтраницыСостояния.ТекущаяСтраница = Элементы.ГруппаЗаполнениеВыполняется;
	
	УстановитьДоступностьКоманд(Ложь);
	
	ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
	ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
	
	Обработчик = Новый ОписаниеОповещения("ПерезаполнитьДанныеЭкземпляровЗавершение", ЭтотОбъект);
	
	ДлительнаяОперация = ПерезаполнитьДанныеЭкземпляровНаСервере(Заказ, УникальныйИдентификатор);
	ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация, Обработчик, ПараметрыОжидания);

КонецПроцедуры

&НаСервереБезКонтекста
Функция ПерезаполнитьДанныеЭкземпляровНаСервере(Заказ, ИдентификаторФормы)

	ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(ИдентификаторФормы);
	ПараметрыВыполнения.НаименованиеФоновогоЗадания = НСтр("ru = 'Ozon. Заполнение сведений по товарам.'");
	ПараметрыВыполнения.ОжидатьЗавершение           = 0;
	ПараметрыВыполнения.ЗапуститьВФоне              = Истина;
	
	ИмяМетода = "РегистрыСведений.ДополнительныеСведенияПоТоварамЗаказовТорговыхПлощадок.ЗаполнитьДанныеПоЭкземплярам";
	
	ПараметрыЗаполнения =
		РегистрыСведений.ДополнительныеСведенияПоТоварамЗаказовТорговыхПлощадок.ПараметрыЗаполненияДанныхПоЭкземплярам();
	ПараметрыЗаполнения.ПроверитьЗаказы = Истина;
	
	Возврат ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения, ИмяМетода, Заказ, ПараметрыЗаполнения);

КонецФункции

&НаКлиенте
Процедура ПерезаполнитьДанныеЭкземпляровЗавершение(РезультатЗадания, ДопПараметры = Неопределено) Экспорт

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

КонецПроцедуры

&НаСервереБезКонтекста
Функция ПроверитьЗаказ(Заказ)

	Заказы = Новый Массив;
	Заказы.Добавить(Заказ);
	
	РезультатПроверкиЗаказов = РегистрыСведений.ЗаказыТорговыхПлощадок.ПроверитьЗаказы(
		Заказы,
		,
		Истина,
		Истина);
		
	РезультатПроверкиЗаказа = ИнтеграцияСМаркетплейсамиКлиентСервер.РезультатПроверкиЗаказа(
		Заказ,
		РезультатПроверкиЗаказов);
	
	Возврат РезультатПроверкиЗаказа;

КонецФункции

#КонецОбласти

#Область РазбивкаСтрок

&НаКлиенте
Процедура РазбитьСтрокуЗавершение(НоваяСтрока, ДополнительныеПараметры) Экспорт

	КлючТекущейЗаписи = Элементы.Список.ТекущаяСтрока;
	
	Если НоваяСтрока <> Неопределено Тогда
		Результат = РазделитьСтрокуНаСервере(
			УчетнаяЗапись,
			КлючТекущейЗаписи,
			НоваяСтрока.Количество,
			МаксимальныйИдентификаторЭкземпляра);
			
		УстановитьПараметрыСпискаНаКлиенте(Результат.РезультатПроверкиЗаказа);
		
		Если Результат.КлючНовойСтроки <> Неопределено Тогда
			КлючТекущейЗаписи = Результат.КлючНовойСтроки;
		КонецЕсли;
		
		Элементы.Список.Обновить();
		Элементы.Список.ТекущаяСтрока = КлючТекущейЗаписи;
	КонецЕсли;

КонецПроцедуры

&НаСервереБезКонтекста
Функция РазделитьСтрокуНаСервере(УчетнаяЗапись, КлючЗаписи, НовоеКоличество, МаксимальныйЭкземпляр = 100)

	КлючНовойСтроки = Неопределено;
	
	УстановитьПривилегированныйРежим(Истина);
	
	НачатьТранзакцию();
	Попытка
		БлокировкаДанных = Новый БлокировкаДанных;
		ЭлементБлокировкиДанных =
			БлокировкаДанных.Добавить("РегистрСведений.ДополнительныеСведенияПоТоварамЗаказовТорговыхПлощадок");
		ЭлементБлокировкиДанных.УстановитьЗначение("Заказ", КлючЗаписи.Заказ);
		ЭлементБлокировкиДанных.УстановитьЗначение("ИдентификаторТовара", КлючЗаписи.ИдентификаторТовара);
		БлокировкаДанных.Заблокировать();
		
		ТекущаяЗапись = РегистрыСведений.ДополнительныеСведенияПоТоварамЗаказовТорговыхПлощадок.СоздатьМенеджерЗаписи();
		ЗаполнитьЗначенияСвойств(ТекущаяЗапись, КлючЗаписи);
		ТекущаяЗапись.Прочитать();
		
		Если ТекущаяЗапись.Выбран() Тогда
			ТекущаяЗапись.Количество = ТекущаяЗапись.Количество - НовоеКоличество;
			ТекущаяЗапись.Записать();
			
			НоваяЗапись = РегистрыСведений.ДополнительныеСведенияПоТоварамЗаказовТорговыхПлощадок.СоздатьМенеджерЗаписи();
			ЗаполнитьЗначенияСвойств(НоваяЗапись, ТекущаяЗапись);
			НоваяЗапись.Количество = НовоеКоличество;
			НоваяЗапись.ИдентификаторЭкземпляра = МаксимальныйЭкземпляр + 1;
			НоваяЗапись.Записать();
			
			ЗначенияИзмерений = Новый Структура;
			ЗначенияИзмерений.Вставить("Заказ",                   НоваяЗапись.Заказ);
			ЗначенияИзмерений.Вставить("ИдентификаторТовара",     НоваяЗапись.ИдентификаторТовара);
			ЗначенияИзмерений.Вставить("ИдентификаторЭкземпляра", НоваяЗапись.ИдентификаторЭкземпляра);
			
			КлючНовойСтроки =
				РегистрыСведений.ДополнительныеСведенияПоТоварамЗаказовТорговыхПлощадок.СоздатьКлючЗаписи(ЗначенияИзмерений);
		КонецЕсли;
		
		ЗафиксироватьТранзакцию();
	Исключение
		ОтменитьТранзакцию();
		
		ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Не удалось разделить строку по причине: %1. Повторите действие.'"),
			ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
		ОбщегоНазначения.СообщитьПользователю(ТекстСообщения);
	КонецПопытки;
	
	УстановитьПривилегированныйРежим(Ложь);
	
	РезультатПроверкиЗаказа = ПроверитьЗаказ(КлючЗаписи.Заказ);
	
	Результат = Новый Структура;
	Результат.Вставить("РезультатПроверкиЗаказа", РезультатПроверкиЗаказа);
	Результат.Вставить("КлючНовойСтроки",         КлючНовойСтроки);
	
	Возврат Результат;

КонецФункции

#КонецОбласти

#Область ПереносСтрокВДругоеОтправление

&НаКлиенте
Процедура ЗаполнитьПереносимыеСтроки(ПереносимыеСтроки, ВыделенныеСтроки)

	ВыбраныГруппировки = Ложь;
	
	Для Каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл
		Если ТипЗнч(ВыделеннаяСтрока) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда
			ВыбраныГруппировки = Истина;
		Иначе
			ПереносимыеСтроки.Добавить(ВыделеннаяСтрока);
		КонецЕсли;
	КонецЦикла;
	
	Если ВыбраныГруппировки Тогда
		Если Не ЗначениеЗаполнено(ПереносимыеСтроки) Тогда
			ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Для переноса выберите строки с товарами.'"));
		Иначе
			ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Для переноса доступны только строки с товарами.'"));
		КонецЕсли;
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ПеренестиВОтправлениеЗавершение(НомерОтправления, ДопПараметры = Неопределено) Экспорт

	Если НомерОтправления = Неопределено Или ДопПараметры = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	ВыделенныеСтроки          = ДопПараметры.ВыделенныеСтроки;
	ИсточникНомераОтправления = ДопПараметры.ИсточникНомераОтправления;
	
	ПараметрыЗаписи = Новый Структура;
	ПараметрыЗаписи.Вставить("УчетнаяЗапись",             УчетнаяЗапись);
	ПараметрыЗаписи.Вставить("Заказ",                     Заказ);
	ПараметрыЗаписи.Вставить("НомерОтправления",          НомерОтправления);
	ПараметрыЗаписи.Вставить("ИсточникНомераОтправления", ИсточникНомераОтправления);
	ПараметрыЗаписи.Вставить("ВыделенныеСтроки",          ВыделенныеСтроки);
	ПараметрыЗаписи.Вставить("Постфикс",                  Постфикс);
	
	Результат = СоздатьЗаписьПоНовомуОтправлению(ПараметрыЗаписи);
	УстановитьПараметрыСпискаНаКлиенте(Результат);
	
	Элементы.Список.Обновить();
	ПриАктивизацииСтрокиСписка();

КонецПроцедуры

&НаСервереБезКонтекста
Функция СоздатьЗаписьПоНовомуОтправлению(ПараметрыЗаписи)

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

КонецФункции

&НаСервереБезКонтекста
Процедура ПодготовитьНомерОтправленияДляПереноса(НомерОтправления, Заказ, ИсточникНомераОтправления)

	Если ПустаяСтрока(НомерОтправления) И ИсточникНомераОтправления <> Неопределено Тогда
		МенеджерЗаписи = РегистрыСведений.ДополнительныеСведенияПоТоварамЗаказовТорговыхПлощадок.СоздатьМенеджерЗаписи();
		ЗаполнитьЗначенияСвойств(МенеджерЗаписи, ИсточникНомераОтправления);
		МенеджерЗаписи.Прочитать();
		
		Если МенеджерЗаписи.Выбран() Тогда
			НомерОтправления = МенеджерЗаписи.НомерОтправления;
		КонецЕсли;
	КонецЕсли;
	
	Если ПустаяСтрока(НомерОтправления) Тогда
		Запрос = Новый Запрос;
		Запрос.Текст =
			"ВЫБРАТЬ
			|	СведенияПоТоварам.Заказ КАК Заказ,
			|	МАКСИМУМ(ВЫБОР
			|			КОГДА СведенияПоТоварам.НомерОтправления ПОДОБНО &ПостфиксОтправления
			|				ТОГДА СведенияПоТоварам.НомерОтправления
			|		КОНЕЦ) КАК МаксимальныйНомерНовогоОтправления,
			|	МАКСИМУМ(ЗаказыТорговыхПлощадок.НомерЗаказа) КАК НомерЗаказа
			|ИЗ
			|	РегистрСведений.ДополнительныеСведенияПоТоварамЗаказовТорговыхПлощадок КАК СведенияПоТоварам
			|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗаказыТорговыхПлощадок КАК ЗаказыТорговыхПлощадок
			|		ПО СведенияПоТоварам.Заказ = ЗаказыТорговыхПлощадок.Заказ
			|ГДЕ
			|	СведенияПоТоварам.Заказ = &Заказ
			|
			|СГРУППИРОВАТЬ ПО
			|	СведенияПоТоварам.Заказ";
		
		Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ПостфиксОтправления", """%"
			+ РегистрыСведений.ЗаказыТорговыхПлощадок.ПостфиксНовогоОтправления() + "%""");
		
		Запрос.УстановитьПараметр("Заказ", Заказ);
		
		УстановитьПривилегированныйРежим(Истина);
		Выборка = Запрос.Выполнить().Выбрать();
		УстановитьПривилегированныйРежим(Ложь);
		
		Если Выборка.Следующий() Тогда
			КоличествоОтправлений = РегистрыСведений.ЗаказыТорговыхПлощадок.ПорядковыйНомерНовогоОтправления(
										Выборка.МаксимальныйНомерНовогоОтправления);
			
			НомерОтправления = РегистрыСведений.ЗаказыТорговыхПлощадок.НомерНовогоОтправления(
									Выборка.НомерЗаказа,
									КоличествоОтправлений);
		КонецЕсли;
	КонецЕсли;

КонецПроцедуры

#КонецОбласти

#Область ОтменаСтрок

&НаСервереБезКонтекста
Процедура ПроверитьВозможностьОтменыСтрок(ОтменяемыеСтроки, СтрокиГруппы, Знач ЭкземплярыБезДокументовОтгрузки)

	Инд = ОтменяемыеСтроки.Количество() - 1;
	Пока Инд >= 0 Цикл
		ОтменяемаяСтрока = ОтменяемыеСтроки[Инд];
		Если ТипЗнч(ОтменяемаяСтрока) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда
			СтрокиГруппы.Добавить(ОтменяемаяСтрока);
			ОтменяемыеСтроки.Удалить(Инд);
		ИначеЕсли ЭкземплярыБезДокументовОтгрузки.НайтиПоЗначению(ОтменяемаяСтрока.ИдентификаторЭкземпляра) = Неопределено Тогда
			ОтменяемыеСтроки.Удалить(Инд);
		КонецЕсли;
		
		Инд = Инд - 1;
	КонецЦикла;

КонецПроцедуры

&НаКлиенте
Процедура ВопросОтменыЗавершение(Ответ, ОтменяемыеСтроки) Экспорт

	Если Ответ <> КодВозвратаДиалога.Да Тогда
		Возврат;
	КонецЕсли;
	
	Если ВидМаркетплейса = ПредопределенноеЗначение("Перечисление.ВидыМаркетплейсов.МаркетплейсOzon") Тогда
		ВыбратьПричинуОтмены(ОтменяемыеСтроки);
	ИначеЕсли ВидМаркетплейса = ПредопределенноеЗначение("Перечисление.ВидыМаркетплейсов.МаркетплейсЯндексМаркет") Тогда
		ПричинаПоУмолчанию = ИнтеграцияСЯндексМаркетВызовСервера.ПолучитьПричинуОтменыЗаказовПоУмолчанию();
		ВыборПричиныОтменыЗавершение(ПричинаПоУмолчанию, ОтменяемыеСтроки);
	КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ВыбратьПричинуОтмены(ОтменяемыеСтроки)

	ПараметрыОткрытия = Новый Структура;
	ПараметрыОткрытия.Вставить("УчетнаяЗапись", УчетнаяЗапись);
	
	ОповещениеЗавершения = Новый ОписаниеОповещения("ВыборПричиныОтменыЗавершение", ЭтотОбъект, ОтменяемыеСтроки);
	ОткрытьФорму(
		"РегистрСведений.ЗаказыТорговыхПлощадок.Форма.ВыборПричиныОтмены",
		ПараметрыОткрытия,
		ЭтотОбъект,
		,,,
		ОповещениеЗавершения);

КонецПроцедуры

&НаКлиенте
Процедура ВыборПричиныОтменыЗавершение(ВыбраннаяПричина, ОтменяемыеСтроки) Экспорт

	Если Не ЗначениеЗаполнено(ВыбраннаяПричина) Тогда
		Возврат;
	КонецЕсли;
	
	Результат = ОтменитьСтрокиЗаказаНаСервере(
		УчетнаяЗапись,
		Заказ,
		ВыбраннаяПричина,
		ОтменяемыеСтроки);
	
	УстановитьПараметрыСпискаНаКлиенте(Результат);
	
	Элементы.Список.Обновить();
	ПриАктивизацииСтрокиСписка();

КонецПроцедуры

&НаСервереБезКонтекста
Функция ОтменитьСтрокиЗаказаНаСервере(Знач УчетнаяЗапись, Знач Заказ, Знач ПричинаОтмены,
			Знач КлючиЗаписей = Неопределено)

	ИмяСобытия = ИнтеграцияСМаркетплейсамиСервер.СобытиеЖурналаРегистрации(УчетнаяЗапись);
	
	ОтменаВыполнена = РегистрыСведений.ЗаказыТорговыхПлощадок.ОтменитьЗаказ(
		Заказ,
		Неопределено,
		ПричинаОтмены,
		КлючиЗаписей,
		ИмяСобытия);
	
	Если ОтменаВыполнена Тогда
		РегистрыСведений.ДополнительныеСведенияПоТоварамЗаказовТорговыхПлощадок.ВернутьЭкземплярыВРодительскиеОтправления(
			Заказ,
			КлючиЗаписей,
			ИмяСобытия,
			Истина);
	КонецЕсли;
	
	ПараметрыЗаполнения =
		РегистрыСведений.ДополнительныеСведенияПоТоварамЗаказовТорговыхПлощадок.ПараметрыЗаполненияДанныхПоЭкземплярам();
	ПараметрыЗаполнения.ОбновлятьНомераГТДПоОтгрузке   = Ложь;
	ПараметрыЗаполнения.ОбновлятьНомераОтправлений     = Ложь;
	ПараметрыЗаполнения.ПроверитьЗаказы                = Истина;
	
	РезультатЗаполнения =
		РегистрыСведений.ДополнительныеСведенияПоТоварамЗаказовТорговыхПлощадок.ЗаполнитьДанныеПоЭкземплярам(
			Заказ,
			ПараметрыЗаполнения);
	
	РезультатПроверкиЗаказа =
		ИнтеграцияСМаркетплейсамиКлиентСервер.РезультатПроверкиЗаказа(Заказ, РезультатЗаполнения.РезультатПроверкиЗаказов);
	
	Возврат РезультатПроверкиЗаказа;

КонецФункции

#КонецОбласти

#Область ВыборЗначения

&НаКлиентеНаСервереБезКонтекста
Функция РезультатПроверкиУчетаНомеровГТД(ТекущиеДанные)

	ТекстСообщения = "";
	Если ТекущиеДанные.ТребуетсяНомерГТД Тогда
		Если Не ТекущиеДанные.ВестиУчетПоГТД Тогда
			ТекстСообщения =
				СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
					НСтр("ru = 'Для номенклатуры ""%1"" требуется вести учет операций с импортными товарами.'"),
					ТекущиеДанные.Номенклатура);
		ИначеЕсли ТекущиеДанные.ВестиУчетПоГТД И Не ЗначениеЗаполнено(ТекущиеДанные.ДокументОтгрузки) Тогда
			Если ТекущиеДанные.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовТорговыхПлощадок.ОжидаетСборки") Тогда
				ТекстСообщения = НСтр("ru = 'Номер ГТД будет заполнен автоматически из данных документа отгрузки после его оформления.'");
			Иначе
				ТекстСообщения = НСтр("ru = 'Номер ГТД заполнен автоматически по данным торговой площадки.'");
			КонецЕсли;
		ИначеЕсли ТекущиеДанные.ВестиУчетПоГТД И ЗначениеЗаполнено(ТекущиеДанные.ДокументОтгрузки) Тогда
			Если ЗначениеЗаполнено(ТекущиеДанные.НомерГТД) Тогда
				Если ТекущиеДанные.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовТорговыхПлощадок.ОжидаетСборки") Тогда
					ТекстСообщения = НСтр("ru = 'Номер ГТД заполнен автоматически из данных документа отгрузки.'");
				Иначе
					ТекстСообщения = НСтр("ru = 'Номер ГТД заполнен автоматически по данным торговой площадки.'");
				КонецЕсли;
			Иначе
				ТекстСообщения = НСтр("ru = 'В документе отгрузки не указан номер ГТД, который требуется для торговой площадки.'");
			КонецЕсли;
		КонецЕсли;
	ИначеЕсли ТекущиеДанные.ТребуетсяРНПТ Тогда
		Если Не ТекущиеДанные.ПрослеживаемыйТовар Тогда
			ТекстСообщения =
				СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
					НСтр("ru = 'Для номенклатуры ""%1"" требуется вести учет операций с прослеживаемыми товарами.'"),
					ТекущиеДанные.Номенклатура);
		ИначеЕсли ТекущиеДанные.ПрослеживаемыйТовар И Не ЗначениеЗаполнено(ТекущиеДанные.ДокументОтгрузки) Тогда
			Если ТекущиеДанные.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовТорговыхПлощадок.ОжидаетСборки") Тогда
				ТекстСообщения = НСтр("ru = 'РНПТ будет заполнен автоматически из данных документа отгрузки после его оформления.'");
			Иначе
				ТекстСообщения = НСтр("ru = 'РНПТ заполнен автоматически по данным торговой площадки.'");
			КонецЕсли;
		ИначеЕсли ТекущиеДанные.ПрослеживаемыйТовар И ЗначениеЗаполнено(ТекущиеДанные.ДокументОтгрузки) Тогда
			Если ЗначениеЗаполнено(ТекущиеДанные.НомерГТД) Тогда
				Если ТекущиеДанные.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовТорговыхПлощадок.ОжидаетСборки") Тогда
					ТекстСообщения = НСтр("ru = 'РНПТ заполнен автоматически из данных документа отгрузки.'");
				Иначе
					ТекстСообщения = НСтр("ru = 'РНПТ заполнен автоматически по данным торговой площадки.'");
				КонецЕсли;
			Иначе
				ТекстСообщения = НСтр("ru = 'В документе отгрузки не указан РНПТ, который требуется для торговой площадки.'");
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
	Возврат ТекстСообщения;

КонецФункции

&НаКлиенте
Функция РезультатПроверкиКодаМаркировки(ТекущиеДанные)

	ТекстСообщения = "";
	Если ТекущиеДанные.ТребуетсяМаркировка Тогда
		Если Не ЗначениеЗаполнено(ТекущиеДанные.ШтрихкодУпаковки) 
				И Не ЗначениеЗаполнено(ТекущиеДанные.ПолныйКодМаркировки)
				И Не ЗначениеЗаполнено(ТекущиеДанные.ДокументОтгрузки) Тогда
			ТекстСообщения =
				НСтр("ru = 'Код маркировки будет заполнен автоматически из данных документа отгрузки после его оформления, если товар там будет отсканирован.'");
		ИначеЕсли Не ЗначениеЗаполнено(ТекущиеДанные.ШтрихкодУпаковки) 
					И ЗначениеЗаполнено(ТекущиеДанные.ПолныйКодМаркировки) Тогда
			Штрихкод           = ШтрихкодированиеОбщегоНазначенияИСКлиентСервер.Base64ВШтрихкод(ТекущиеДанные.ПолныйКодМаркировки);
			ПримечаниеКРазбору = Неопределено;
			ДанныеРазбора      = РазборКодаМаркировкиИССлужебныйКлиент.РазобратьКодМаркировки(Штрихкод,, ПримечаниеКРазбору);
			
			Если ДанныеРазбора = Неопределено Тогда
				ТекстСообщения = НСтр("ru = 'Код маркировки был указан в личном кабинете торговой площадки, но не найден в информационной базе.'")
					+ " " + ПримечаниеКРазбору.ТекстОшибки;
			Иначе
				ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
					НСтр("ru = 'Код маркировки %1 был указан в личном кабинете торговой площадки, но не найден в информационной базе.'"),
					ДанныеРазбора.НормализованныйКодМаркировки);
			КонецЕсли;
		ИначеЕсли ЗначениеЗаполнено(ТекущиеДанные.ДокументОтгрузки) Тогда
			Если ЗначениеЗаполнено(ТекущиеДанные.ШтрихкодУпаковки) Тогда
				Если ТекущиеДанные.Статус = ПредопределенноеЗначение("Перечисление.СтатусыЗаказовТорговыхПлощадок.ОжидаетСборки") Тогда
					ТекстСообщения = НСтр("ru = 'Код маркировки заполнен автоматически из данных документа отгрузки.'");
				Иначе
					ТекстСообщения = НСтр("ru = 'Код маркировки заполнен автоматически по данным торговой площадки.'");
				КонецЕсли;
			Иначе
				ТекстСообщения =
					НСтр("ru = 'В документе отгрузки нужно отсканировать код маркировки потребительской упаковки, который требуется для торговой площадки.'");
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
	
	Возврат ТекстСообщения;

КонецФункции

&НаКлиенте
Процедура ВыборЗначенияЗавершение(Значение, ДопПараметры = Неопределено) Экспорт

	Если Значение = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Результат = ЗаписатьВыбранноеЗначениеНаСервере(
					Значение,
					ДопПараметры.ИмяРеквизита,
					ДопПараметры.ВыделенныеСтроки);
	
	Если Результат <> Неопределено Тогда
		УстановитьПараметрыСпискаНаКлиенте(Результат);
	КонецЕсли;
	
	Элементы.Список.Обновить();
	ПриАктивизацииСтрокиСписка();

КонецПроцедуры

&НаСервереБезКонтекста
Функция ЗаписатьВыбранноеЗначениеНаСервере(Значение, ИмяРеквизита, ВыделенныеСтроки)

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

КонецФункции

#КонецОбласти

#Область ОформлениеДокументовОтгрузки

&НаКлиенте
Процедура ОформитьДокументыОтгрузкиЗавершение(РезультатПроверкиЗаказов)
	
	УстановитьДоступностьКоманд(Истина);
	
	Если Не ЗначениеЗаполнено(РезультатПроверкиЗаказов) Тогда
		Возврат;
	КонецЕсли;
	
	РезультатПроверкиЗаказа = ИнтеграцияСМаркетплейсамиКлиентСервер.РезультатПроверкиЗаказа(Заказ, РезультатПроверкиЗаказов);
	УстановитьПараметрыСпискаНаКлиенте(РезультатПроверкиЗаказа);
	
	Элементы.СтраницыСостояния.ТекущаяСтраница = Элементы.ГруппаЗаполнениеЗавершено;
	
	ОповеститьОбИзменении(МенеджерЗаписи.ИсходныйКлючЗаписи);
	
	Элементы.Список.Обновить();
	ПриАктивизацииСтрокиСписка();
	
КонецПроцедуры

#КонецОбласти

#КонецОбласти

Связанные материалы