Имя: Пароль:
1C
1С v8
Заполнение данными из таб части документа в макет
,
0 Валидатор
 
23.04.13
13:48
Написал запрос на выборку данных из ТЧ Товары и Услуги документа Заказ Поставщику:
Запрос = Новый Запрос;      Запрос.Текст =             "ВЫБРАТЬ            |      ЗаказПоставщикуТовары.Номенклатура КАК Номенклатура            |ИЗ            |      Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары            |ГДЕ            |      ЗаказПоставщикуТовары.Ссылка = &Ссылка            |            |ОБЪЕДИНИТЬ ВСЕ            |            |ВЫБРАТЬ            |      ЗаказПоставщикуУслуги.Номенклатура            |ИЗ            |      Документ.ЗаказПоставщику.Услуги КАК ЗаказПоставщикуУслуги";
Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
План.Параметры.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
КонецЦикла;

но такой запрос заполняет последними только найденными данными из таблицы услуги, а мне нужно чтобы было столько строк, сколько позици й твб частях документа, кк сделать?
1 Rie
 
23.04.13
13:49
(0) Так ты же и перебираешь в цикле _все_ записи, сохраняя в План.Параметры.Номенклатура только последнюю.
2 zak555
 
23.04.13
13:49
сделай читабельный запрос
3 Валидатор
 
23.04.13
13:50
(2)
Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    ЗаказПоставщикуТовары.Номенклатура КАК Номенклатура
       |ИЗ
       |    Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
       |ГДЕ
       |    ЗаказПоставщикуТовары.Ссылка = &Ссылка
       |
       |ОБЪЕДИНИТЬ ВСЕ
       |
       |ВЫБРАТЬ
       |    ЗаказПоставщикуУслуги.Номенклатура
       |ИЗ
       |    Документ.ЗаказПоставщику.Услуги КАК ЗаказПоставщикуУслуги";

   Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);

   Результат = Запрос.Выполнить();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();

   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
       План.Параметры.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
   КонецЦикла;
4 Валидатор
 
23.04.13
13:50
(1) а как сделать, чтобы все записывались по очреди? то есть найдена 1 позиция, хорп записалась, вторая так е, и так пока цикл идет?
5 exwill
 
23.04.13
13:51
+(1) ... из всех документов
6 exwill
 
23.04.13
13:52
(4) записалось куда? в макет?
7 Валидатор
 
23.04.13
13:52
(5) не из всех, из определенного
8 Валидатор
 
23.04.13
13:52
(6) да
9 Валидатор
 
23.04.13
13:53
План.Параметры.Номенклатура - это строка в макете, вот хочу чтобы в нее писалось
10 Валидатор
 
23.04.13
13:54
к (9) не строка, а параметр в строке, вот
11 Валидатор
 
23.04.13
13:57
выводить строку в каждом цикле? типа
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
План.Параметры.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
Макет.вывести(ОбластьСтрока) // областьстрока - строка где как раз значение параметра Номенклатура должно отображаться
КонецЦикла;
но так ведь тоже только последнее значение будет записываться?
12 exwill
 
23.04.13
14:01
(11) Молодец! Сам ответил.
Нет, не одна строка, а много.
... очень много ))))
13 Валидатор
 
23.04.13
14:02
(12) так выводится все равно последнее значение из 2х этих ТЧ (Товары и Услуги), т.е., если консолью запросов смотреть получается так
Номенклатура
Номенклатура
Номенклатура
Услуга

а на макет выводится только Услуга
14 Валидатор
 
23.04.13
14:05
хотя да, получилось, спс
15 Валидатор
 
23.04.13
14:10
хотя еще вопрос, есть колонка с нумерацией, там 1, 2,3, и т.д. и нужно чтобы цифры автоматом подставлялись для каждой строки в которую ставится номенклатура, это задаем в цикле ведь самом уже?
16 Валидатор
 
23.04.13
14:16
все, сп, сделал
17 exwill
 
23.04.13
14:20
Ты условие для таб.части Услуги забыл.