Вход | Регистрация

1С:Предприятие ::

Метки: 

Как избавиться от нескольких табличных документов

Я
   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;    

            КонецЦикла;
            
         Таблица.Показать();
   
    КонецЦикла

    Конецесли;

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

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

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

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

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


Для Каждого Товар ИЗ Товары Цикл
// Или что там у тебя в товарах, в общем цикл по товарам

Если СтрокаТаблицаСклады.Размещение <> Товары.Размещение Тогда Продолжить; КонецЕсли;

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


КонецЦикла

// Показываем или что-то там делаем с готовым табличным документом

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


Список тем форума
Рекламное место пустует  
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует