Имя: Пароль:
1C
1С v8
групповая печать документов
,
0 Kurbash
 
21.05.14
10:27
такая ситуация- сделал печатную форму для документа, все работает, все нормально. Проблема в том, что использую объединение нескольких ячеек в секции. Для одного документа все работает нормально а если делаю групповую печать макет ползет...как можно обойти?
1 mikecool
 
21.05.14
10:27
если делаю групповую печать -несколько макетов в одном?
2 Godofsin
 
21.05.14
10:28
(0) макет ползет - как?
3 Godofsin
 
21.05.14
10:28
Автомасштаб + горизонтальный разделитель
4 Kurbash
 
21.05.14
10:29
(1)-нет один макет просто печатаю доки в цикле
(2)-объединение срабатывает не там где нужно, у меня же явно указаны строки и столцы которые нужно объединить
5 Godofsin
 
21.05.14
10:30
код покажи
6 butterbean
 
21.05.14
10:30
(4) делай разные таб доки, а не один
7 mikecool
 
21.05.14
10:30
(4) нихера не понял в чем тогда проблема
8 Kurbash
 
21.05.14
10:31
&НаКлиенте
Процедура ПечатьНарядов(Команда)
    ТабДок = Новый ТабличныйДокумент;
    ПечатьНарядовНаСервере(ТабДок,объект.Ссылка);


    ТабДок.ОтображатьСетку = Ложь;
    ТабДок.Защита = Истина;
    ТабДок.ТолькоПросмотр = Истина;
    ТабДок.ОтображатьЗаголовки = Ложь;
    ТабДок.Показать();
    
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ПечатьНарядовНаСервере(ТабДок,Ссылка)
    для каждого стор из Ссылка.НарядыВыписанные цикл
    Операция="";
    Колво="";
    Макет = Документы.НарядЗадание.ПолучитьМакет("Печать1");
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    НарядЗаданиеСоставНаряда.Ссылка.Подразделение,
    |    НарядЗаданиеСоставНаряда.Ссылка.Участок,
    |    НарядЗаданиеСоставНаряда.Ссылка.Сотрудник КАК сотрудник,
    |    НарядЗаданиеСоставНаряда.Ссылка.Сотрудник.Код КАК НарядТабНомер,
    |    НарядЗаданиеСоставНаряда.Ссылка.Сотрудник.Должность КАК НарядДолжностьСотрудника,
    |    НарядЗаданиеСоставНаряда.Ссылка.Сотрудник.Разряд КАК НарядРазрядСотрудника,
    |    НарядЗаданиеСоставНаряда.Ссылка.Дата,
    |    НарядЗаданиеСоставНаряда.Деталь КАК деталь,
    |    НарядЗаданиеСоставНаряда.Операция КАК операция,
    |    НарядЗаданиеСоставНаряда.ВИдОплаты,
    |    НарядЗаданиеСоставНаряда.ДетальКорректировка,
    |    НарядЗаданиеСоставНаряда.ОперацияКорректировка,
    |    НарядЗаданиеСоставНаряда.Ссылка.Номер,
    |    НарядЗаданиеСоставНаряда.Количество,
    |    НарядЗаданиеСоставНаряда.Закрыто как НарядПринятоГодных
    |ИЗ
    |    Документ.НарядЗадание.СоставНаряда КАК НарядЗаданиеСоставНаряда
    |ГДЕ
    |    НарядЗаданиеСоставНаряда.Ссылка = &Ссылка";
    Запрос.Параметры.Вставить("Ссылка", стор.Наряд);
    Выборка = Запрос.Выполнить().Выбрать();
    Выборка1 = Запрос.Выполнить().Выбрать();

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

    Работы= Макет.ПолучитьОбласть("Работы");
    
                если не значениезаполнено(Выборка1.Операция) тогда
        опер=выборка1.ОперацияКорректировка;
        иначе
        Опер=Выборка1.Операция.КодОперации+"("+Выборка1.Операция.Наименование+")";
    конецесли;
            Работы.Параметры.Заполнить(Выборка1);
            Работы.Параметры.НарядНомерОперации=опер;
            Работы.Параметры.НарядКоличество=выборка1.Количество;
            Работы.Параметры.НарядНормаРасценка=Выборка1.НарядРазрядСотрудника.ЗначениеРазряда;
            Работы.Параметры.НарядНормаВремя=РаботаСоСправочниками.ОпределениеНормыВремени(Выборка1.Подразделение,Выборка1.Деталь,Выборка1.Операция);
            ТабДок.Вывести(Работы, Выборка1.Уровень());
    конеццикла;
    //объедиение
    обл=ТабДок.Область(5,2,5+выборка1.Количество()-1,2);
    обл.Объединить();
    обл=ТабДок.Область(5,3,5+выборка1.Количество()-1,3);
    обл.Объединить();
    обл=ТабДок.Область(5,4,5+выборка1.Количество()-1,4);
    обл.Объединить();
    обл=ТабДок.Область(5,5,5+выборка1.Количество()-1,5);
    обл.Объединить();
    обл=ТабДок.Область(5,6,5+выборка1.Количество()-1,6);
    обл.Объединить();
//конец объединеию
    
    ШифрыИНаименованияРаботШапка = Макет.ПолучитьОбласть("ШифрыИНаименованияРаботШапка");
    ТабДок.Вывести(ШифрыИНаименованияРаботШапка);

        
        Пока Выборка.Следующий() Цикл
        ШифрыИНаименованияРабот= Макет.ПолучитьОбласть("ШифрыИНаименованияРабот");

    если не значениезаполнено(Выборка.Деталь) тогда
        Дет=выборка.ДетальКорректировка+";";
        иначе
        Дет=Выборка.Деталь.ЧЕртежныйНомер+"("+Выборка.Деталь.Наименование+");";
    конецесли;

            ШифрыИНаименованияРабот.Параметры.Заполнить(Выборка);

        КонецЦикла;
            ШифрыИНаименованияРабот.Параметры.НаименованиеРабот=Дет;
            ТабДок.Вывести(ШифрыИНаименованияРабот, Выборка.Уровень());

        
        ВставлятьРазделительСтраниц = Истина;

    СотрудникиНарядаШапка=Макет.ПолучитьОбласть("СотрудникиНарядаШапка");
    ТабДок.Вывести(СотрудникиНарядаШапка);
    СотрудникиНаряда=Макет.ПолучитьОбласть("СотрудникиНаряда");
    СотрудникиНаряда.Параметры.СОтрудник=СОтрудник;
    СотрудникиНаряда.Параметры.НарядТабНомер=НарядТабНомер;
    СотрудникиНаряда.Параметры.НарядРазрядСотрудника=НарядРазрядСотрудника;
    СотрудникиНаряда.Параметры.НарядДолжностьСотрудника=НарядДолжностьСотрудника;
    СотрудникиНаряда.Параметры.ВИдОплаты=ВИдОплаты;
    ТабДок.Вывести(СотрудникиНаряда);
    
    
    Шапка=Макет.ПолучитьОбласть("Шапка");
    ТабДок.Вывести(Шапка);
  


конеццикла;
КонецПроцедуры
9 mikecool
 
21.05.14
10:33
если печатаешь один и тот же макет в одном табдоке, то проблемы быть не должно
если разные макеты в табдоке - то тут надо уже поизвращаться
10 Kurbash
 
21.05.14
10:34
новый таб док не нужно-доков очень много хотят вывести кучей и порвать по отдельности линейкой
11 Godofsin
 
21.05.14
10:35
запрос в цикле детектед
12 butterbean
 
21.05.14
10:36
(10) ты делай один таб док и его сразу на принтер, без Показать(), потом второй и т.д.
13 Kurbash
 
21.05.14
10:37
ну смотри-если док выйдет только на полстраницы когда на страницу можно вывести 2 штуки?
14 Godofsin
 
21.05.14
10:39
(13)ПроверитьВывод()
15 butterbean
 
21.05.14
10:39
(13) а документы неформатированные что-ли?? т.е. полшапки не может быть или строчки вдоль порезанные??
16 butterbean
 
21.05.14
10:40
(15) + обычно напечатанный документ занимает целое количество страниц, ну или фиксированно половину/треть страницы
17 Godofsin
 
21.05.14
10:41
|    НарядЗаданиеСоставНаряда.Ссылка В (&МассивСсылка)";
    Запрос.Параметры.Вставить("МассивСсылка", Ссылка.НарядыВыписанные.ВыгрузитьКолонку("Наряд"));

Запрос из цикла выкини
18 Kurbash
 
21.05.14
10:43
(14)-как это можно использовать?
(17)-да не в нем дело, там цикл по трем-4-м докам, данных немного
(15)да, енотформатированные
19 Godofsin
 
21.05.14
10:45
(18) "как это можно использовать"
СП тебе подскажет
20 Kurbash
 
21.05.14
10:46
(19 уже читал, не догоню куда вставить)
21 Godofsin
 
21.05.14
10:46
"да не в нем дело, там цикл по трем-4-м докам, данных немного"
Какая разница, сколько доков? Запрос в цикле - моветон
22 Godofsin
 
21.05.14
10:50
(20) Т.Добавить(ШапкаДокумента);
Т.Добавить(СтрокаДокумента);
Т.Добавить(ПодвалДокумента);
Если Не ТабДок.ПроверитьВывод(Т) Тогда
    Сообщить("Документ не умещается на страницу!");
КонецЕсли;
23 Kurbash
 
21.05.14
10:53
а чем мне это поможет если макет то ползет?
24 Godofsin
 
21.05.14
10:56
(23) Я тебе и не говорил, что это поможет побороть сдвижение Это был ответ на (13)
25 Godofsin
 
21.05.14
10:57
а едет у тебя из-за этого. Чтоб моск не ипать себе, воспользуйся (12)
26 Godofsin
 
21.05.14
10:57
(25) из за этого:
    обл=ТабДок.Область(5,2,5+выборка1.Количество()-1,2);
    обл.Объединить();
    обл=ТабДок.Область(5,3,5+выборка1.Количество()-1,3);
    обл.Объединить();
    обл=ТабДок.Область(5,4,5+выборка1.Количество()-1,4);
    обл.Объединить();
    обл=ТабДок.Область(5,5,5+выборка1.Количество()-1,5);
    обл.Объединить();
    обл=ТабДок.Область(5,6,5+выборка1.Количество()-1,6);
    обл.Объединить();
27 Kurbash
 
21.05.14
10:58
разорутся бухи-бумагу экономят
28 Godofsin
 
21.05.14
10:58
и вообще, для чего такое адское объединение?
29 Godofsin
 
21.05.14
11:00
Покажи скрин ТД
30 Kurbash
 
21.05.14
11:05
31 Godofsin
 
21.05.14
11:07
(30) Где чо съехало то?
32 Kurbash
 
21.05.14
11:07
левый нижний угол
33 Godofsin
 
21.05.14
11:09
Ответь на (28)
34 Kurbash
 
21.05.14
11:10
да там замутка одна, короче нужно без него никак
35 Kurbash
 
21.05.14
11:48
что, придется тупо 1 док на 1 табдок выводить?
36 Godofsin
 
21.05.14
11:49
(35) Ну или хитро ипаться с (26)