вторник, 5 июня 2012 г.

Корректировка отчета, сформированного на базе Универсального отчета (для УТ 10.3)

Иногда бывает необходимость в выводе дополнительных данных в отчетах, сформированных на базе Универсального Отчета.

В большинстве случаев все легко настраивается через кнопку "Настройка...", но недавно клиенты попросили меня добавить в отчет "Продажи" нумерацию контрагентов, которую я никак не смог(или не додумался) сделать стандартными средствами.

Исходные данные: Отчет "Продажи", группировка по полям "Менеджер (св-во Контрагент)", "Контрагент" и "Номенклатура".

Сперва выводится группировка по менеджерам, затем по контрагентам (покупателям) и потом по номенклатуре. Необходимо при выводе контрагентов добавить нумерацию, чтобы можно было видеть количество покупателей по каждому менеджеру.

Как делаем.
В модуле формы есть процедура ОбновитьОтчет(), в которой только одна строка: СформироватьОтчет(ЭлементыФормы.ПолеТабличногоДокументаРезультат).

после этой строки добавляем такой текст:
Попытка
Если УниверсальныйОтчет.ПостроительОтчета.ИзмеренияСтроки[0].Представление="Менеджер (св-во Контрагент)" и
УниверсальныйОтчет.ПостроительОтчета.ИзмеренияСтроки[1].Имя="Контрагент" тогда
НомерКА=0;
Свво = УниверсальныйОтчет.ПостроительОтчета.ИзмеренияСтроки[0].Имя;
Для НомСтр = 11 по ЭлементыФормы.ПолеТабличногоДокументаРезультат.ВысотаТаблицы цикл
Обл = ЭлементыФормы.ПолеТабличногоДокументаРезультат.Область(НомСтр, 2);
Если Обл.Расшифровка=Неопределено тогда
Продолжить;
КонецЕсли;
Если Обл.Расшифровка.Свойство(Свво) и НЕ Обл.Расшифровка.Свойство("Контрагент") тогда
НомерКА=0;
ИначеЕсли Обл.Расшифровка.Свойство("Контрагент") и НЕ Обл.Расшифровка.Свойство("Номенклатура") тогда
НомерКА = НомерКА + 1;
Обл.Текст = Строка(НомерКА) + ". " + Обл.Текст;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Исключение
Сообщить(ОписаниеОшибки(), СтатусСообщения.Важное);
КонецПопытки;


Готово.

Комментариев нет:

Отправить комментарий