Имя: Пароль:
1C
1С v8
Заполнить областью макета весь лист а4
0 shock3r
 
29.10.12
11:32
Добрый день.

День область макета, в виде этикетки, небольшого размера, например 5х4 см. Сама область макета заполняется 4 параметрами из табличной части: "вес, размер, модель, серия"

Вопрос: Подскажите как сделать так, чтобы заполнить весь лист этикетками. Сейчас на 1 лист выводится 1 этикетка. Можно ли это реализовать кодом автоматически?
1 shock3r
 
29.10.12
11:33
День область макета = есть область макета
2 Cube
 
29.10.12
11:33
Можно
3 Cube
 
29.10.12
11:33
Разрешаем)
4 Maxus43
 
29.10.12
11:34
ТабличныйДокумент (SpreadsheetDocument)
ЭкземпляровНаСтранице (PerPage)
Использование:

Чтение и запись.
Описание:

Тип: Число.
Содержит количество страниц на листе при выводе табличного документа на печать. Допустимые значения: 1 - одна страница, 2 - две страницы, 0 - автоматическое определение.
5 Godofsin
 
29.10.12
11:34
посмотри как в типовых ценники выводятся
6 cw014
 
29.10.12
11:34
День область макета = есть область макета

Сильно сказано
7 shock3r
 
29.10.12
11:39
(4) Подскажите что делаю не так. Я никаких изменений не заметил, область макета как выводилась на каждом новом листе, так и выводится

Процедура ОсновныеДействияФормыМакет1(Кнопка)
   Для Каждого текСтрока из ТабличнаяЧасть1 Цикл
       ТабДокумент = Новый ТабличныйДокумент; //создаем новый табличный документ
       ТабДокумент.ЭкземпляровНаСтранице = 0;
       Макет = ПолучитьМакет("Макет1"); // получаем макет
       Макет.АвтоМасштаб = Истина;
       Макет.ПолеСверху = 0;
       Макет.ПолеСнизу =0;
       Макет.ПолеСлева = 0;
       Макет.ПолеСправа = 0;
       Макет.РазмерКолонтитулаСверху = 0;
       Макет.РазмерКолонтитулаСнизу = 0;
       Макет.РазмерСтраницы = "A4";
       Макет.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
       
       
   //    ТабДокумент.АвтоМасштаб();
       ОбластьМакета = Макет.ПолучитьОбласть("ОбластьМакета");
       ОбластьМакета.Рисунки["НадписьСерия"].Текст = текСтрока.Серия;
       ОбластьМакета.Рисунки["НадписьМодель"].Текст = текСтрока.Модель;
       ОбластьМакета.Рисунки["НадписьДатаВыпуска"].Текст = текСтрока.ДатаВыспуска;
       ОбластьМакета.Рисунки["НадписьРазмер"].Текст = текСтрока.Размер;
       ТабДокумент.Вывести(ОбластьМакета);
       ТабДокумент.Показать();
   КонецЦикла;
КонецПроцедуры
8 shock3r
 
29.10.12
11:42
Вся проблема в том, что в табличной части может быть как 4 номенклатуры, тогда 4 этикетки легко влезут на 1 лист а4, а может быть 50, тогда нужно еще чтобы они печатались на новых листах (по 10 штук например), в зависимости от того, сколько их помещается на лист.
9 shock3r
 
29.10.12
11:43
Просто я не могу понять подход, как вообще это реализовать, может вы поможете, в какую сторону копать?
10 Cube
 
29.10.12
11:43
(7) Смотри:

Для Каждого текСтрока из ТабличнаяЧасть1 Цикл
       ТабДокумент = Новый ТабличныйДокумент; //создаем новый табличный документ

Продолжать не стоит...
11 Godofsin
 
