Добавление полей Мин и Макс в подбор из заказа поставщика УТ 11.5
Клиент обратился с просьбой добавить поля Мин и Макс в форму подбора номенклатуры, которая вызывается из заказа поставщику.
Он уже использует регистр сведений «Товарные ограничения» для указания минимального и максимального запасов по товару.
Поэтому нужно просто вывести эти данные. Характеристики не используются.
Также нужно вывести цветом по определенным условиям, связанными с соотношением товара в наличии к минимальному и максимальному запасу.

Расширяю форму обработки ПодборТоваровВДокументЗакупки:
&НаСервере Процедура дор_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка) //Добавляем колонки Если Элементы.Найти("дор_Мин") = Неопределено Тогда //=== КОЛОНКИ === Маркер = "СправочникНоменклатура.Ссылка КАК Ссылка"; СписокНоменклатура.ТекстЗапроса = СтрЗаменить( СписокНоменклатура.ТекстЗапроса, Маркер, Маркер + " " + " |, |дор_ТО.дор_Мин КАК дор_Мин, |дор_ТО.дор_Макс КАК дор_Макс, |ВЫБОР КОГДА дор_ТО.дор_Мин ЕСТЬ NULL Тогда Истина ИНАЧЕ Ложь КОНЕЦ КАК дор_Пусто |"); Маркер = "Справочник.Номенклатура КАК СправочникНоменклатура"; СписокНоменклатура.ТекстЗапроса = СтрЗаменить( СписокНоменклатура.ТекстЗапроса, Маркер, Маркер + ", " + " |ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | МИНИМУМ(Т.МинимальноеКоличествоЗапаса) КАК дор_Мин, | МАКСИМУМ(Т.МаксимальноеКоличествоЗапаса) КАК дор_Макс, | Т.Номенклатура КАК Номенклатура |ИЗ | РегистрСведений.ТоварныеОграничения КАК Т |ГДЕ | Т.МетодОбеспеченияПотребностей = ЗНАЧЕНИЕ(Перечисление.МетодыОбеспеченияПотребностей.ПоддержаниеЗапасаМинМакс) | |СГРУППИРОВАТЬ ПО | Т.Номенклатура) КАК дор_ТО |ПО (дор_ТО.Номенклатура = СправочникНоменклатура.Ссылка) |"); //Сообщить(СписокНоменклатура.ТекстЗапроса); СписокНоменклатура.УстановитьОбязательноеИспользование("дор_Мин", Истина); СписокНоменклатура.УстановитьОбязательноеИспользование("дор_Макс", Истина); СписокНоменклатура.УстановитьОбязательноеИспользование("дор_Пусто", Истина); //Реквизиты = Новый Массив; //Реквизиты.Добавить(Новый РеквизитФормы("дор_Мин", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(17,0)), "ТаблицаДокументов", "Кол-во", Истина)); //ИзменитьРеквизиты(Реквизиты); Привязка = Элементы.СписокРасширенныйПоискНоменклатураНаименование; Элемент = Элементы.Вставить("дор_Мин", Тип("ПолеФормы"), Привязка.Родитель, Привязка); Элемент.Вид = ВидПоляФормы.ПолеВвода; Элемент.АвтоМаксимальнаяШирина = ложь; Элемент.РастягиватьПоГоризонтали = ложь; Элемент.Ширина = 4; Элемент.ПутьКДанным = "СписокНоменклатура.дор_Мин"; Элемент.Заголовок = "Мин"; Элемент = Элементы.Вставить("дор_Макс", Тип("ПолеФормы"), Привязка.Родитель, Привязка); Элемент.Вид = ВидПоляФормы.ПолеВвода; Элемент.АвтоМаксимальнаяШирина = ложь; Элемент.РастягиватьПоГоризонтали = ложь; Элемент.Ширина = 4; Элемент.ПутьКДанным = "СписокНоменклатура.дор_Макс"; Элемент.Заголовок = "Макс"; //=== УСЛОВНОЕ ОФОРМЛЕНИЕ === //КРАСНЫЙ ЭлементОформления = УсловноеОформление.Элементы.Добавить(); ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокНоменклатура.ВНаличииОстаток"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно; ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных("СписокНоменклатура.дор_Мин"); ЭлементОтбора.Использование = Истина; ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокНоменклатура.дор_Пусто"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = ложь; ЭлементОтбора.Использование = Истина; //https://its.1c.ru/db/metod8dev/content/3450/hdoc //ГруппаОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных")); //ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаНе; Элемент = ЭлементОформления.Оформление.Элементы.Найти("ЦветФона"); Элемент.Значение = WebЦвета.Розовый; Элемент.Использование = Истина; ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить(); ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("СписокРасширенныйПоискНоменклатураНаименование"); ПолеОформления.Использование = Истина; //ЗЕЛЕНЫЙ ЭлементОформления = УсловноеОформление.Элементы.Добавить(); ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокНоменклатура.ВНаличииОстаток"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше; ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных("СписокНоменклатура.дор_Макс"); ЭлементОтбора.Использование = Истина; ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокНоменклатура.дор_Макс"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено; ЭлементОтбора.Использование = Истина; Элемент = ЭлементОформления.Оформление.Элементы.Найти("ЦветФона"); Элемент.Значение = WebЦвета.БледноЗеленый; Элемент.Использование = Истина; ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить(); ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("СписокРасширенныйПоискНоменклатураНаименование"); ПолеОформления.Использование = Истина; КонецЕсли; КонецПроцедуры
Статью решил написать еще и потому, что у меня нет на сайте примера кода по доработке списка номенклатуры.
Есть один нюанс — код запроса может подменяться при работе со списком. В УТ11 есть функция, которая меняет код запроса, логично привязываться к ней. Но у клиента не работает отладка (на сервере), поэтому не стал искать.
Также проверяю на заполненность порогов, поэтому добавил поле «Пусто».
Среда: УТ 11.5.22.83




Свежие комментарии