|
Добавление свойств и категорий в универсальный отчет с источников данных Таблица значений | ☑ | ||
---|---|---|---|---|
0
GodCratOs
23.03.20
✎
18:14
|
Здравствуйте. Делаю отчет на основе универсального, где источник данных это таблица значений, которую я формирую с помощью запроса в отдельной функции. Все работает, но нужно добавить свойства и категории. Может знает кто, как это сделать?
Процедура УстановитьНачальныеНастройки(ДополнительныеПараметры = Неопределено) Экспорт УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним); УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь; УниверсальныйОтчет.ОтрицательноеКрасным = Истина; УниверсальныйОтчет.ВыводитьОбщиеИтоги = Ложь; УниверсальныйОтчет.мВыбиратьИспользованиеСвойств = Истина; ТаблицаДанных = СформироватьТаблицуДанных(); // здесь задаем только структуру таблицы, без самих данных ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаДанных); ИсточникДанных.Колонки.Регистратор.Измерение = Истина; ИсточникДанных.Колонки.Период.Измерение = Истина; ИсточникДанных.Колонки.Контрагент.Измерение = Истина; ИсточникДанных.Колонки.Организация.Измерение = Истина; ИсточникДанных.Колонки.ДоговорКонтрагента.Измерение = Истина; ИсточникДанных.Колонки.ОсновнойМенеджерПокупателя.Измерение = Истина; ИсточникДанных.Колонки.ОтсрочкаОплаты.Итог = "Максимум(ОтсрочкаОплаты)"; ИсточникДанных.Колонки.ОстатокДолгаНаНачалоПериода.Итог = "Сумма(ОстатокДолгаНаНачалоПериода)"; ИсточникДанных.Колонки.Отгружено.Итог = "Максимум(Отгружено)"; ИсточникДанных.Колонки.Оплачено.Итог = "Максимум(Оплачено)"; ИсточникДанных.Колонки.ОстатокДолгаНаКонецПериода.Итог = "Сумма(ОстатокДолгаНаКонецПериода)"; ИсточникДанных.Колонки.ОстатокПросроченогоДолгаКонтрагентаВВалюте.Итог = "Сумма(ОстатокПросроченогоДолгаКонтрагентаВВалюте)"; ИсточникДанных.Колонки.ОстатокПросроченногоДолгаКонтрагентаВДнях.Итог = "Сумма(ОстатокПросроченногоДолгаКонтрагентаВДнях)"; ИсточникДанных.Колонки.НеБолее10Дней.Итог = "Максимум(НеБолее10Дней)"; ИсточникДанных.Колонки.От10До30Дней.Итог = "Максимум(От10До30Дней)"; ИсточникДанных.Колонки.От30До60Дней.Итог = "Максимум(От30До60Дней)"; ИсточникДанных.Колонки.Более60Дней.Итог = "Максимум(Более60Дней)"; УниверсальныйОтчет.ПостроительОтчета.ИсточникДанных = ИсточникДанных; УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить( "Регистратор", "Регистратор"); УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить( "Период", "Период"); УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить( "Контрагент", "Контрагент"); УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить( "Организация", "Организация"); УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить( "ДоговорКонтрагента", "Договор контрагента"); УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вставить( "ОсновнойМенеджерПокупателя", "Основной менеджер покупателя"); УниверсальныйОтчет.ДобавитьПоказатель("ОтсрочкаОплаты", "Отсрочка оплаты", Истина); УниверсальныйОтчет.ДобавитьПоказатель("ОстатокДолгаНаНачалоПериода", "Остаток долга на начало периода", Истина, "ЧЦ=15; ЧДЦ=2", "СуммаВзаиморасчетов", "Сумма взаиморасчетов"); УниверсальныйОтчет.ДобавитьПоказатель("Отгружено", "Отгружено", Истина, "ЧЦ=15; ЧДЦ=2", "СуммаВзаиморасчетов", "Сумма взаиморасчетов"); УниверсальныйОтчет.ДобавитьПоказатель("Оплачено", "Оплачено", Истина, "ЧЦ=15; ЧДЦ=2", "СуммаВзаиморасчетов", "Сумма взаиморасчетов"); УниверсальныйОтчет.ДобавитьПоказатель("ОстатокДолгаНаКонецПериода", "Остаток долга на конец периода", Истина, "ЧЦ=15; ЧДЦ=2", "СуммаВзаиморасчетов", "Сумма взаиморасчетов"); УниверсальныйОтчет.ДобавитьПоказатель("ОстатокПросроченогоДолгаКонтрагентаВВалюте", "Остаток просроченого долга контрагента в валюте", Истина, "ЧЦ=15; ЧДЦ=2"); УниверсальныйОтчет.ДобавитьПоказатель("ОстатокПросроченногоДолгаКонтрагентаВДнях", "Остаток просроченного долга контрагента в днях", Истина); УниверсальныйОтчет.ДобавитьПоказатель("НеБолее10Дней", "Не более 10 дней", Истина, "ЧЦ=15; ЧДЦ=2", "ВтчПоСрокамВозникновенияДолга", "В т.ч. по срокам возникновения долга:"); УниверсальныйОтчет.ДобавитьПоказатель("От10До30Дней", "От 10 до 30 дней", Истина, "ЧЦ=15; ЧДЦ=2", "ВтчПоСрокамВозникновенияДолга", "В т.ч. по срокам возникновения долга:"); УниверсальныйОтчет.ДобавитьПоказатель("От30До60Дней", "От 30 до 60 дней", Истина, "ЧЦ=15; ЧДЦ=2", "ВтчПоСрокамВозникновенияДолга", "В т.ч. по срокам возникновения долга:"); УниверсальныйОтчет.ДобавитьПоказатель("Более60Дней", "Более 60 дней", Истина, "ЧЦ=15; ЧДЦ=2", "ВтчПоСрокамВозникновенияДолга", "В т.ч. по срокам возникновения долга:"); УниверсальныйОтчет.ДобавитьОтбор("ОсновнойМенеджерПокупателя"); УниверсальныйОтчет.ДобавитьОтбор("Контрагент"); УниверсальныйОтчет.ДобавитьОтбор("ДоговорКонтрагента"); УниверсальныйОтчет.ДобавитьОтбор("Регистратор"); УниверсальныйОтчет.УстановитьПредставленияПолей(УниверсальныйОтчет.мСтруктураПредставлениеПолей, УниверсальныйОтчет.ПостроительОтчета); УниверсальныйОтчет.УстановитьНачальныеНастройки(Ложь); КонецПроцедуры // УстановитьНачальныеНастройки() Процедура СформироватьОтчет(ТабличныйДокумент) Экспорт // Перед формирование отчета можно установить необходимые параметры универсального отчета. Если Не ЗначениеЗаполнено(УниверсальныйОтчет.ДатаНач) ИЛИ Не ЗначениеЗаполнено(УниверсальныйОтчет.ДатаКон) Тогда Предупреждение("Не задан период отчета!"); Возврат; КонецЕсли; ТаблицаДанных.Очистить(); ЗаполнитьТаблицуДанных(); // а в этой процедуре заполняем таблицу ТаблицаДанных чем нам надо. . УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("КонДата", КонецДня(Дата(УниверсальныйОтчет.ДатаКон))); УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить("НачДата", Дата(УниверсальныйОтчет.ДатаНач)); УниверсальныйОтчет.СформироватьОтчет(ТабличныйДокумент); КонецПроцедуры // СформироватьОтчет() Функция СформироватьТаблицуДанных() // для формирования структуры таблицы ТаблицаДанных = Новый ТаблицаЗначений; КвалификаторыЧисла = Новый КвалификаторыЧисла(10, 2); ТаблицаДанных.Колонки.Добавить("Регистратор" ,Новый ОписаниеТипов("Строка")); ТаблицаДанных.Колонки.Добавить("Период" ,Новый ОписаниеТипов("Дата")); ТаблицаДанных.Колонки.Добавить("ДоговорКонтрагента" ,Новый ОписаниеТипов("СправочникСсылка.ДоговорыКонтрагентов")); ТаблицаДанных.Колонки.Добавить("Контрагент" ,Новый ОписаниеТипов("СправочникСсылка.Контрагенты")); ТаблицаДанных.Колонки.Добавить("Организация" ,Новый ОписаниеТипов("СправочникСсылка.Организации")); ТаблицаДанных.Колонки.Добавить("ОсновнойМенеджерПокупателя" ,Новый ОписаниеТипов("СправочникСсылка.Пользователи")); ТаблицаДанных.Колонки.Добавить("ОстатокДолгаНаНачалоПериода" ,Новый ОписаниеТипов("Число",КвалификаторыЧисла)); ТаблицаДанных.Колонки.Добавить("ОстатокДолгаНаКонецПериода" ,Новый ОписаниеТипов("Число",КвалификаторыЧисла)); ТаблицаДанных.Колонки.Добавить("Отгружено" ,Новый ОписаниеТипов("Число",КвалификаторыЧисла)); ТаблицаДанных.Колонки.Добавить("Оплачено" ,Новый ОписаниеТипов("Число",КвалификаторыЧисла)); ТаблицаДанных.Колонки.Добавить("НеБолее10Дней" ,Новый ОписаниеТипов("Число",КвалификаторыЧисла)); ТаблицаДанных.Колонки.Добавить("От10До30Дней" ,Новый ОписаниеТипов("Число", КвалификаторыЧисла)); ТаблицаДанных.Колонки.Добавить("От30До60Дней" ,Новый ОписаниеТипов("Число",КвалификаторыЧисла)); ТаблицаДанных.Колонки.Добавить("Более60Дней" ,Новый ОписаниеТипов("Число",КвалификаторыЧисла)); ТаблицаДанных.Колонки.Добавить("ОстатокПросроченогоДолгаКонтрагентаВВалюте",Новый ОписаниеТипов("Число",КвалификаторыЧисла)); ТаблицаДанных.Колонки.Добавить("ОстатокПросроченногоДолгаКонтрагентаВДнях" ,Новый ОписаниеТипов("Число")); ТаблицаДанных.Колонки.Добавить("ОтсрочкаОплаты" ,Новый ОписаниеТипов("Число")); Возврат ТаблицаДанных; КонецФункции |
|||
1
Бизон
23.03.20
✎
19:30
|
Я вообще не понял
|
|||
2
GodCratOs
24.03.20
✎
10:56
|
Нужно добавить свойства и категории, но у меня источник данных это таблица значений
|
|||
3
VS-1976
24.03.20
✎
12:05
|
Попробуй добавить свойства к примеру из отчёта ТоварыВРезервеНаСкладах УТ 10.3:
// В универсальном отчете включен флаг использования свойств и категорий. Если УниверсальныйОтчет.ИспользоватьСвойстваИКатегории Тогда // Добавление свойств и категорий поля запроса в таблицу полей. // Необходимо вызывать для каждого поля запроса, предоставляющего возможность использования свойств и категорий. // УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля(<ПсевдонимТаблицы>.<Поле> , <ПсевдонимПоля>, <Представление>, <Назначение>); УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля( "РегЗаказы.Номенклатура" , "Номенклатура", "Номенклатура", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура); УниверсальныйОтчет.ДобавитьСвойстваИКатегорииДляПоля( "РегЗаказы.ХарактеристикаНоменклатуры" , "ХарактеристикаНоменклатуры", "Характеристика номенклатуры", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_ХарактеристикиНоменклатуры); // Добавление свойств и категорий в исходный текст запроса. УниверсальныйОтчет.ДобавитьВТекстЗапросаСвойстваИКатегории(ТекстЗапроса); КонецЕсли; |
|||
4
VS-1976
24.03.20
✎
12:09
|
(3) Вот текст запроса ( там в тексте указано куда генерить своства и категории
ТекстЗапроса = " |ВЫБРАТЬ РАЗРЕШЕННЫЕ | РегЗаказы.Склад КАК Склад, | ПРЕДСТАВЛЕНИЕ(РегЗаказы.Склад), | РегЗаказы.ДокументРезерва КАК ДокументРезерва, | ПРЕДСТАВЛЕНИЕ(РегЗаказы.ДокументРезерва), | РегЗаказы.Номенклатура КАК Номенклатура, | ПРЕДСТАВЛЕНИЕ(РегЗаказы.Номенклатура), | РегЗаказы.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ПРЕДСТАВЛЕНИЕ(РегЗаказы.ХарактеристикаНоменклатуры), | РегЗаказы.СерияНоменклатуры КАК СерияНоменклатуры, | ПРЕДСТАВЛЕНИЕ(РегЗаказы.СерияНоменклатуры), | РегЗаказы.КоличествоОстаток КАК КоличествоОстаток | //ПОЛЯ_СВОЙСТВА | //ПОЛЯ_КАТЕГОРИИ |{ВЫБРАТЬ | Склад.*, | ДокументРезерва.*, | Номенклатура.*, | ХарактеристикаНоменклатуры.*, | СерияНоменклатуры.*, | КоличествоОстаток | //ПСЕВДОНИМЫ_СВОЙСТВА | //ПСЕВДОНИМЫ_КАТЕГОРИИ |} |ИЗ | РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаКон, ) КАК РегЗаказы | //СОЕДИНЕНИЯ |{ГДЕ | РегЗаказы.Склад.*, | РегЗаказы.ДокументРезерва.*, | РегЗаказы.Номенклатура.*, | РегЗаказы.ХарактеристикаНоменклатуры.*, | РегЗаказы.СерияНоменклатуры.*, | РегЗаказы.КоличествоОстаток | //УСЛОВИЯ_СВОЙСТВА | //УСЛОВИЯ_КАТЕГОРИИ |} |{УПОРЯДОЧИТЬ ПО | Склад.*, | ДокументРезерва.*, | Номенклатура.*, | ХарактеристикаНоменклатуры.*, | СерияНоменклатуры.*, | КоличествоОстаток | //ПСЕВДОНИМЫ_СВОЙСТВА | //ПСЕВДОНИМЫ_КАТЕГОРИИ |} |ИТОГИ | СУММА(КоличествоОстаток) | //ИТОГИ_СВОЙСТВА | //ИТОГИ_КАТЕГОРИИ |ПО | ОБЩИЕ |{ИТОГИ ПО | Склад.*, | ДокументРезерва.*, | Номенклатура.*, | ХарактеристикаНоменклатуры.*, | СерияНоменклатуры.* | //ПСЕВДОНИМЫ_СВОЙСТВА | //ПСЕВДОНИМЫ_КАТЕГОРИИ |} |АВТОУПОРЯДОЧИВАНИЕ"; |
|||
5
VS-1976
24.03.20
✎
12:12
|
(4) // Установка типов значений свойств в отборах отчета
УниверсальныйОтчет.УстановитьТипыЗначенийСвойствДляОтбора(); Так же, по желанию, можно установить возможность отбора по свойствам |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |