0
- 07.08.2016 - 08:11
|
Уважаемые коллеги, киньте пожалуйста примером использования ТЗ в качестве источника данных в Построителе. Мне нужно в Универсальный отчёт подсунуть ТЗ. | |
1
- 07.08.2016 - 09:56
| в скд - внешний источник данных. Построитель это из 8.0 устарело давно | |
2
- 07.08.2016 - 12:49
|
я знаю, как это сделать в СКД но СКД не хочу. В УТ 10.3 Универсальный отчёт - самый удобный инструмент для отчётов, хочу в нём сделать. В отчётах на СКД есть ощутимый косячище - если у пользователей есть сохранённые настройки (а они у нас есть, по 3-5 настроек у каждого), любое изменение схемы компоновки оборачивается гемором. То есть, любая доработка отчёта это всегда приключение с введением. Может, в других конфигах (которые на УФ) это не так, но у нас так. | |
3
- 07.08.2016 - 14:41
| ВЫБРАТЬ ДоговорыКонтрагентов.Ссылка КАК Договор ПОМЕСТИТЬ ТаблДоговоров ИЗ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ХозрасчетныйОбороты.Субконто2 КАК ДоговорОбороты, ХозрасчетныйОбороты.СуммаОборотДт КАК Расход, ХозрасчетныйОбороты.СуммаОборотКт КАК Приход ПОМЕСТИТЬ ТаблДоговоровОбороты ИЗ РегистрБухгалтерии.Хозрасчетный.Обороты(, , , **(Счет = &Счет)**, , , **(КорСчет = &КорСчет)**, ) КАК ХозрасчетныйОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТаблДоговоров.Договор, ТаблДоговоровОбороты.ДоговорОбороты, ТаблДоговоровОбороты.Расход, ТаблДоговоровОбороты.Приход ИЗ ТаблДоговоров КАК ТаблДоговоров ЛЕВОЕ СОЕДИНЕНИЕ ТаблДоговоровОбороты КАК ТаблДоговоровОбороты ПО ТаблДоговоров.Договор = ТаблДоговоровОбороты.ДоговорОбороты | |
4
- 07.08.2016 - 14:53
| Насколько я знаю. источником данных в универсальном отчете может быть либо регистр, либо запрос. Поэтому видимо пишешь запрос к таблице значений, как в (3) | |
5
- 08.08.2016 - 02:28
|
(3) вопрос был не про то, как пользоваться временными таблицами. Ещё раз: есть заполненная ТЗ, её нужно подпихнуть в Построитель Универсального отчёта и сделать к ней запрос (соединив с другими таблицами). (4) вопрос именно в том, как в Универсальном отчёте организовать запрос к ТЗ ? BMA, брат, где ты? Я знаю, ты конкретно раскуривал тему! Помоги, брат! Эти люди даже не понимают, о чём я спрашиваю. | |
6
- 08.08.2016 - 04:59
| В универсальном отчете есть штатные процедуры и функции для загрузки таких данных в построитель. Погугли. | |
7
- 08.08.2016 - 06:16
|
погуглила ещё до создания ветки нужен конкретный пример | |
8
- 08.08.2016 - 08:51
|
2(5) да все там просто. Добавляем переменную: Перем ТаблицаДанных; // в ней будут данные для формирования отчета В Процедуре УстановитьначальныеНастройки() пишем: ТаблицаДанных = СформироватьТаблицуДанных(); // здесь задаем только структуру таблицы, без самих данных ИсточникДанных=Новый ОписаниеИсточникаДанных(ТаблицаДанных); ИсточникДанных.Колонки.Сотрудник.Измерение=Истина; ИсточникДанных.Колонки.Подразделение.Измерение=Ист ина; ИсточникДанных.Колонки.Работал.Итог="СУММА(Работал )"; ИсточникДанных.Колонки.Отпуск.Итог="СУММА(Отпуск)" ; УниверсальныйОтчет.ВыводитьОбщиеИтоги = Истина; УниверсальныйОтчет.ПостроительОтчета.ИсточникДанны х=ИсточникДанных; УниверсальныйОтчет.мНазваниеОтчета = СокрЛП(ЭтотОбъект.Метаданные().Синоним); УниверсальныйОтчет.мВыбиратьИмяРегистра = Ложь; УниверсальныйОтчет.мВыбиратьИспользованиеСвойств = Ложь; УниверсальныйОтчет.ПоказыватьЗаголовок=Истина; УниверсальныйОтчет.мНазваниеОтчета="Отработано"; УниверсальныйОтчет.ДобавитьПоказатель("Работал","Р аботал", Истина); УниверсальныйОтчет.ДобавитьПоказатель("Отпуск","От пуск", Истина); УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вс тавить("Сотрудник","Сотрудник"); УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вс тавить("Подразделение","Подразделение"); УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вс тавить("Работал","Работал"); УниверсальныйОтчет.мСтруктураПредставлениеПолей.Вс тавить("Отпуск","Отпуск"); УниверсальныйОтчет.УстановитьПредставленияПолей(Ун иверсальныйОтчет.мСтруктураПредставлениеПолей, УниверсальныйОтчет.ПостроительОтчета); УниверсальныйОтчет.ПостроительОтчета.ИзмеренияСтро ки.Очистить(); УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Подраз деление"); УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Сотруд ник"); УниверсальныйОтчет.ПостроительОтчета.ИзмеренияКоло нки.Очистить(); УниверсальныйОтчет.ДобавитьОтбор("Сотрудник"); УниверсальныйОтчет.ДобавитьОтбор("Подразделение"); УниверсальныйОтчет.УстановитьНачальныеНастройки(Ло жь); Потом пишем функцию: Функция СформироватьТаблицуДанных() // для формирования структуры таблицы Массив = Новый Массив; Массив.Добавить(Тип("СправочникСсылка.ФизическиеЛи ца")); ОписаниеТиповФизЛицо = Новый ОписаниеТипов(Массив); Массив = Новый Массив; Массив.Добавить(Тип("СправочникСсылка.Подразделени я")); ОписаниеТиповПодразделение = Новый ОписаниеТипов(Массив); Массив = Новый Массив; Массив.Добавить(Тип("Число")); КЧ = Новый КвалификаторыЧисла(10,0); ОписаниеТиповРабота = Новый ОписаниеТипов(Массив,,КЧ); ТЗ2 = Новый ТаблицаЗначений; ТЗ2.Колонки.Добавить("Сотрудник", ОписаниеТиповФизЛицо); ТЗ2.Колонки.Добавить("Подразделение", ОписаниеТиповПодразделение); ТЗ2.Колонки.Добавить("Работал",ОписаниеТиповРабота ); ТЗ2.Колонки.Добавить("Отпуск",ОписаниеТиповРабота) ; Возврат ТЗ2; КонецФункции В процедуре формирования отчета пишет Процедура СформироватьОтчет(ТабличныйДокумент) Экспорт // Перед формирование отчета можно установить необходимые параметры универсального отчета. Если Не ЗначениеЗаполнено(УниверсальныйОтчет.ДатаНач) ИЛИ Не ЗначениеЗаполнено(УниверсальныйОтчет.ДатаКон) Тогда Предупреждение("Не задан период отчета!"); Возврат; КонецЕсли; ТаблицаДанных.Очистить(); ЗаполнитьТаблицуДанных(); // а в этой процедуре заполняем таблицу ТаблицаДанных чем нам надо. Она выполняется только когда мы запускаем формирование отчета, а функция СформироватьТаблицуДанных() - при открытии, поэтому она должна быть простая и быстрая. УниверсальныйОтчет.ПостроительОтчета.Параметры.Вст авить("КонДата", КонецДня(Дата(УниверсальныйОтчет.ДатаКон))); УниверсальныйОтчет.ПостроительОтчета.Параметры.Вст авить("НачДата", Дата(УниверсальныйОтчет.ДатаНач)); УниверсальныйОтчет.СформироватьОтчет(ТабличныйДоку мент); КонецПроцедуры // СформироватьОтчет() Все... | |
9
- 08.08.2016 - 13:37
|
(8) спасибо! спасибище! | |
10
- 08.08.2016 - 13:45
|
(8) мне кажется, если бы ты оформил свои знания в виде серии коротких зарисовок и выложил на ИС, мог бы иметь большой успех. Реально, трудно найти нормальные лаконичные примеры. | |
11
- 08.08.2016 - 15:41
| Только УниверсальныйОтчет плохо работает с источником данных - таблицей значений. Отборы, группировки нельзя сделать по полям реквизитов. Т.ч. СКД тут лучше использовать. А пользовательские настройки и в Универсальном отчете могут не дать открыть пользователю отчет после его изменения. Т.ч. мы имеем наш любимый синоним редьки по части сладости... | |
| Интернет-форум Краснодарского края и Краснодара |