Добавление колонки закупочной цены в справочник Номенклатура УТ 11.5

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

Запрос динамического списка номенклатуры имеет вид:

ВЫБРАТЬ
	СпрНоменклатураПереопределяемый.Ссылка КАК Ссылка,
	СпрНоменклатураПереопределяемый.Код КАК Код,
	...	
ИЗ
	Справочник.Номенклатура КАК СпрНоменклатураПереопределяемый
ГДЕ
	НЕ СпрНоменклатураПереопределяемый.ЭтоГруппа
	...

Но после создания на сервере таблица называется уже СпрНоменклатура а не СпрНоменклатураПереопределяемый.

Если бы речь шла о добавлении в форму списка подбора, нужно было бы менять текст запроса в процедуре ПодборТоваровСервер.УстановитьТекстыЗапросовСписковФормыПодбора.

Доработка несложная:


&НаСервере
Процедура дор_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)  
	
	//Добавляем поля
	Маркер = "СпрНоменклатура.Ссылка КАК Ссылка,";
	СписокНоменклатура.ТекстЗапроса = СтрЗаменить(СписокНоменклатура.ТекстЗапроса, Маркер, Маркер + "
	|ЕСТЬNull(ТЦеныЗакупочные.Цена, 0) КАК дор_ЦенаЗакупочная,
	|");

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


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

Функция дор_ДобавитьКолонкуСпискаНоменклатуры(Форма, Имя, Заголовок, ЭлементСписка, ПолеПеред, Ширина, ПутьКДанным = Неопределено) Экспорт

	
	Элемент = Форма.Элементы.Вставить(Имя, Тип("ПолеФормы"), ЭлементСписка, ПолеПеред);
    Элемент.Вид = ВидПоляФормы.ПолеВвода;
	Если ПутьКДанным = Неопределено Тогда
    	Элемент.ПутьКДанным = "СписокНоменклатура." + Имя;
	Иначе
    	Элемент.ПутьКДанным = ПутьКДанным;
	КонецЕсли;
	
	Элемент.АвтоМаксимальнаяШирина = ложь;
	Элемент.РастягиватьПоГоризонтали = ложь;
	//Элемент.КартинкаШапки = БиблиотекаКартинок["_" + Имя + "Шапка"];
	//Элемент.ОтображатьВШапке = ложь;
	Элемент.Ширина = Ширина;
	//Элемент.МаксимальнаяШирина = 1;
	Элемент.Заголовок = Заголовок;  
	
	Возврат Элемент;

КонецФункции


Среда: УТ 11.5.22.83. Платформа: 8.3.27.1644