Добавляем колонки в список документов по товару. Розница 3.0
Я уже писал ранее, как дорабатывал список документов по товару в УНФ 1.6.
Теперь уже другой клиент обратился с задачей — выводить в список документов по товару колонки :
- Цена — цена в документе
- Количество — количество в документе
- Строки — строки документов, в которых находится товар.
Поступил аналогично, ведь Розница 3.0 выросла из УНФ 3.0, а та унаследовала от УНФ 1.6.
Расширение формы СписокДокументов обработки ДокументыПоКритериюОтбора выглядит так:
&НаСервере Процедура M_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка) //дор_СоздатьПоляФормы(); КонецПроцедуры &НаСервере &После("ОбновитьТаблицуДокументовНаСервере") Процедура дор_ОбновитьТаблицуДокументовНаСервере(ВсеСтроки) Если НЕ ЗначениеЗаполнено(Номенклатура) Тогда Возврат; КонецЕсли; дор_СоздатьПоляФормы(); Для Каждого Строка ИЗ ТаблицаДокументов Цикл МД = Метаданные.НайтиПоТипу(ТипЗнч(Строка.Документ)); Для Каждого МДТЧ из МД.ТабличныеЧасти Цикл ИмяТЧ = МДТЧ.Имя; Если МДТЧ.Реквизиты.Найти("Номенклатура") = Неопределено Тогда Продолжить; КонецЕсли; ТЧ = Строка.Документ[ИмяТЧ]; ИскСтроки = ТЧ.НайтиСтроки(Новый Структура("Номенклатура", Номенклатура)); //Только по тем строкам, где найдено Если ИскСтроки.Количество() = 0 Тогда Продолжить; КонецЕсли; Строки = ""; Цена = 0; Количество = 0; Для Каждого ИскСтрока ИЗ ИскСтроки Цикл Строки = Строки + ?(Строки = "", "", ",") + (ТЧ.Индекс(ИскСтрока) + 1); Если МДТЧ.Реквизиты.Найти("Цена") <> Неопределено Тогда Цена = ИскСтрока.Цена; КонецЕсли; Если МДТЧ.Реквизиты.Найти("Количество") <> Неопределено Тогда Количество = Количество + ИскСтрока.Количество; КонецЕсли; Строка.дор_Количество = Количество; Строка.дор_Цена = Цена; Строка.дор_Строки = Строки; КонецЦикла; Прервать; //Только по одной ТЧ КонецЦикла; Попытка Исключение КонецПопытки; КонецЦикла; КонецПроцедуры Процедура дор_СоздатьПоляФормы() Если Элементы.Найти("дор_Количество") = Неопределено Тогда Реквизиты = Новый Массив; Реквизиты.Добавить(Новый РеквизитФормы("дор_Количество", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15,3)), "ТаблицаДокументов", "Кол-во", Истина)); Реквизиты.Добавить(Новый РеквизитФормы("дор_Цена", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15,2)), "ТаблицаДокументов", "Закуп.цена", Истина)); Реквизиты.Добавить(Новый РеквизитФормы("дор_Строки", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(255)), "ТаблицаДокументов", "Строки", Истина)); ИзменитьРеквизиты(Реквизиты); Привязка = Элементы.ТаблицаДокументовВидОперации; Элемент = Элементы.Вставить("дор_Количество", Тип("ПолеФормы"), Привязка.Родитель, Привязка); Элемент.Вид = ВидПоляФормы.ПолеВвода; Элемент.АвтоМаксимальнаяШирина = ложь; Элемент.РастягиватьПоГоризонтали = ложь; Элемент.Ширина = 4; Элемент.ПутьКДанным = "ТаблицаДокументов.дор_Количество"; Элемент = Элементы.Вставить("дор_Строки", Тип("ПолеФормы"), Привязка.Родитель, Привязка); Элемент.Вид = ВидПоляФормы.ПолеВвода; Элемент.АвтоМаксимальнаяШирина = ложь; Элемент.РастягиватьПоГоризонтали = ложь; Элемент.Ширина = 4; Элемент.ПутьКДанным = "ТаблицаДокументов.дор_Строки"; Элемент = Элементы.Вставить("дор_Цена", Тип("ПолеФормы"), Привязка.Родитель, Привязка); Элемент.Вид = ВидПоляФормы.ПолеВвода; Элемент.АвтоМаксимальнаяШирина = ложь; Элемент.РастягиватьПоГоризонтали = ложь; Элемент.Ширина = 6; Элемент.ПутьКДанным = "ТаблицаДокументов.дор_Цена"; КонецЕсли; КонецПроцедуры
Код довольно универсальный, даже на метаданные обращаю внимание!
Доработанная форма списка документов выглядит так:
Среда: Розница 3.0.3.147. Платформа: 8.3.20.1710. Объем: 0.8 час.
Свежие комментарии