|
Заполнить областью макета весь лист а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
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |