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