1c8 вывод табличной части

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#1
Сделал запрос - получил таблицу. Но есть проблеммы с выводом в макет. Ситуация такая.
Таблица из запроса:
Период |Счет |регистраторсодержания|субконто2|ДТ|КТ|
03,08,07|99,01,1|покупка облигаций |НКД |12|0 |
03,08,07|99,01,1|покупка облигаций |муниц обл|15|0 |
Нужно вывести в макет:
Дата |Операция |НКД|муниц обл| - шапка обязательно должна быть статической
03,08,07|покупка облигаций| 12 |15 |
Как добиться такого результата обходя каждую строчку запроса? Или может есть какой другой способ извлечения данных... Результат выволнения запроса отправляю в переменную:
Результат = Запрос.Выплонить().Выгрузить()
 

Zab

Well-known member
07.08.2006
583
0
#2
Создавай таблицу значений, в которой столбцы = значения субконто2. Заполняй данными запроса, сворачивай, и выводи наздоровие.
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#3
<!--QuoteBegin-Zab+27:10:2007, 15:08 -->
<span class="vbquote">(Zab @ 27:10:2007, 15:08 )</span><!--QuoteEBegin-->Создавай таблицу значений, в которой столбцы = значения субконто2. Заполняй данными запроса, сворачивай, и выводи наздоровие.[/quote]
Спасибо. А можно поподробнее про вторую часть - "Заполняй данными запроса, сворачивай"?
 

Zab

Well-known member
07.08.2006
583
0
#4
Открываешь выборку, и в цикле перебирая результат запроса, записываешь строки ТЗ. Есть метод, "выгрузить" из результата запроса в ТЗ, но он те не прокатит, т.к. нужно не просто выгрузить, а в процессе еще и менять структуру. А вот описание метода "Свернуть" из синтакс-помошника:
ТаблицаЗначений (ValueTable)
Свернуть (GroupBy)
Синтаксис:
Свернуть(<Колонки группировок>, <Колонки суммирования>)
Параметры:
<Колонки группировок> (обязательный)
Тип: Строка. Имена колонок, разделенные запятыми, по которым необходимо группировать строки таблицы значений.
<Колонки суммирования> (необязательный)
Тип: Строка. Имена колонок, разделенные запятыми, по которым необходимо суммировать значения в строках таблицы значений.
Описание:
Осуществляет свертку таблицы значений по указанным колонкам группировки. Строки, у которых совпадают значения в колонках, указанных в первом параметре, сворачиваются в одну строку. Значения этих строк, хранящиеся в колонках, указанных во втором параметре, накапливаются.
Важно! Списки колонок не должны пересекаться. Колонки, не вошедшие ни в один из списков колонок, после выполнения метода удаляются из таблицы значений.
справишся?
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#5
<!--QuoteBegin-Zab+29:10:2007, 12:13 -->
<span class="vbquote">(Zab @ 29:10:2007, 12:13 )</span><!--QuoteEBegin-->Открываешь выборку, и в цикле перебирая результат запроса, записываешь строки ТЗ. Есть метод, "выгрузить" из результата запроса в ТЗ, но он те не прокатит, т.к. нужно не просто выгрузить, а в процессе еще и менять структуру. А вот описание метода "Свернуть" из синтакс-помошника:

справишся?[/quote]
Неа. не справлюсь. Выгрузить метод знаю. Им и пользуюсь = Результат = Запрос.Выплонить().Выгрузить()
Свернуть метод тоже знаю.
А вот как в процессе поменять структуру - не знаю и не пойму к сожалению. Можешь пошагово объяснить?
 

Zab

Well-known member
07.08.2006
583
0
#6
ручками :) , к сожалению, я ж говорил, что выгрузить не пройдет....
Код:
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
сТЗ = ТаблицаЗначений.Добавить();
сТЗ.Период = Выборка.Период;
сТЗ.Счет = Выборка.Счет;
сТЗ.Регистратор = Выборка.Регистратор;
Если Выборка.Субконто2 = переменнаяСодержащаяЗначениеНКД Тогда
сТЗ.НКД = Выборка.ДТ-Выборка.КТ;
сТЗ.МуницОбл = 0;
ИначеЕсли Выборка.Субконто2 = переменнаяСодержащаяЗначениеМуницОбл Тогда
сТЗ.МуницОбл = Выборка.ДТ-Выборка.КТ;
сТЗ.НКД = 0;
КонецЕсли;
КонецЦикла;
Потом сворачиваешь, перебираешь, и выводишь. Агу?
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#7
Ща буду пробовать. спасибо. потом поглядим что получица))
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#8
Блин. проблеммы с создаваемой таблицей значений. Можешь написать как структуру создать чтобы потом вышеописанный код заработал?
 

Zab

Well-known member
07.08.2006
583
0
#9
хех... че с вами делать?
Код:
// Создание таблицы значений 
ТаблицаЗначений = Новый ТаблицаЗначений;
// добавим в таблицу значений три колонки
ТаблицаЗначений.Колонки.Добавить("Отдел",ОписаниеТиповС,"Отдел");
ТаблицаЗначений.Колонки.Добавить("Сотрудник",ОписаниеТиповС,
"Фамилия сотрудника");
ТаблицаЗначений.Колонки.Добавить("Оклад",ОписаниеТиповЧ,"Оклад");

// добавим строку
Стр=ТаблицаЗначений.Добавить();
Стр.Отдел="Отдел 1";
Стр.Сотрудник="Иванов";
Стр.Оклад=5600;
Вот кусок кода из синтакс-помошника. Надеюсь, переделаешь под себя.
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#10
блин так и думал, что ты дашь кусок из синтакс помощьника. я это и сам видел.....

Все... я понял свою ошибку! Спасибо огромное. Дальше попробую сам)))