Имя: Пароль:
1C
1С v8
Вывести в одну таблицу в печатной форме
0 yurikmellon2
 
15.10.21
13:18
Коллеги, подскажите, плиз. Вроде простая задача, не могу сообразить.
Есть документ с двумя табличными частями "Работы" и "Материалы". Задача вывести значения в этих ТЧ на печатную форму в одну таблицу, но не горизонтально, а рядом.
Не могу понять как правильно присоединить.
Понятно, что нужен цикл по строкам табличных частей
    СтрокиРаботы = Макет.ПолучитьОбласть("Строки|Работы");
    СтрокиМатериалы = Макет.ПолучитьОбласть("Строки|Материалы");
    Ном = 0;
    Для каждого СтрокаРабот Из СсылкаНаОбъект.Работы Цикл
        Ном = Ном + 1;
        СтрокиРаботы.Параметры.КодРаб = СтрокаРабот.Работа.Артикул;
        СтрокиРаботы.Параметры.Работа = СтрокаРабот.Работа.Наименование;
        СтрокиРаботы.Параметры.Стоимость = СтрокаРабот.СуммаВсего;
        ТабДокумент.Вывести(СтрокиРаботы);
    КонецЦикла;

    К = 0;
    Для каждого СтрокаТовары из СсылкаНаОбъект.Товары цикл  
        К = К + 1;      
        СтрокиМатериалы.Параметры.Товар = СтрокаТовары.Номенклатура.Наименование;
        СтрокиМатериалы.Параметры.Кол = СтрокаТовары.Количество;
        СтрокиМатериалы.Параметры.Стоимость = СтрокаТовары.СуммаВсего;
        ТабДокумент.Присоединить(СтрокиМатериалы);
    КонецЦикла;

Как правильно присоединение организовать?

https://i.imgur.com/nZZCAFC.jpg
1 Базис
 
naïve
15.10.21
13:21
Вывести - это вниз.
Присоединить - это вправо.
2 yurikmellon2
 
15.10.21
13:23
(1) да это я понимаю, как правильно в цикле всё это скомпоновать, чтобы вывелось как надо?
3 George Wheels
 
15.10.21
13:27
В ТЧ Материалы должна быть ссылка на Работу.
4 yurikmellon2
 
15.10.21
13:29
(3) не понял
5 George Wheels
 
15.10.21
13:32
(4) Каждый материал относится к конкретной работе?
Или просто вывести две таблицы рядом?
6 Kassern
 
15.10.21
13:34
(0) а в чем проблема? Получай нужную область через "<Имя области 1> | <Имя области 2>" ("Строки|Работы") а дальше заполняй и выводи как надо. Хочешь справа, тогда присоединяй.
7 Kassern
 
15.10.21
13:35
(0) а вообще прощу сделать запрос с обработкой результата в табдок. А дальше запросом объединить эти 2 таблицы и делов то. Тогда и разбития областей на колонки не потребуется.
8 yurikmellon2
 
15.10.21
13:39
(5) нет, просто вывести две таблицы рядом
(6) так и пытаюсь, вы получается
9 yurikmellon2
 
15.10.21
13:44
(7) справился. Действительно проще одну таблицу записать в один ТабДок, другую в другой и соединить их.
Примерно так

    ТабДок1 = Новый ТабличныйДокумент();
    ТабДок2 = Новый ТабличныйДокумент();
    СтрокиРаботы = Макет.ПолучитьОбласть("Строки|Работы");
    СтрокиМатериалы = Макет.ПолучитьОбласть("Строки|Материалы");
    Для каждого СтрокаРабот Из СсылкаНаОбъект.Работы Цикл
        СтрокиРаботы.Параметры.КодРаб = СтрокаРабот.Работа.Артикул;
        СтрокиРаботы.Параметры.Работа = СтрокаРабот.Работа.Наименование;
        СтрокиРаботы.Параметры.Стоимость = СтрокаРабот.СуммаВсего;
        ТабДок1.Вывести(СтрокиРаботы);
    КонецЦикла;
    Для каждого СтрокаТовары из СсылкаНаОбъект.Товары цикл  
        СтрокиМатериалы.Параметры.Товар = СтрокаТовары.Номенклатура.Наименование;
        СтрокиМатериалы.Параметры.Кол = СтрокаТовары.Количество;
            СтрокиМатериалы.Параметры.Стоимость = СтрокаТовары.СуммаВсего;
        ТабДок2.Вывести(СтрокиМатериалы);
    КонецЦикла;
ТабДокумент.Присоединить(ТабДок1);
ТабДокумент.Присоединить(ТабДок2);
10 Kassern
 
15.10.21
13:45
(9) я другое имел в виду, ну да ладно)
11 yurikmellon2
 
15.10.21
13:53
(10) я понял о чём ты, запросом собрать,  но так проще, как мне кажется
12 Kassern
 
15.10.21
13:55
(11) обычно присоединение областей используют, когда количество колонок не статичное. К примеру есть признак, показывать артикул, если стоит то выводить. В вашем случае смысла нет в такой разбивке областей. Если только в одном случае выводятся работы, а в другом материалы.
AdBlock убивает бесплатный контент. 1Сергей