Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Размещение 18 этикеток на листе формата А4 , BAS 2.1.2.1          
medchuk Подменю пользователя
сообщение 18.11.19, 18:13
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 2
Спасибо сказали: 0 раз
Рейтинг: 0

Всем здравствуйте. Помогите начинающему программисту реализовать пакетную печать этикеток в 1с 8.3 (конф. BAS 2.1.2.1).
В справочнике Номенклатура создана печатная форма размером 4,5х7 см. Количество позиций в справочнике - 700шт.
При выборе нескольких позиций на печать выходят этикетки одним столбиком. В целях экономии бумаги принято решение разместить по 18 этикеток на одном листе А4 (как раз размещаются на одном листе).
Листинг в модуле следующий

Процедура ПечатьЕтикетки(ТабДок, Ссылка) Экспорт

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

    ПечОбл = Макет.ПолучитьОбласть("ПечОбл");
    
    ТабДок.Очистить();

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


Уже несколько дней пытаюсь найти решение - глухо. возможно кто то стыкался з подобным решением. Зарание спасибо


 ! 

Правила: 4, 5
 


Сообщение отредактировал Vofka - 18.11.19, 21:47

fly Подменю пользователя
сообщение 18.11.19, 19:04
Сообщение #2

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 234
Спасибо сказали: 51 раз
Рейтинг: 48

medchuk @ Сегодня, 19:13 * ,
Попробуйте использовать счетчик в цикле
И при каждом обходе если остаток от деления на число необходимых колонок этикеток на странице <> 0 использовать Присоединить вместо Вывести

Ну или если остаток от деления на количество колонок на странице + 1 <> о использовать присоединить, иначе вывести

Спасибо сказали: medchuk,

medchuk Подменю пользователя
сообщение 19.11.19, 17:35
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 2
Спасибо сказали: 0 раз
Рейтинг: 0

fly @ Вчера, 19:04 * ,
Исходя из Вашего совета решил ситуацию подобным образом. Было решение заодно задать параметры страницы и сменить из 18 этикеток на 16, так как не совсем корректно размещались на странице.
Делюсь результатом. Возможно кому то пригодится.
Процедура ПечатьЕтикетки(ТабДок, Ссылка) Экспорт
    Макет = Справочники.Номенклатура.ПолучитьМакет("Етикетка");
    Колонка = 1;
    Строка = 1;
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Номенклатура.Артикул,
    |    Номенклатура.Вес,
    |    Номенклатура.Комментарий,
    |    Номенклатура.Код,
    |    Номенклатура.НаименованиеПолное
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |    Номенклатура.Ссылка В (&Ссылка)";
    
    Запрос.Параметры.Вставить("Ссылка", Ссылка);
    Выборка = Запрос.Выполнить().Выбрать();
    
    ПечОбл = Макет.ПолучитьОбласть("ПечОбл");
    ТабДок.Очистить();

    Пока Выборка.Следующий() Цикл
                        
        ПечОбл.Параметры.Заполнить(Выборка);    
        
    Если Колонка = 1 Тогда
        ТабДок.Вывести(ПечОбл);
        Иначе ТабДок.Присоединить(ПечОбл)
        КонецЕсли;
        Колонка = Колонка +1;
        
    Если Колонка > 4 Тогда
        Колонка = 1;
        Строка= Строка+1;
    КонецЕсли;
    
    Если Строка = 5 Тогда
        ТабДок.ВывестиГоризонтальныйРазделительСтраниц()
    КонецЕсли;
    
    Если Строка > 4 Тогда
        Строка = 1;
    КонецЕсли;
КонецЦикла;

    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ТабДок.ПолеСлева = 5;
    ТабДок.ПолеСправа = 5;
    ТабДок.ПолеСверху = 5;
    ТабДок.ПолеСнизу = 5;
КонецПроцедуры



Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 16:56
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!