Имя: Пароль:
1C
 
Как избавиться от нескольких табличных документов
0 asder117
 
17.04.17
01:16
Имеется процедура:
// Вставить содержимое обработчика.
    Табдок1 = Новый ТабличныйДокумент;
    Табдок2 = Новый ТабличныйДокумент;
    Табдок3 = Новый ТабличныйДокумент;
    Табдок4 = Новый ТабличныйДокумент;
    ТаблицаСклады = Новый ТаблицаЗначений;
    ТаблицаСклады = Товары.Выгрузить();
    ТаблицаСклады.Свернуть("Размещение");
    МакетЗадания = ПолучитьМакет("Макет");
        ОбластьШапки = МакетЗадания.ПолучитьОбласть("Шапка");
        ОбластьСтрок = МакетЗадания.ПолучитьОбласть("СтрокаЗадания");
    Если ТаблицаСклады.Количество()=1 Тогда
        РазнестиПоОдномуПроизв =0;
        для Каждого строкаЗаказаП из ТаблицаСклады цикл
        ПроизводствоДок = строкаЗаказаП.Размещение.Наименование;    
        КонецЦикла;
        ОбластьШапки.Параметры.НомерЗаказа = ДокументОбъект.Номер;
        ОбластьШапки.Параметры.ДатаЗаказа = ДокументОбъект.Дата;
        ОбластьШапки.Параметры.Производство = ПроизводствоДок;
        Табдок1.Вывести(ОбластьШапки);
        для Каждого строкаЗаказа1 из Товары цикл
            ОбластьСтрок.Параметры.Продукция = строкаЗаказа1.Номенклатура.Наименование;
            ОбластьСтрок.Параметры.Количество = строкаЗаказа1.Количество;
            Табдок1.Вывести(ОбластьСтрок);
        КонецЦикла;
        Табдок1.Показать();

    иначе
        сч=0;
        Для Каждого СтрокаТаблицаСклады Из ТаблицаСклады Цикл
            сч=сч+1;
            Если сч = 1 тогда
            Таблица = Табдок1
        иначе
            Если сч = 2 тогда
            Таблица = Табдок2    
            иначе
            Таблица = Табдок3
        конецесли;
         конецесли;

            СсылкаСклад=СтрокаТаблицаСклады.Размещение;
        ОбластьШапки.Параметры.НомерЗаказа = ДокументОбъект.Номер;
        ОбластьШапки.Параметры.ДатаЗаказа = ДокументОбъект.Дата;
        ОбластьШапки.Параметры.Производство = СтрокаТаблицаСклады.Размещение.Наименование;
        Таблица.Вывести(ОбластьШапки);

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

    Конецесли;

История берет начало УТ. разброс заявки покупателя по всем складам. Но это тема другая.
Цель: берется табличное поле оно сворачивается по складу (размещение). и дальше по количеству складов идет раскидка на несколько табличных документов для дальнейшей печати.
Вопрос: Как можно используя один табличный документ несколько раз вывести его на экран( печать) пока решил так как сверху (выводом на экран(печать) нескольких табдоков). Спасибо заранее,
1 vladimir80
 
17.04.17
02:43
На выбор:

1 - ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();

2 - Просто правильный цикл

Для Каждого СтрокаТаблицаСклады Из ТаблицаСклады Цикл

// Тут табличный документ объявляем и заполняем шапку

Для Каждого Товар ИЗ Товары Цикл
// Или что там у тебя в товарах, в общем цикл по товарам
Если СтрокаТаблицаСклады.Размещение <> Товары.Размещение Тогда Продолжить; КонецЕсли;

// выводим товары в табличный документ

КонецЦикла

// Показываем или что-то там делаем с готовым табличным документом
КонецЦикла
2 vladimir80
 
17.04.17
02:45
Или вынести объявление ТабДока выше первого цикла, между циклами вставляй разрывы, а показывай после обоих циклов...
3 asder117
 
17.04.17
10:10
(2) Спасибо. разделитель меня не устраивает. т.к нужны отдельные доки которые будут печататься на разных принтерах
4 nordbox
 
17.04.17
10:13
Ну так сделай отдельно три макета и пусть каждый печатает свой
5 asder117
 
17.04.17
10:22
(4) я так и сделал практически только не 3 макета а 3 табдока.. я и хотел уйти от 3
6 lodger
 
17.04.17
10:59
(5) а куда ты уйдешь если печатать на разных принтерах?
7 asder117
 
17.04.17
12:00
(6) теперь понял. что только так
8 asder117
 
17.04.17
13:47
(6) Тогда к вопросу. а интересно можно как-нибудь динамически создать табдок к примеру табдок1, табдок2, табдок3 и так до табдокN чтобы не переписывать точнее не дописывать код при появлении нового склада.
9 lodger
 
17.04.17
15:09
(8) создавай циклично с передачей параметров.
10 asder117
 
17.04.17
19:51
(9) Пробовал через Табдок+[счетчик] получается строковое значение
11 Мимохожий Однако
 
17.04.17
20:22
(10) Выкладывай код подробнее.
12 Йохохо
 
17.04.17
20:55
(5) после последнего Таблица.Показать(), таблицу очистить, заполнить по второму складу и снова Показать() и так пока не кончатся склады
13 asder117
 
17.04.17
21:50
(12) имеешь ввиду без цикла по складам? (11) Код наверху я его пытаюсь соптимизировать
14 Йохохо
 
17.04.17
22:00
(13) с циклом, хоть он и кривой, просто переиспользуй ТабличныйДокумент после Показать
15 asder117
 
17.04.17
22:04
(14) Спасибо попробую