29.10.12
11:45
(9) Реализуй!
Функция ПечатьЦенника() Экспорт

   Если НЕ ЗначениеЗаполнено(Организация) Тогда
       Предупреждение("Не выбрана организация!");
       Возврат Неопределено;
   КонецЕсли;

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

   ДатаПечати = РабочаяДата;

   ТекСтолбец = 0;
   ТекСтрока  = 0;

   Для Каждого СтрокаТаблицы Из Товары Цикл
       Если СтрокаТаблицы.Печать Тогда
           Для Тмп = 1 По СтрокаТаблицы.Количество Цикл
               ОбластьЦенника.Параметры.Заполнить(СтрокаТаблицы);
               ОбластьЦенника.Параметры.НоменклатураНаименование        = СтрокаТаблицы.Номенклатура.НаименованиеПолное;
               ОбластьЦенника.Параметры.ХарактеристикаНаименование      = СтрокаТаблицы.ХарактеристикаНоменклатуры;
               ОбластьЦенника.Параметры.ЕдиницаНаименование             = СтрокаТаблицы.ЕдиницаИзмерения;
               ОбластьЦенника.Параметры.Цена                            = ОбщегоНазначения.ФорматСумм(СтрокаТаблицы.Цена, Валюта, "00");
               ОбластьЦенника.Параметры.ДатаПечати                      = ДатаПечати;
               ОбластьЦенника.Параметры.Организация                     = Организация;
               ОбластьЦенника.Параметры.ОрганизацияНаименование         = Организация;
               ОбластьЦенника.Параметры.НоменклатураСтранаПроисхождения = СтрокаТаблицы.Номенклатура.СтранаПроисхождения;

               Если ТекСтолбец = 0 Тогда
                   ТабДокумент.Вывести(ОбластьЦенника);
               Иначе
                   ТабДокумент.Присоединить(ОбластьЦенника);
               КонецЕсли;

               ТекСтолбец = ТекСтолбец + 1;

               Если ТекСтолбец = 5 Тогда
                   ТекСтрока  = ТекСтрока + 1;
                   ТекСтолбец = 0;
               КонецЕсли;

               Если ТекСтрока = 3 Тогда
                   ТекСтрока = 0;
                   ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
               КонецЕсли;
           КонецЦикла;
       КонецЕсли;
   КонецЦикла;

   ТабДокумент.ТолькоПросмотр = Истина;

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

КонецФункции // ПечатьЦенника()
12 shock3r
 
29.10.12
11:48
(10) Спасибо, я всё понял... Осталось только разобраться почему этикетки выводятся каждая на новом листе, наверно из-за линий разрыва на макете...

Процедура ОсновныеДействияФормыМакет1(Кнопка)
   ТабДокумент = Новый ТабличныйДокумент; //создаем новый табличный документ
   ТабДокумент.ЭкземпляровНаСтранице = 0;
   Для Каждого текСтрока из ТабличнаяЧасть1 Цикл
       Макет = ПолучитьМакет("Макет1"); // получаем макет
       Макет.АвтоМасштаб = Истина;
       Макет.ПолеСверху = 0;
       Макет.ПолеСнизу =0;
       Макет.ПолеСлева = 0;
       Макет.ПолеСправа = 0;
       Макет.РазмерКолонтитулаСверху = 0;
       Макет.РазмерКолонтитулаСнизу = 0;
       Макет.РазмерСтраницы = "A4";
       Макет.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
       ОбластьМакета = Макет.ПолучитьОбласть("ОбластьМакета");
       ОбластьМакета.Рисунки["НадписьСерия"].Текст = текСтрока.Серия;
       ОбластьМакета.Рисунки["НадписьМодель"].Текст = текСтрока.Модель;
       ОбластьМакета.Рисунки["НадписьДатаВыпуска"].Текст = текСтрока.ДатаВыспуска;
       ОбластьМакета.Рисунки["НадписьРазмер"].Текст = текСтрока.Размер;
       ТабДокумент.Вывести(ОбластьМакета);
   КонецЦикла;
   ТабДокумент.Показать();
КонецПроцедуры
13 shock3r
 
29.10.12
11:49
(11) спасибо, сейчас буду разбираться в вашем коде
14 Godofsin
 
29.10.12
11:53
(13) Это не мой, это типовой из УТ 10.3
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан