Версия для печати темы (https://pro1c.org.ua/index.php?s=391c99a8dfb6d4900c4845432b7cc109&showtopic=67360)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Копирование Таблицы значений с отбором

Автор: kostya77 23.10.23, 10:51

Добрый день. Есть документ в которого реквизитом табличной части есть Контрагент. Подскажте. как на печать вывести данные по каждому контрагенту оттельно, тоесть если три контрагента, то три печатных формы. Пробую делать через Таблицу значений, не получаеться скопировать в разные таблицы значений с отбором.

Может это можно сделать без Таблицы значений?

Автор: denis84 23.10.23, 11:02

kostya77 @ Сегодня, 11:51 * ,
выгрузите ТЧ в таблицу значений. Потом проверяйте, если сменился контрагент и выводите на печать

Автор: kostya77 23.10.23, 11:04

denis84 @ Сегодня, 12:02 * ,
Мне нужны еще итоги по Контрагенту

Автор: volodya1122 23.10.23, 11:52

kostya77 @ Сегодня, 11:04 * ,
Не нужно в разные таблицы выгружать. Достаточно в одну ТЗ выгрузить. Отсортировать ТЗ по контрагенту. Потом обходить и когда контагент изменился выводить подвал по первой печатной форме и создавать новую печатную форму (или новую страницу в той же печатной форме). После цикла по таблице значений не забыть вывести последний подвал. Нужные итоги для подвала также сумировать до момента измененения контрагента. И потом обнулять.
Или есть хороший метод "Свернуть" для таблицы значений. Но тогда небудет детализации по строкам табличной части.

Автор: denis84 23.10.23, 12:22

kostya77 @ Сегодня, 11:51 * ,
типа такого кода .
выгрузите ТЧ в таблицу значений, а потом:

    ТЗ.Свернуть("Контрагент,,","");   //указываете реквизиты, которые нужны на печати
    ТЗ.Сортировать("+1");
    
    Сч         = 0;    
    Итого     = 0;
    Состояние("Заполнение выходной таблицы...");
    
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Таб.ВывестиСекцию("Шапка");
    
    ТЗ.ВыбратьСтроки();
    ТекКонтрагент     = "Начало";
    СуммаКонтрагент = 0;    
    Пока ТЗ.ПолучитьСтроку() = 1 Цикл
        Сч=Сч+1;
        
        Контрагент          = ТЗ.Контрагент;
        ..........        
        //указываете реквизиты, которые нужны на печати
        
        СуммаВсего             = ТЗ.Контрагент.Итог("Сумма");

        Если ТекКонтрагент<>ТЗ.Контрагент Тогда
            Если СуммаКонтрагент<>0 Тогда
                Таб.ВывестиСекцию("ИтогоКлиент");
            КонецЕсли;
            ТекКонтрагент = ТЗ.Контрагент;
            СуммаКонтрагент = 0;
        КонецЕсли;

        Итого = Итого + СуммаВсего;
        Таб.ВывестиСекцию("Строка");
        
        СуммаКонтрагент = СуммаКонтрагент + СуммаВсего;
        ТекстВсего = "РАЗОМ ПО контрагенту: " + Контрагент;
    КонецЦикла;
    Таб.ВывестиСекцию("ИтогоКлиент");
    Таб.ВывестиСекцию("Подвал");
    
    Таб.ТолькоПросмотр(1);
        Таб.Показать("Моя таблица", "");


код примерный, может где то и есть ошибка, но идея такая

Автор: awp 24.10.23, 17:34

Запросом и обходом по групиировкам не?

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua