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