Имя: Пароль:
1C
1С v8
Печать договора
,
0 pv94384
 
03.08.11
15:35
Может кто сталкивался с токой проблемой... Вообщем в УТ 8.1 есть договор "Доверенность", так вот при печати он печатается на страницу А4 в одном экземпляре.
Итак, уважаемые знатоки, вопрос: Как сделать так, чтобы на одном листе А4 печаталось 3 таких договора, а то и 4?
1 Жан Пердежон
 
03.08.11
15:42
а что не получается: в настройки печати зайти или в коде чего поменять?
2 rrunover
 
03.08.11
15:42
1. В любой конфигурации подобный вопрос решается переделкой кода, а заодно и макета. Через Вывести(СекцияДоговора), Присоединить(СекцияДоговора), Вывести, Присоединить и т.д... повторять до изнеможения.

2. ЕМНИП, то многие принтеры позволяют компоновать несколько экземпляров на один лист.
3 pv94384
 
03.08.11
15:44
(1) В том-то и дело, что в коде запутался, думал всё намного проще...
(2) В данном отчете макет отсутствует...
4 pv94384
 
03.08.11
15:49
(2) Конец рабочего дня дает о себе знать... Туплю, макет есть...
5 pv94384
 
04.08.11
07:45
тема актуальна... подниму
6 rrunover
 
04.08.11
08:51
В чем загвоздка-то?
7 pv94384
 
04.08.11
08:57
Сделать так, чтоб при печате на одном листе выводилось сразу 4 договора... Программно сжать договора так, чтобы влезли и соответственно настроить, чтобы их выводилось 4 штуки
8 _
vovanidze_3412341
 
04.08.11
09:01
Людей пожалейте..которые эти ваши договора читать пытатся будут
9 butterbean
 
04.08.11
09:01
(7) ужать макет и 4 раза Вывести()
10 _
vovanidze_3412341
 
04.08.11
09:05
(9)так он тогда вниз 4 раза полезет...присоединять нада
11 pv94384
 
04.08.11
09:07
(8)(9)Вот в этом-то и дело... надо 2 столбца и 2 строки
12 butterbean
 
04.08.11
09:09
(10,11) ну Вывести(), Присоединить(), Вывести(), Присоединить()... в чем проблема-то??
13 hhhh
 
04.08.11
09:14
(11) ну сделайте новый макет из 4-х макетов. Это же 15 секунд у вас займет. И код менять не придется.
14 pv94384
 
04.08.11
09:49
(13) макет можно печатать 2х видов: весь на одной странице и двустороннюю печать, т.е. некоторые области должны выводиться на другой стороне и для этого случая вариант из 4х макетов не подходит...
15 rrunover
 
04.08.11
10:06
(14) всё равно не вижу проблем:
1. Весь на одной странице - макет номер раз
2. Двусторонняя печать - макет номер дваз
3. Вариант из 3-4-х макетов - макет номер три-з

всё про всё вместе с настройкой и подгонкой для "покрасивше" занимает максимум 6 часов неторопливыми пальцами.

А. Про третий вариант подробнее: получаешь секцию, в которой у тебя мелким почерком переписан (читай - сде-лан за-но-во) оригинальный вариант макета из первого варианта, далее по коду пишешь Вывести(СекцияДоговора), Присоединить(СекцияДоговора), Вывести(СекцияДоговора), Присоединить(СекцияДоговора).

Б. Получится так:
[1 шаг] [2 шаг]
[3 шаг] [4 шаг]

В. ????Г
Г. Profit!
16 rrunover
 
04.08.11
10:08
+ к (14) про варианты вывода я писал в (2), его же упомянули в (12). Что именно не получается?
17 pv94384
 
04.08.11
10:25
(16) Сделал через "Присоединить", всё нормально присоединяет, только присоединяет под макет, а не справа от него...
Есть ли смысл уменьшать ширину макета или не в этом причина?
18 butterbean
 
04.08.11
10:34
(17) не в этом, код покажи
19 pv94384
 
