|
Вывод на макет данных табличной части из запроса | ☑ | ||
---|---|---|---|---|
0
poet
30.08.11
✎
10:39
|
ТабДок = Новый ТабличныйДокумент;
Макет = ЭтотОбъект.ПолучитьМакет("АнализПохода"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслуг.Номер КАК Номер, | РеализацияТоваровУслуг.Дата КАК Дата, | РеализацияТоваровУслуг.Контрагент КАК Контрагент, | РеализацияТоваровУслуг.Проведен, | РеализацияТоваровУслуг.Товары.( | Количество, | Сумма, | ВесСПроцентомУсушки, | Номенклатура | ) |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг |ГДЕ | РеализацияТоваровУслуг.Проведен = ИСТИНА | И РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаС И &ДатаПо | |УПОРЯДОЧИТЬ ПО | РеализацияТоваровУслуг.Дата |ИТОГИ ПО | ОБЩИЕ"; Запрос.УстановитьПараметр("ДатаС", НачалоДня(ДатаС)); Запрос.УстановитьПараметр("ДатаПо", КонецДня(ДатаПо)); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); ТабДок.Вывести(Макет.ПолучитьОбласть("Шапка")); ОбластьМакета = Макет.ПолучитьОбласть("Строка"); Пока Выборка.Следующий() Цикл ОбластьМакета.Параметры.Номер = Выборка.Номер; ОбластьМакета.Параметры.Дата = Выборка.Дата; ОбластьМакета.Параметры.Контрагент = Выборка.Контрагент; ТабДок.Вывести(ОбластьМакета); КонецЦикла; ТабДок.Показать(); В приведенном коде беру из запроса данные формы и вывожу их в соответствующие поля на Макете, а как туда построчно выводить данные из табличной части перебираемого документа? |
|||
1
butterbean
30.08.11
✎
10:40
|
внутри цикла пиши Для каждого СтрокаТЧ из Выборка.Товары ....
|
|||
2
poet
30.08.11
✎
10:49
|
добавил в цикл еще один:
Для каждого СтрокаТЧ из Выборка.Товары Цикл ОбластьМакета.Параметры.Номенклатура = Выборка.СтрокаТЧ.Номенклатура; ОбластьМакета.Параметры.Вес = Выборка.СтрокаТЧ.Количество; ОбластьМакета.Параметры.Сумма = Выборка.СтрокаТЧ.Сумма; ОбластьМакета.Параметры.Поход = Выборка.СтрокаТЧ.ВесСПроцентомУсушки; ТабДок.Вывести(Макет.ПолучитьОбласть("Детализация")); КонецЦикла; ругнулось "Итератор для значения не выявлен Для каждого СтрокаТЧ из Выборка.Товары Цикл " |
|||
3
Kreont
30.08.11
✎
10:57
|
(2) ошибка так лечится:
Для каждого СтрокаТЧ из Выборка.Товары Цикл ОбластьМакета.Параметры.Номенклатура = СтрокаТЧ.Номенклатура; Но лучше сделать одинаковые наименование для макета и для полученого результата, и потом через такой метод: Заполнить() делать: ОбластьМакета.Параметры.Заполнить(СтрокаТЧ); |
|||
4
poet
30.08.11
✎
11:04
|
все равно ему какой-то "интератор" не нравится.
а СтрокаТЧ как-то определять не надо? |
|||
5
poet
30.08.11
✎
11:35
|
так что ж с этим интератором делать?
|
|||
6
butterbean
30.08.11
✎
11:39
|
(5) надо так
ВыборкаСтрок = Выборка.Товары.Выбрать(); Пока ВыборкаСтрока.Следующий() Цикл... |
|||
7
butterbean
30.08.11
✎
11:40
|
(6)+ просто в 8.1 подобные конструкции возвращали вроде бы таблицу значений, и теперь это результат запроса
|
|||
8
poet
30.08.11
✎
11:49
|
// ВыборкаСтрок = Результат.Товары.Выбрать();
ВыборкаСтрок = Выборка.Товары.Выбрать(); Пока Выборка.Следующий() Цикл ОбластьМакета.Параметры.Номер = Выборка.Номер; ОбластьМакета.Параметры.Дата = Выборка.Дата; ОбластьМакета.Параметры.Контрагент = Выборка.Контрагент; ТабДок.Вывести(ОбластьМакета); Пока ВыборкаСтрок.Следующий() Цикл ОбластьМакета.Параметры.Номенклатура = ВыборкаСтрок.Номенклатура; ОбластьМакета.Параметры.Вес = ВыборкаСтрок.Количество; ОбластьМакета.Параметры.Сумма = ВыборкаСтрок.Сумма; ОбластьМакета.Параметры.Поход = ВыборкаСтрок.ВесСПроцентомУсушки; ТабДок.Вывести(Макет.ПолучитьОбласть("Детализация")); КонецЦикла; КонецЦикла; в этом варианте дает ошибку Значение не является значением объектного типа (Выбрать) ВыборкаСтрок = Выборка.Товары.Выбрать(); в таком: "ВыборкаСтрок = Результат.Товары.Выбрать();" Поле объекта не выявлено (Товары) ВыборкаСтрок = Результат.Товары.Выбрать(); и ведь уверен что ларчик просто открывается... |
|||
9
poet
30.08.11
✎
11:50
|
у меня 8.2 если что
|
|||
10
butterbean
30.08.11
✎
11:52
|
(8) это надо ВНУТРИ цикла делать
|
|||
11
poet
30.08.11
✎
12:05
|
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать(); ТабДок.Вывести(Макет.ПолучитьОбласть("Шапка")); Пока Выборка.Следующий() Цикл ОбластьМакета = Макет.ПолучитьОбласть("Строка"); ОбластьМакета.Параметры.Номер = Выборка.Номер; ОбластьМакета.Параметры.Дата = Выборка.Дата; ОбластьМакета.Параметры.Контрагент = Выборка.Контрагент; ТабДок.Вывести(ОбластьМакета); ВыборкаСтрок = Выборка.Товары.Выбрать(); Пока ВыборкаСтрок.Следующий() Цикл ОбластьМакета = Макет.ПолучитьОбласть("Детализация"); ОбластьМакета.Параметры.Вес = ВыборкаСтрок.Количество; ОбластьМакета.Параметры.Сумма = ВыборкаСтрок.Сумма; ОбластьМакета.Параметры.ВесСПроцентомУсушки = ВыборкаСтрок.ВесСПроцентомУсушки; ОбластьМакета.Параметры.Номенклатура = ВыборкаСтрок.Номенклатура; ТабДок.Вывести(ОбластьМакета); КонецЦикла; КонецЦикла; ПОБЕДИЛ!!! СПАСИБО |
|||
12
butterbean
30.08.11
✎
12:08
|
(11) а всего-то надо было сразу в отладчик залезть
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |