Имя: Пароль:
1C
1С v8
Печать комплектов документов - сделать как можно ближе к штатному.
0 Kookish
 
09.03.14
11:21
Добрый день.
Пишу внешнюю ПФ для печати комплектов документов отгрузки для БП 3.0. Для 2.0 уже делал групповую печать, когда в один табличный документ выводятся последовательно ТОРГ-12, затем счет-фактура от этой накладной. Сейчас хочу сделать что-то подобное, но уже в новой реальности. Наткнулся на следующий код в процедуре УправлениеПечатьюКлиент.РаспечататьТабличныеДокументы:

...
    Если ДоступнаПечатьПокомплектно Тогда
        Для НомерКопииКомплекта = 1 По КоличествоКопийКомплектов Цикл
            Для Каждого ОбъектПечати Из ОбъектыПечати Цикл
                ИмяОбласти = ОбъектПечати.Представление;
                Для Каждого Элемент Из ТабличныеДокументы Цикл
                    ТабДок = Элемент.Значение;
                    ОбластьПечати = ТабДок.Области.Найти(ИмяОбласти);
                    Если ОбластьПечати = Неопределено Тогда
                        Продолжить;
                    КонецЕсли;
                    ОбластьПечатиПользователя = ТабДок.ОбластьПечати;
                    ТабДок.ОбластьПечати = ОбластьПечати;
                    ТабДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
                    ТабДок.ОбластьПечати = ОбластьПечатиПользователя;
                КонецЦикла;
            КонецЦикла;
        КонецЦикла;
    Иначе
        Для Каждого Элемент Из ТабличныеДокументы Цикл
            ТабДок = Элемент.Значение;
            ТабДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
        КонецЦикла;
    КонецЕсли;
...
    
Но немного не догоняю, как его можно использовать. Может кто-то уже делал нечто подобное и может дать пару пинков в нужном направлении?
Смутно догадываюсь, что нужно передать процедуре список документов и массив сформированных табличных документов, но ясной картины нет. Или плюнуть, и сделать по старинке - запихнуть все в один табличный документ, один макет за другим?
1 Kookish
 
09.03.14
12:35
Посмотрел - данная процедура вызывается только если выполняется печать сразу на принтер. Значит, штатно пока не получится.
2 Kookish
 
09.03.14
12:40
А, нет, вру. Не только. Разбираюсь дальше.
3 H A D G E H O G s
 
09.03.14
12:50
в ут 11 сделано. Если есть - смотри.

Сделано конечно годно (архитектурно), но ужасно по исполнению (коду)
4 Kookish
 
09.03.14
13:03
(3) Именно то, что нужно! Спасибо, буду разбираться. Но еще подумаю, стоит ли так делать (архитектурно). Ибо каждый документ отправляется на принтер по отдельности, и нет шансов их слепить.
5 Kookish
 
09.03.14
13:15
Кроме того, нет возможности выводить документы в правильном порядке: Накл1Экз1, СФ1Экз1, Накл1Экз2, СФ1Экз2, Накл2Экз1, СФ2Экз1...
Делается либо:
Накл1Экз1, СФ1Экз1, Накл2Экз1, СФ2Экз1, ... Накл1Экз2, СФ1Экз2 ...
либо
Накл1Экз1, Накл1Экз2, СФ1Экз1, СФ1Экз2, ... Накл2Экз1, Накл2Экз2 ...

Но комментс.

З.Ы. Кстати, надо будет спросить у бухгалтеров, как им будет удобнее - мой вариант или первый штатный.
6 Kookish
 
11.03.14
09:16
Поговорил с бухгалтерами. Им нужен мой первый вариант. Буду рисовать все ручками, в один табличный документ.
7 fmrlex
 
11.03.14
09:21
(6) Посмотри как реализована подсистема печати БСП.
Там есть возможность выделить несколько доков в списке документов и напечатать их.
8 Kookish
 
11.03.14
09:23
(7) Уже посмотрел. Каждый документ отправляется на печать отдельным заданием. Это ужасно. И придется переписывать процедуру вывода на печать. Ту, что приведена в (0).
9 fmrlex
 
11.03.14
09:27
(8) Да какие нафиг отдельные задания?
Выдели с зажатым контролом несколько доков и нажми печать. В один табдок все попадет.
10 Kookish
 
11.03.14
09:35
(9) Гы-гы-гы. Вопрос был про печать комплектов документов. Например, бухам надо по каждой отгрузке распечатать 2 экземпляра ТОРГ-12 и 2 экземпляра СФ. Причем удобнее всего - если они будут чередоваться, как написано в первой строчке (5). Средствами БСП этого не сделать. Плюс (8). Таки отдельные задания. Я видел очередь на печать. Руки до сих пор трясутся.
Ошибка? Это не ошибка, это системная функция.