Имя: Пароль:
1C
1С v8
Пакетная печать
,
0 Михей
 
10.01.13
11:19
Хеллоу!


Объединил с горем пополам два разных таб документа, один расходная накладная а второй налоговая накладная.

При выводе пользователю на просмотр объединенного табличного документа все чинно а вот когда жмякаешь предварительный просмотр то все смещается из за разного количества колонок в обеих таб доках.

Как это можно пофиксить?
1 Михей
 
10.01.13
11:29
В макете налоговой 114 колонок а в макете расходной 10
2 Леха Дум
 
10.01.13
11:30
// Производит соединение разных по форматированию табличных документов
// ТДПриемник - табличный документ, в кот. устанавливается новый формат
// Отчет - табличный документ, на основании кот. будет установлен новый формат
Процедура ДобавитьОтчет(ТДПриемник, Отчет, ВыводитьРазделительСтраниц = Ложь) Экспорт

   Если ВыводитьРазделительСтраниц Тогда
       ТДПриемник.ВывестиГоризонтальныйРазделительСтраниц();
   КонецЕсли;    
   НачалоНовогоФорматаСтрок = ТДПриемник.ВысотаТаблицы + 1;
   ОбластьПрямоугольная = Отчет.Область(1, , Отчет.ВысотаТаблицы, );
   ТДПриемник.ВставитьОбласть(ОбластьПрямоугольная, ТДПриемник.Область(НачалоНовогоФорматаСтрок, 1));
   ТДПриемник.Область(НачалоНовогоФорматаСтрок, , НачалоНовогоФорматаСтрок + Отчет.ВысотаТаблицы - 1, ).СоздатьФорматСтрок();
   // назначим ширину колонок у новой области формата строк
   Для Счетчик = 1 По Отчет.ШиринаТаблицы Цикл
       ТДПриемник.Область(НачалоНовогоФорматаСтрок, Счетчик).ШиринаКолонки = Отчет.Область(1, Счетчик, 1, Счетчик).ШиринаКолонки;
   КонецЦикла;

КонецПроцедуры // ДобавитьОтчет
3 Михей
 
10.01.13
11:35
(2) у меня эта функция какраз и используется и все красиво объединяется но на печати какого то фига все смещается
4 mikecool
 
10.01.13
11:36
(3) попробуй на другом принтере
5 Михей
 
10.01.13
11:42
(4) я не на принтер отправляю а Предварительный просмотр таб дока включаю и вижу что все разъехалось
6 Леха Дум
 
10.01.13
11:42
понятно, столкнулся тоже с этим, для БСП2.0 пока выкрутился так:

Для Каждого ОбъектПечати Из ОбъектыПечати Цикл
           ИмяОбласти = ОбъектПечати.Представление;
           Для Каждого Элемент Из ТабличныеДокументы Цикл
               ТабДок = Элемент.Значение;
               ОбластьПечати = ТабДок.Области.Найти(ИмяОбласти);
               Если ОбластьПечати = Неопределено Тогда
                   Продолжить;
               КонецЕсли;
               
               ПовторятьПриПечатиСтрокиДокумента = ТабДок.ПовторятьПриПечатиСтроки;
                               
               Если ТабДок.АвтоМасштаб тогда
                   ТабДокПечать = Новый ТабличныйДокумент;
                   ТабДокПечать.ВставитьОбласть(ОбластьПечати, ТабДокПечать.Область(1,1,1,1));
                   ТабДокПечать.ИмяПараметровПечати = ТабДок.ИмяПараметровПечати;
                   Если Не ТабДок.ПовторятьПриПечатиСтроки = Неопределено Тогда
                       ТабДокПечать.ПовторятьПриПечатиСтроки = ТабДокПечать.Область(ТабДок.ПовторятьПриПечатиСтроки.Верх, , ТабДок.ПовторятьПриПечатиСтроки.Низ);
                   КонецЕсли;
                   ТабДокПечать.АвтоМасштаб = Истина;
                   ТабДокПечать.ОриентацияСтраницы = ТабДок.ОриентацияСтраницы;
                   Для й = 1 По ТабДок.ШиринаТаблицы Цикл
                       ТабДокПечать.Область(1, й).ШиринаКолонки = ТабДок.Область(1, й).ШиринаКолонки;
                   КонецЦикла;
                   ТабДокПечать.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
               Иначе
                   Если Не ТабДок.ПовторятьПриПечатиСтроки = Неопределено Тогда
                       ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область(ОбластьПечати.Верх + ТабДок.ПовторятьПриПечатиСтроки.Верх - 1, , ОбластьПечати.Верх + ТабДок.ПовторятьПриПечатиСтроки.Низ - 1);
                   КонецЕсли;
                   ОбластьПечатиПользователя = ТабДок.ОбластьПечати;
                   ТабДок.ОбластьПечати = ОбластьПечати;
                   
                   ТабДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
                   
                   ТабДок.ОбластьПечати = ОбластьПечатиПользователя;
                   ТабДок.ПовторятьПриПечатиСтроки = ПовторятьПриПечатиСтрокиДокумента;
                   ТабДок.АвтоМасштаб = Истина;
                   ТабДок.ПолеСверху = 10;

               КонецЕсли;
                               
           КонецЦикла;
       КонецЦикла;
7 Михей
 
10.01.13
11:55
(6) мне надо отправлять именно одним пакетом на печать
8 Леха Дум
 
10.01.13
12:03
а когда печатаешь сразу на принтер - эффект тот же что и при просмотре?
9 Леха Дум
 
10.01.13
12:17
(7) нужно еще учитывать такой вариант, что при большом объеме печати принтер может тупо не проглотить, а здесь гарантия хоть какая то :)
10 Михей
 
10.01.13
12:33
(8) на принтер не пробовал
(9) объем не большой, 3-4 страницы максимум
11 AndyTLT63
 
10.01.13
12:44
Правильный ответ в (2). Если у ТС не получается ... значит он что то делает неправильно. Посмотри В СП есть пример.
12 Михей
 
07.02.13
10:43
Все еще актуально (печатают одновременно и много людей, потом стоят возле принтера и выбирают где чье).

Одним заданием сразу несколько печатных форм?
13 Михей
 
07.02.13
10:53
ап
14 Михей
 
07.02.13
12:31
up
15 Михей
 
25.02.13
17:20
так что там? может в 8.3 это возможно?
16 Михей
 
28.02.13
10:13
я понял в чем прикол, при объединении в итоговом таб. документе добавляется куча пустых колонок справа от первого, за счет этого выводится куча пустых листов.

Теперь вопрос в том как от них избавится?

Спасибо.
17 Михей
 
05.03.13
13:05
избавился от пустых колонок, путем их удаления и стало намного лучше, но все равно не до конца.
Так как количество колонок в объединяемых макетах разное, то один лист растянут на всю ширину страницы а второй только на процентов 90.

Че делать?
18 mikecool
 
05.03.13
13:10
(17) растягивай колонки того, что меньше по ширине
ваш кеп
19 SherifSP
 
05.03.13
13:15
Выводить и забивать по ширине страницы не предлагать?))
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой