Добавление полей Мин и Макс в подбор из заказа поставщика УТ 11.5

Клиент обратился с просьбой добавить поля Мин и Макс в форму подбора номенклатуры, которая вызывается из заказа поставщику.

Он уже использует регистр сведений «Товарные ограничения» для указания минимального и максимального запасов по товару.

Поэтому нужно просто вывести эти данные. Характеристики не используются.

Также нужно вывести цветом по определенным условиям, связанными с соотношением товара в наличии к минимальному и максимальному запасу.

Расширяю форму обработки ПодборТоваровВДокументЗакупки:


&НаСервере
Процедура дор_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
	
	
	//Добавляем колонки
	Если Элементы.Найти("дор_Мин") = Неопределено Тогда      

		//=== КОЛОНКИ ===
		
		Маркер = "СправочникНоменклатура.Ссылка КАК Ссылка";
		СписокНоменклатура.ТекстЗапроса = СтрЗаменить(
		СписокНоменклатура.ТекстЗапроса, Маркер,
		Маркер + " " + "
		|,
		|дор_ТО.дор_Мин КАК дор_Мин,
		|дор_ТО.дор_Макс КАК дор_Макс,
		|ВЫБОР КОГДА дор_ТО.дор_Мин ЕСТЬ NULL Тогда Истина ИНАЧЕ Ложь КОНЕЦ КАК дор_Пусто 
		|");

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

		//Сообщить(СписокНоменклатура.ТекстЗапроса);
		
		СписокНоменклатура.УстановитьОбязательноеИспользование("дор_Мин", Истина);
		СписокНоменклатура.УстановитьОбязательноеИспользование("дор_Макс", Истина);
		СписокНоменклатура.УстановитьОбязательноеИспользование("дор_Пусто", Истина);
		
		//Реквизиты = Новый Массив;
		//Реквизиты.Добавить(Новый РеквизитФормы("дор_Мин", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(17,0)), "ТаблицаДокументов", "Кол-во", Истина));
		//ИзменитьРеквизиты(Реквизиты);
		
		Привязка = Элементы.СписокРасширенныйПоискНоменклатураНаименование;
		
		
		Элемент = Элементы.Вставить("дор_Мин", Тип("ПолеФормы"), Привязка.Родитель, Привязка);
		Элемент.Вид = ВидПоляФормы.ПолеВвода;
		Элемент.АвтоМаксимальнаяШирина = ложь;
		Элемент.РастягиватьПоГоризонтали = ложь;
		Элемент.Ширина = 4;
		Элемент.ПутьКДанным = "СписокНоменклатура.дор_Мин";   
		Элемент.Заголовок = "Мин";
		

		Элемент = Элементы.Вставить("дор_Макс", Тип("ПолеФормы"), Привязка.Родитель, Привязка);
		Элемент.Вид = ВидПоляФормы.ПолеВвода;
		Элемент.АвтоМаксимальнаяШирина = ложь;
		Элемент.РастягиватьПоГоризонтали = ложь;
		Элемент.Ширина = 4;
		Элемент.ПутьКДанным = "СписокНоменклатура.дор_Макс";   
		Элемент.Заголовок = "Макс";         
		
		//=== УСЛОВНОЕ ОФОРМЛЕНИЕ ===
		
		
		//КРАСНЫЙ 
		
		ЭлементОформления = УсловноеОформление.Элементы.Добавить();
		
		ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокНоменклатура.ВНаличииОстаток");
		ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно; 
		ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных("СписокНоменклатура.дор_Мин"); 
		ЭлементОтбора.Использование = Истина;
		
		ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокНоменклатура.дор_Пусто");
		ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; 
		ЭлементОтбора.ПравоеЗначение = ложь; 
		ЭлементОтбора.Использование = Истина;

		
		//https://its.1c.ru/db/metod8dev/content/3450/hdoc
		//ГруппаОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));  
		//ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаНе;


		Элемент = ЭлементОформления.Оформление.Элементы.Найти("ЦветФона");
		Элемент.Значение = WebЦвета.Розовый;
		Элемент.Использование = Истина;    
		
		ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
		ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("СписокРасширенныйПоискНоменклатураНаименование");
		ПолеОформления.Использование = Истина;

		
		//ЗЕЛЕНЫЙ
		
		ЭлементОформления = УсловноеОформление.Элементы.Добавить();
		
		ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокНоменклатура.ВНаличииОстаток");
		ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше; 
		ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных("СписокНоменклатура.дор_Макс"); 
		ЭлементОтбора.Использование = Истина;

		ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокНоменклатура.дор_Макс");
		ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено; 
		ЭлементОтбора.Использование = Истина;
		
		Элемент = ЭлементОформления.Оформление.Элементы.Найти("ЦветФона");
		Элемент.Значение = WebЦвета.БледноЗеленый;
		Элемент.Использование = Истина;    
		
		ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить();
		ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("СписокРасширенныйПоискНоменклатураНаименование");
		ПолеОформления.Использование = Истина;

	КонецЕсли;

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

Статью решил написать еще и потому, что у меня нет на сайте примера кода по доработке списка номенклатуры.

Есть один нюанс — код запроса может подменяться при работе со списком. В УТ11 есть функция, которая меняет код запроса, логично привязываться к ней. Но у клиента не работает отладка (на сервере), поэтому не стал искать.

Также проверяю на заполненность порогов, поэтому добавил поле «Пусто».

Среда: УТ 11.5.22.83

image_pdfimage_print

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Вам может также понравиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *