Добавляем колонку «Валюта» в список документов по товару. УНФ 1.6

Клиент обратился с задачей — выводить колонку «Валюта» в списке документов по товару.

Сначала хотел залезть в запрос, но там сложный запрос по каждому виду документов.

Поступил проще — добавляю поле с валютой в таблицу документов и рассчитываю валюту после получения списка документов.

Рассчитываю не запросом, но там особой скорости не требуется, выводится по 100 документов.

Можно, конечно, оптимизировать и переписать на запрос, но не буду, не стоит того.

Расширение формы СписокДокументов обработки ДокументыПоКритериюОтбора выглядит так:


&НаСервере
Процедура дор_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)   
	дор_СоздатьПоляФормы();
КонецПроцедуры

&НаСервере
&После("ОбновитьТаблицуДокументовНаСервере")
Процедура дор_ОбновитьТаблицуДокументовНаСервере(ВсеСтроки)
	
	дор_СоздатьПоляФормы();
	
	Для Каждого Строка ИЗ ТаблицаДокументов Цикл
		Попытка      
			Строка.дор_Валюта = Строка.Документ.ВалютаДокумента;
		Исключение
		КонецПопытки;
	КонецЦикла;
КонецПроцедуры

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

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

Форма с валютой выглядит так:

Самое забавное, что 1С завела поле под валюту документа в этой таблице (с типом строка почему-то), но не выводит это поле:

И в запросе это в поле подставляется NULL, может рассчитывали в будущем доработать:

Среда: 1.6.27.167. Платформа: 8.3.20.1838. Объем: 0.8 час.

fixin

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

Читайте также:

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

Ваш адрес email не будет опубликован.