Имя: Пароль:
1C
1С v8
Как вывести 2 табдока в один или Присоединить()
,
0 Baf
 
23.11.15
10:53
Прошу помощи. Начала осваивать метод Присоединить() и ничего понять не могу.
есть макет, который должен выводить шапку таблицы и 2 абсолютно разные колонки, группировка у каждой колонки своя. пыталась вывести с присоединить() не получается
первую колонку вывожу без проблем, а вторая либо внизу после первой выводится, либо в последней строке первой колонки и все данные присоединяет в строчку. почитала что кто то умудряется выводить данные в разные табдоки потом в общем соединять, подскажите, с примером, как это можно сделать?
структура такая:
                           шапка
Колонка 1 (табдок1)       |   Колонка 2 (табдок2)
1 Baf
 
23.11.15
10:57
если присоединять в цикле вывода первой колонки, так не получится, потому что, у меня разное кол-во строк для вывода. общий запрос не получится сделать, т.к. сгруппировать их нечем, ну а скд выводит по 2 строчки. короче запуталась, помогите.
2 Baf
 
23.11.15
11:53
народ, ау, неужели никто не присоединял область?
3 Nuobu
 
23.11.15
11:57
Он так и должен работать.
Колонку так, как Вы хотите, присоединить нельзя.
Только построчно.
4 Baf
 
23.11.15
12:18
а табдоками получится?
5 Nuobu
 
23.11.15
12:21
(4) Нет.
6 Zmich
 
23.11.15
12:23
(4). Высота строк у табдоков может быть разная, есть и другие нюансы, поэтому такая идея не осуществима. Сделай общий макет из объединенных и выводи построчно. Если проблемы с собиранием данных из разных запросов, создай таблицу значений с нужными колонками, заполни ее на основании своих данных, а потом уже выведи нужное в общий макет построчно.
7 Nuobu
 
23.11.15
12:26
(6) + можешь попробовать определить, где больше записей и пробежаться по выборке с помощью Получить();
8 Baf
 
23.11.15
12:27
а примеры можно
9 ptiz
 
23.11.15
12:29
.Присоединить() сработает, если количество строк в ранее выведенной и новой области - одинаковое.
10 Гёдза
 
23.11.15
12:33
Обход двух массивов за 1 проход - не такая уж и сложная задача
11 palpetrovich
 
23.11.15
13:30
выгружаешь результаты в две ТЗ, определяешь какая "длинее", к примеру ТЗ1, далее примерно так:
Для стр=1 По ТЗ1.КоличествоСтрок() Цикл
    Таб.Вывести();
    Если стр <= ТЗ2.КоличествоСтрок() Тогда
        ТЗ2.ПолучитьСтрокуПоНомеру(стр);
        Таб.ПрисоединитьСекцию();
    КонецЕсли;
КонецЦикла;
12 SeregaMW
 
23.11.15
16:22
Вот так

Запрос2 = Новый Запрос;
            Запрос2.Текст="ВЫБРАТЬ
            |    ТЗ.*
            |ПОМЕСТИТЬ ТЗ
            |ИЗ
            |    &ТЗ КАК ТЗ
            |;
            |
            ////////////////////////////////////////////////////////////////////////////////
            |ВЫБРАТЬ
            |    СкидкиПоУсловию.*
            |ПОМЕСТИТЬ СкидкиПоУсловию
            |ИЗ
            |    &СкидкиПоУсловию КАК СкидкиПоУсловию
            |;
            |
            ////////////////////////////////////////////////////////////////////////////////
            |ВЫБРАТЬ
            |    ТЗ.*
            |ИЗ
            |    ТЗ КАК ТЗ
            |
            |ОБЪЕДИНИТЬ ВСЕ
            |
            |ВЫБРАТЬ
            |    СкидкиПоУсловию.*
            |ИЗ
            |    СкидкиПоУсловию КАК СкидкиПоУсловию";
            
            Запрос2.УстановитьПараметр("ТЗ", ТЗ);
            Запрос2.УстановитьПараметр("СкидкиПоУсловию", СкидкиПоУсловию);
            СкидкиПоУсловию = Запрос2.Выполнить().Выгрузить();
Закон Брукера: Даже маленькая практика стоит большой теории.