Имя: Пароль:
1C
 
Построитель отчёта и таблица значений
0 Hazer79
 
15.11.08
12:47
Здравствуйте !
Никто не в курсе, если построителю отчёта скармливаешь в качестве источника данных ТЗ, то он его обрабатывает локально (на компе клиента) или как ?
1 Hadgehogs
 
15.11.08
12:48
Скорее всего локально, пользуй Временную таблицы - она на сервере (если надо)
2 luns
 
15.11.08
12:54
(0) К сказанному в (1).. если юзать временную таблицу, то можно итоги по иерархии получить, а если источник данных для построителя, то нет...
3 Hazer79
 
15.11.08
12:56
Вот в том-то и дело.
У меня изначально алгоритм был такой :
1.Выполнение запроса
2.Выгрузка результата запроса в ТЗ.
3.Обработка ТЗ.
4.Выгрузка в ВТ
5.Извлечение из ВТ с группировками и подсчётом итогов
6.Вывод в табличный документ

Озадачившись тем, что большие обьёмы данных выгружаютзя в ВТ и загружаются из неё достаточно долго, решил пойти другим путём - создал построитель, сунул ему ТЗ и вывел всё это в табличнй документ.
И вот не знаю теперь - что реально быстрее.

(2) Неправда, у меня всё получилось. ;-)
4 PR
 
15.11.08
13:01
(0) Эээ..., а что, можно локальную ТЗ на сервер для обработки кидать? А зачем собсно?
И непонятно, что такое обработка? Настройка пользователем или уже выполнение запроса построителем?
5 luns
 
15.11.08
13:13
(3) Серьезно? Я что то упустил и построитель отчета может иерархические итоги строить по "плоской" ТЗ в качестве источника данных? Это не "стеб", действительно в доках писали что так нельзя...
6 Hadgehogs
 
15.11.08
14:02
код приведи
7 Hazer79
 
17.11.08
09:39
(4) Эээ... Уважаемый PR, учитывая информацию в вашем профиле, очень сомневаюсь, что вы не в курсе про это :

МВТ = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МВТ;
Запрос.Текст = "ВЫБРАТЬ * ПОМЕСТИТЬ ВременнаяТаблица ИЗ &ТабЗнач КАК ТабЗнач";
Запрос.УстановитьПараметр("ТабЗнач", ТЗ);
Запрос.Выполнить();

И всё это для того, потом, при выборке из ВТ, сгруппировать, посчитать хитро итоги и вывести в табличный документ.
Под "обработкой ТЗ" подразумевается прогон ТЗ в цикле и выполнение определённых действий над данными, которые там уже есть (в запросе этих действий не выполнишь :-( )

(3),(6) Вот рабочий код :
ПостроительОтчета = Новый ПостроительОтчета;
ПостроительОтчета.Макет = ПолучитьМакет("ПросроченнаяЗадолженность");
ДанныеИсточника = Новый ОписаниеИсточникаДанных(ТЗНеоплаченные);

ДанныеИсточника.Колонки.Контрагент.Измерение = Истина;
ДанныеИсточника.Колонки.Договор.Измерение = Истина;
ДанныеИсточника.Колонки.СрокОтсрочки.Измерение = Истина;

ДанныеИсточника.Колонки.Задолженность.Итог = "СУММА(Задолженность)";
ДанныеИсточника.Колонки.ПросроченнаяЗадолженность.Итог = "СУММА(ПросроченнаяЗадолженность) + СУММА(Переплаты) + СУММА(Возвраты)";

ПостроительОтчета.ИсточникДанных = ДанныеИсточника;
ПостроительОтчета.Выполнить();
Результат = ПостроительОтчета.Результат;

Ну и затем Результат, как результат обычного запроса, выводится в Табличный документ.
Вот, собственно, и всё...
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший