Доработка подбора в заказ поставщику УТ 11

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

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

Ранее я уже делал, чтобы номенклатура поставщика с пустым артикулом была менее приоритетна, чем с артикулом.

Далее у клиента появилось ЭДО и оно начало плодить дубли номенклатуры поставщика. Номенлатуру из ЭДО можно отобрать по строке «, шт» в наименовании. Ее сделал менее приоритетной.

В итоге код в форме подбора такой:


&Вместо("ЗаполнитьНоменклатуруПартнераПоНоменклатуре")
Процедура дор_ЗаполнитьНоменклатуруПартнераПоНоменклатуре(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения)
	
	ДанныеПоСтроке = ДанныеДляОбработкиСтроки("ЗаполнитьНоменклатуруПартнераПоНоменклатуре", КэшированныеЗначения);
	
	Если ДанныеПоСтроке <> Неопределено Тогда
		//Если есть артикул, берем эту номенклатуру и не продолжаем вызов
		Для Каждого Строка ИЗ ДанныеПоСтроке Цикл
			ТекущаяСтрока.НоменклатураПартнера = АналогСАртикулом(Строка.НоменклатураПартнера);
			Возврат; //не продолжаем
		КонецЦикла;
	КонецЕсли;
	
	ПродолжитьВызов(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);
	
КонецПроцедуры    

Функция АналогСАртикулом(НоменклатураПартнера) Экспорт    
	//Если нет артикула, берем с артикулом
	//Но в первую очередь сама исходная номенклатура партнера, которую подобрала 1с (приоритет 0)
	//во вторую очередь подгруженные из ЭДО (где есть запятая шт)
	З = Новый Запрос(
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
	|	НоменклатураКонтрагентов.Ссылка КАК Ссылка,
	|	ВЫБОР
	|		КОГДА НоменклатураКонтрагентов.Ссылка.Артикул <> """"
	|			ТОГДА ВЫБОР
	|					КОГДА НоменклатураКонтрагентов.Наименование ПОДОБНО ""%, шт%""
	|						ТОГДА 2
	|					КОГДА НоменклатураКонтрагентов.Ссылка = &НоменклатураПартнера
	|						ТОГДА 0
	|					ИНАЧЕ 1
	|				КОНЕЦ
	|		ИНАЧЕ 3
	|	КОНЕЦ КАК Приоритет
	|ИЗ
	|	Справочник.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
	|ГДЕ
	|	НоменклатураКонтрагентов.Владелец = ВЫРАЗИТЬ(&НоменклатураПартнера КАК Справочник.НоменклатураКонтрагентов).Владелец
	|	И НоменклатураКонтрагентов.Номенклатура = ВЫРАЗИТЬ(&НоменклатураПартнера КАК Справочник.НоменклатураКонтрагентов).Номенклатура
	|
	|УПОРЯДОЧИТЬ ПО
	|	Приоритет");              
	З.УстановитьПараметр("НоменклатураПартнера", НоменклатураПартнера);
	Выборка = З.Выполнить().Выбрать();
	Если Выборка.Следующий() Тогда
		Возврат Выборка.Ссылка;
	КонецЕсли;
КонецФункции

Среда: УТ 11.6.1.70 Объем: 0.6 час