04.08.11
10:37
Функция ПечатьДоверенности(НазваниеМакета)

   Запрос = Новый Запрос();
   Запрос.УстановитьПараметр("ТекущийДокумент",  ЭтотОбъект.Ссылка);
   Запрос.УстановитьПараметр("ДатаСреза",        Дата);
   Запрос.УстановитьПараметр("ФизЛицо",          ФизЛицо.Ссылка);

   Запрос.Текст =
   "ВЫБРАТЬ
   |    Номер КАК НомерДокумента,
   |    Дата  КАК ДатаДокумента,
   |    Организация КАК Руководители,
   |    Организация,
   |    ФизЛицо,
   |    Контрагент                КАК Поставщик,
   |    БанковскийСчетОрганизации КАК БанковскийСчет,
   |    ВЫБОР
   |        КОГДА ВЫРАЗИТЬ(НаПолучениеОт КАК СТРОКА(100)) = """" ТОГДА Контрагент.НаименованиеПолное
   |        ИНАЧЕ НаПолучениеОт
   |    КОНЕЦ КАК ПоставщикПредставление,
   |    ДатаДействия                 КАК СрокДействия,
   |    ПоДокументу                  КАК РеквизитыДокументаНаПолучение,
   |    Товары.(
   |        НомерСтроки              КАК Номер,
   |        НаименованиеТовара       КАК Ценности,
   |        НаименованиеТовара       КАК ЦенностиПредставление,
   |        ЕдиницаПоКлассификатору  КАК ЕдиницаИзмерения,
   |        ЕдиницаПоКлассификатору.Представление КАК ЕдиницаИзмеренияПредставление,
   |        Количество
   |    )
   |ИЗ
   |    Документ.Доверенность КАК Доверенность
   |ГДЕ
   |    Доверенность.Ссылка = &ТекущийДокумент
   |
   |УПОРЯДОЧИТЬ ПО
   |    Товары.НомерСтроки
   |";

   Шапка = Запрос.Выполнить().Выбрать();
   Шапка.Следующий();
   ВыборкаСтрокТовары = Шапка.Товары.Выбрать();

   ТабДокумент = Новый ТабличныйДокумент;
   ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Доверенность_М2";

   Макет = ПолучитьОбщийМакет("М2");

   ФамилияИмяОтчествоФизЛица     = ФормированиеПечатныхФорм.ФамилияИмяОтчество(Шапка.ФизЛицо, Шапка.ДатаДокумента);
   ФамилияИмяОтчествоДоверенного = ФамилияИмяОтчествоФизЛица.Фамилия + " " + ФамилияИмяОтчествоФизЛица.Имя + " " + ФамилияИмяОтчествоФизЛица.Отчество;
   ДолжностьДоверенного          = Должность;

   Если НазваниеМакета = "М2" тогда
       ОбластьМакета = Макет.ПолучитьОбласть("Отрез");
       ОбластьМакета.Параметры.Заполнить(Шапка);
       ОбластьМакета.Параметры.НомерДокумента = ОбщегоНазначения.ПолучитьНомерНаПечать(ЭтотОбъект);
       ОбластьМакета.Параметры.ФИОДоверенного = СокрЛП(Должность) + " " + ОбщегоНазначения.ФамилияИнициалыФизЛица(ФамилияИмяОтчествоДоверенного);
       ТабДокумент.Вывести(ОбластьМакета);
       ТабДокумент.Присоединить(ОбластьМакета);                                        //
       НазваниеФормы = "Типовая межотраслевая форма № М-2";
   Иначе
       НазваниеФормы = "Типовая межотраслевая форма № М-2а";
   КонецЕсли;

   Руководители = РегламентированнаяОтчетность.ОтветственныеЛицаОрганизации(Шапка.Руководители, Шапка.ДатаДокумента);
   Руководитель = Руководители.Руководитель;
   Бухгалтер    = Руководители.ГлавныйБухгалтер;

   ПаспортФизЛица        = ОбщегоНазначения.ПаспортныеДанные(Шапка.ФизЛицо, Шапка.ДатаДокумента);
   СведенияОбОрганизации = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Организация, Шапка.ДатаДокумента,, Шапка.БанковскийСчет);

   ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
   ОбластьМакета.Параметры.Заполнить(Шапка);
   ОбластьМакета.Параметры.НомерДокумента                = ОбщегоНазначения.ПолучитьНомерНаПечать(ЭтотОбъект);
   ОбластьМакета.Параметры.НазваниеФормы                 = НазваниеФормы;
   ОбластьМакета.Параметры.ОрганизацияПредставление      = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,ИНН,КПП, ЮридическийАдрес,Телефоны,");
   ОбластьМакета.Параметры.РеквизитыСчета                = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "НомерСчета,Банк,БИК,КоррСчет,");
   ОбластьМакета.Параметры.РеквизитыПотребителя          = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,ИНН,КПП,ЮридическийАдрес,Телефоны,");
   ОбластьМакета.Параметры.ОрганизацияКодПоОКПО          = СведенияОбОрганизации.КодПоОКПО;
   ОбластьМакета.Параметры.ДолжностьДоверенного          = ДолжностьДоверенного;
   ОбластьМакета.Параметры.ФамилияИмяОтчествоДоверенного = ФамилияИмяОтчествоДоверенного;
   ОбластьМакета.Параметры.ПаспортСерия                  = ПаспортФизЛица.Серия;
   ОбластьМакета.Параметры.ПаспортНомер                  = ПаспортФизЛица.Номер;
   ОбластьМакета.Параметры.ПаспортВыдан                  = ПаспортФизЛица.Выдан;
   ОбластьМакета.Параметры.ПаспортДатаВыдачи             = ПаспортФизЛица.ДатаВыдачи;
   ОбластьМакета.Параметры.ДатаДокумента                 = Формат(Шапка.ДатаДокумента,"ДФ = ""дд ММММ гггг """"г.""");
   ОбластьМакета.Параметры.СрокДействия                  = Формат(Шапка.СрокДействия,"ДФ = ""дд ММММ гггг """"г.""");
   ТабДокумент.Вывести(ОбластьМакета);                                                                      //
   ТабДокумент.Присоединить(ОбластьМакета);

   ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
   ТабДокумент.Вывести(ОбластьМакета);
   ТабДокумент.Присоединить(ОбластьМакета);                                                                //

   Пока ВыборкаСтрокТовары.Следующий() Цикл
       ОбластьМакета = Макет.ПолучитьОбласть("Строка");
       ОбластьМакета.Параметры.Заполнить(ВыборкаСтрокТовары);
       ОбластьМакета.Параметры.КоличествоПрописью = ?(ВыборкаСтрокТовары.Количество = 0, "",
                                                    Строка(ВыборкаСтрокТовары.Количество) + " (" +
                                                    ФормированиеПечатныхФорм.КоличествоПрописью(ВыборкаСтрокТовары.Количество) + ")");
       ТабДокумент.Вывести(ОбластьМакета);
       ТабДокумент.Присоединить(ОбластьМакета);                                                            //
   КонецЦикла;

   ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
   ОбластьМакета.Параметры.Заполнить(Шапка);

   Если ЗначениеЗаполнено(Руководитель) Тогда
       ОбластьМакета.Параметры.ФИОРуководителя       = Руководитель;
       ОбластьМакета.Параметры.Руководитель          = Руководитель;
   КонецЕсли;

   Если ЗначениеЗаполнено(Бухгалтер) Тогда
       ОбластьМакета.Параметры.ФИОГлавногоБухгалтера = Бухгалтер;
       ОбластьМакета.Параметры.ГлавныйБухгалтер      = Бухгалтер;
   КонецЕсли;

   ТабДокумент.Вывести(ОбластьМакета);
   ТабДокумент.Присоединить(ОбластьМакета);                                                                //

   Возврат ТабДокумент;

КонецФункции
20 rrunover
 
04.08.11
10:40
Столько всего, что не знаю, с чего начать...
21 butterbean
 
04.08.11
10:41
(19) все проще - выводишь в один ТабДокумент свой договор, потом делаешь ИтоговыйТабДокумент, и в него уже ИтоговыйТабДокумент.Вывести(ТабДокумент)
ИтоговыйТабДокумент.Присоединить(ТабДокумент)
..... и т.д.
22 pv94384
 
04.08.11
11:50
(20) С самого начала
(21)А если не искать других путей, а добить тему с "Присоединить"
23 pv94384
 
04.08.11
13:35
Подниму...
Так почему он присоединяет мне вниз, а не справа?
24 Kookish
 
04.08.11
13:42
Потому что не используешь вертикальные области.
25 pv94384
 
04.08.11
13:45
(24) не совсем понял... давайте с этого места по подробнее
26 Kookish
 
04.08.11
14:04
В макете могут быть как горизонтальные, так и вертикальные области. Горизонтальные видно слева, вертикальные сверху. Горизонтальные присоединяются (или просто выводятся) друг за другом сверху вниз. Вертикальные можно присоединять слева направо. В тексте области разделяются вертикальной чертой.
То есть строка:
ОбластьНомера = Макет.ПолучитьОбласть("ШапкаТаблицы|НомерСтроки");
задаст прямоугольную область, ограниченную "ШапкаТаблицы" по горизонтали и "НомерСтроки" по вертикали. Затем ее можно как вывести (внизу от уже выведенного), так и присоединить (справа от уже выведенного). С нюансами разбирайся сам.
27 rrunover
 
04.08.11
14:05
Присоединяюсь к предыдущему оратору.
И порекомендовал бы для начала создать простенький макет с пересечениями областей и поиграться с Вывести и Присоединить.
28 pv94384
 
04.08.11
14:17
Гугл не помогает найти теорию по областям, поэтому спрошу здесь...
Т.е. мне надо выделить колонки, которые содержат область макета и путем ctrl + shift + N дать имя?
Буду благодарен за ссылку на литературу по данной теме.
29 pv94384
 
04.08.11
14:34
Получилось! Но просьба о ссылке до сих пор актуальна )