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