Всем здравствуйте. Помогите начинающему программисту реализовать пакетную печать этикеток в 1с 8.3 (конф. BAS 2.1.2.1).
В справочнике Номенклатура создана печатная форма размером 4,5х7 см. Количество позиций в справочнике - 700шт.
При выборе нескольких позиций на печать выходят этикетки одним столбиком. В целях экономии бумаги принято решение разместить по 18 этикеток на одном листе А4 (как раз размещаются на одном листе).
Листинг в модуле следующий
Процедура ПечатьЕтикетки(ТабДок, Ссылка) Экспорт
Макет = Справочники.Номенклатура.ПолучитьМакет("Печать етикетки");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Артикул,
| Номенклатура.Код,
| Номенклатура.Комментарий,
| Номенклатура.Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
ПечОбл = Макет.ПолучитьОбласть("ПечОбл");
ТабДок.Очистить();
ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
ПечОбл.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ПечОбл, Выборка.Уровень());
ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
КонецПроцедуры
! | https://pro1c.org.ua/index.php?act=announce&id=2: 4, 5 |
medchuk @ Сегодня, 19:13
,
Попробуйте использовать счетчик в цикле
И при каждом обходе если остаток от деления на число необходимых колонок этикеток на странице <> 0 использовать Присоединить вместо Вывести
Ну или если остаток от деления на количество колонок на странице + 1 <> о использовать присоединить, иначе вывести
fly @ Вчера, 19:04
,
Исходя из Вашего совета решил ситуацию подобным образом. Было решение заодно задать параметры страницы и сменить из 18 этикеток на 16, так как не совсем корректно размещались на странице.
Делюсь результатом. Возможно кому то пригодится.
Процедура ПечатьЕтикетки(ТабДок, Ссылка) Экспорт
Макет = Справочники.Номенклатура.ПолучитьМакет("Етикетка");
Колонка = 1;
Строка = 1;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Артикул,
| Номенклатура.Вес,
| Номенклатура.Комментарий,
| Номенклатура.Код,
| Номенклатура.НаименованиеПолное
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
ПечОбл = Макет.ПолучитьОбласть("ПечОбл");
ТабДок.Очистить();
Пока Выборка.Следующий() Цикл
ПечОбл.Параметры.Заполнить(Выборка);
Если Колонка = 1 Тогда
ТабДок.Вывести(ПечОбл);
Иначе ТабДок.Присоединить(ПечОбл)
КонецЕсли;
Колонка = Колонка +1;
Если Колонка > 4 Тогда
Колонка = 1;
Строка= Строка+1;
КонецЕсли;
Если Строка = 5 Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц()
КонецЕсли;
Если Строка > 4 Тогда
Строка = 1;
КонецЕсли;
КонецЦикла;
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабДок.ПолеСлева = 5;
ТабДок.ПолеСправа = 5;
ТабДок.ПолеСверху = 5;
ТабДок.ПолеСнизу = 5;
КонецПроцедуры
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua