|
Вывод табличнойчасти документа в печатную форму Word | ☑ | ||
---|---|---|---|---|
0
v1t0s
27.08.14
✎
09:45
|
Доброго времени суток, Уважаемые! Столкнулся со следующей задачей: в печатную форму Word (Active Document) необходимо вывести список номенклатуры из табличной части документа РеализацияТоваровИУслуг (УТ 10.3). Если в табличной части присутствует несколько позиций номенклатуры, то выводится лишь последняя. Как организовать цикл, в котором будут выводится все позиции номенклатуры из ТЧ документа в Word?
Привожу кусок кода: Запрос = новый запрос; Запрос.УстановитьПараметр("Ссылка",СсылкаНаОбъект); Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | РеализацияТоваровУслугТовары.Номенклатура |{УПОРЯДОЧИТЬ ПО | РеализацияТоваровУслугТовары.НомерСтроки} |ИТОГИ ПО | Номенклатура"; Выборка = Запрос.Выполнить().Выбрать(); Замена = Документ.Content.Find; Замена.Execute("[Nomenklatura]", Ложь, Истина, Ложь,,,Истина,,Ложь,Строка(Выборка.Номенклатура),2); |
|||
1
mehfk
27.08.14
✎
09:47
|
Использовать цикл пока Выборка.Следующий() цикл
|
|||
2
v1t0s
27.08.14
✎
09:49
|
Т.е. :
Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Замена.Execute("[Nomenklatura]", Ложь, Истина, Ложь,,,Истина,,Ложь,Строка(Выборка.Номенклатура),2); КонецЦикла; |
|||
3
v1t0s
27.08.14
✎
09:49
|
Так?
|
|||
4
mehfk
27.08.14
✎
09:49
|
Чуть не забыл, могу подсказать кто занедорого продаст СП.
|
|||
5
v1t0s
27.08.14
✎
09:53
|
Предложенный метод с Пока Выборка.Следующий() Цикл не работает. Все равно выводится последняя позиция из ТЧ документа. Я так понимаю, что нужно как-то обращаться к ТЧ документа и в цикле добавлять строку, если там не одна позиция, контролируя количество позиций. Но как это сделать,пока не знаю?))
|
|||
6
Jokero
27.08.14
✎
09:55
|
Тебе табличку нужно создавать в самом ворде и добавлять строчки в нее при каждом витке цикла
|
|||
7
v1t0s
27.08.14
✎
09:56
|
Не подскажете как именно? я совсем недавно только с Active Document начал работать, для меня это темный лес. Буду очень признателен.
|
|||
8
Jokero
27.08.14
✎
10:01
|
//Выбираем первую таблицу в макете
ВордТаблица1 = Word.ActiveDocument.Tables(1); i = 1; Пока ВыборкаТоваров.Следующий() Цикл //Заполняем первую строку Колонка = ВордТаблица1.Cell(i,1).Range; Колонка.Text = ВыборкаТоваров.НомерСтроки; Колонка = ВордТаблица1.Cell(i,2).Range; Колонка.Text = ВыборкаТоваров.Номенклатура; i=i+1; //добавляем строку ВордТаблица1.Rows.Add(); КонецЦикла; как-то так |
|||
9
v1t0s
27.08.14
✎
10:02
|
Благодарю, сейчас поколдую ;)
|
|||
10
v1t0s
27.08.14
✎
16:25
|
Все, роды приняты успешно))) Конечный и работающий вариант в моем случае выглядит так:
Запрос = новый запрос; Запрос.УстановитьПараметр("Ссылка",СсылкаНаОбъект); Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура, | РеализацияТоваровУслугТовары.НомерСтроки КАК НомерСтроки |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | РеализацияТоваровУслугТовары.Номенклатура, | РеализацияТоваровУслугТовары.НомерСтроки | |УПОРЯДОЧИТЬ ПО | НомерСтроки"; Выборка = Запрос.Выполнить().Выгрузить(); //Выбираем первую таблицу в макете ВордТаблица1 = Документ.Tables(1); i = 1; //Пока Выборка Цикл //Заполняем первую строку Для каждого НомерСтроки из Выборка Цикл КолонкаН = ВордТаблица1.Cell(i,1).Range; КолонкаН.Text = Строка(НомерСтроки.НомерСтроки); Колонка = ВордТаблица1.Cell(i,2).Range; Колонка.Text = Строка(НомерСтроки.Номенклатура); i=i+1; //добавляем строку ВордТаблица1.Rows.Add(); КонецЦикла; Всем спасибо за помощь! |
|||
11
Jokero
28.08.14
✎
09:04
|
Поздравляю))
з.ы. На экзамене за Выборка = Запрос.Выполнить().Выгрузить(); Для каждого НомерСтроки из Выборка Цикл КонецЦикла; Вам бы снизили оценку Выгрузка результата запроса в промежуточную таблицу (например, в таблицу значений) без необходимости". Минус 1 балл. Лучше обходить выборку запроса Выборка.Следующий() чем создавать еще одну таблицу в памяти с теми же данными. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |