Периодически возникает необходимость распечатать большое количество этикеток с наименованием и штрих кодами для большого ассортимента товара, для этого вам не потребуется отдельный специальный принтер и лента для такого принтера. Выход из положения это стандартный офисный принтер и лист формата А4 для этикеток.
1. Производим заполнение реквезитов из документа по каждой строке
Процедура ЗаполнитьРеквизиты()
Для Каждого Стр Из Поступление.Товары Цикл
НоваяСтрока = Объект.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Стр);
НоваяСтрока.Артикул = Стр.Номенклатура.Артикул;
НоваяСтрока.РабочееНаименование = Стр.Номенклатура.Наименование;
НоваяСтрока.НаименованиеПолное = Стр.Номенклатура.НаименованиеПолное;
НоваяСтрока.ШтрихКод = ПолучитьШтрихКод(Стр.Номенклатура.Артикул);
НоваяСтрока.Производитель = ПолучитьПроизводитель(Стр.Номенклатура.Артикул)
КонецЦикла;
КонецПроцедуры
2. Далее после заполнение и проверки количества, производим печать с предварительным просмотром конечно
&НаКлиенте
Процедура ПечатьНаклеек(Команда)
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(Поступление);
Печать("ПечатьДокументаИзФормы",МассивОбъектов);
КонецПроцедуры
3. Ну и сама непосредственно печать
&НаКлиенте
Процедура Печать(ИдентификаторКоманды, МассивОбъектов) Экспорт
ТабДок = Новый ТабличныйДокумент;
ПечатьНаСервере(МассивОбъектов, ТабДок);
ТабДок.Показать();
КонецПроцедуры
4. Заключительный и важный этап
&НаСервере
Процедура ПечатьНаСервере(МассивОбъектов, ТабДок)
Макет = ПолучитьМакетСервер(Поступление.Ссылка);
ОблСтрока = Макет.ПолучитьОбласть("Строка|Столбец");
УжеДобавили = 0;
ЗначениеШтрихкодаПроверкаНаСовпадение = "";
i = 1;
Для Каждого Стр Из Объект.Товары Цикл
Если СтрДлина(Стр.Артикул) > 25 Тогда
РазмерШрифтаДляМакета = 18
ИначеЕсли СтрДлина(Стр.Артикул) < 24 Тогда
РазмерШрифтаДляМакета = 24;
КонецЕсли;
ЗначениеШтрихкода = Стр.ШтрихКод;
Если ЗначениеЗаполнено(ЗначениеШтрихкода) Тогда
ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Ширина", 110 );
ПараметрыШтрихкода.Вставить("Высота", 65 );
ПараметрыШтрихкода.Вставить("Штрихкод", СокрЛП(ЗначениеШтрихкода));
ПараметрыШтрихкода.Вставить("ТипКода", 1 );
ПараметрыШтрихкода.Вставить("ОтображатьТекст", Истина);
ПараметрыШтрихкода.Вставить("РазмерШрифта", 10 );
ИмяФайлаКартнки = КаталогВременныхФайлов()+"Картинка1java_2.jpg";
ДвоичныеДанныеКартинки = ПолучитьМакетКартинкаСервер("java2");
ДвоичныеДанныеКартинки.Записать(ИмяФайлаКартнки);
Рисунок = ОблСтрока.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Верх = 22;
Рисунок.Высота = 34;
Рисунок.Ширина = 63;
Рисунок.Лево = 58;
Рисунок.Картинка = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
Рисунок.РазмерКартинки = РазмерКартинки.Растянуть;
Рисунок.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии);
Иначе
Рисунок = ОблСтрока.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Верх = 22;
Рисунок.Высота = 34;
Рисунок.Ширина = 64;
Рисунок.Лево = 58;
Рисунок.Картинка = БиблиотекаКартинок.ЭлектронныеДокументыНеправильнаяПодпись;
Рисунок.РазмерКартинки = РазмерКартинки.РеальныйРазмер;
Рисунок.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии);
КонецЕсли;
Для j = 1 По Стр.Количество Цикл
Обл = ОблСтрока.Область("Артикул");
Обл.Шрифт = Новый Шрифт(Обл.Шрифт, ,РазмерШрифтаДляМакета);
Обл.Текст = Стр.Артикул;
ОблСтрока.Параметры.Производитель = Стр.Производитель;
ОблСтрока.Параметры.НаименованиеПолное = "Наименование: " + Стр.НаименованиеПолное;
Если i = 1 Тогда
ТабДок.Вывести(ОблСтрока);
Иначе
ТабДок.Присоединить(ОблСтрока);
КонецЕсли;
Если i = 3 Тогда
i = 1;
Иначе
i = i + 1;
КонецЕсли;
КонецЦикла;
ЗначениеШтрихкодаПроверкаНаСовпадение = ЗначениеШтрихкода
КонецЦикла;
ТабДок.ЭкземпляровНаСтранице = 1;
ТабДок.Автомасштаб = истина; //аналогично настройкам масштаба «по ширине страницы»
ТабДок.ПолеСлева = 2;
ТабДок.ПолеСверху = 6;
ТабДок.ПолеСнизу = 0;
ТабДок.ПолеСправа = 0;
ТабДок.ОтображатьСетку = Ложь; // неотображать сетку при просмотре документа
КонецПроцедуры
Далее по желанию можно менять размер и количество
Юзабилити на основной форме пока не делал, но это все решаемо.
Это внешняя обработка, компоненты для нее не нужны, обработка использует типовые механизмы конфигурации Управление торговлей 11.1(2.3) платформы 1С:Предприятие 8.2 и/или 8.3
Данная внешняя обработка использует типовые механизмы конфигурации Управление торговлей релиз 11.1
Управление торговлей релиз 11.2
Управление торговлей релиз 11.3
на платформе 1С:Предприятие 8.2 или 1С:Предприятие 8.3
Минимальный релиз платформы. Управление торговлей релиз 11.1
на Управление торговлей релиз 11.4 не устанавливалась, так что дерзайте у вас все получится.
Работает УТ 11.1.9.61 Спасибо!
Всегда рад,
когда маломальская обработка оказалась полезной не только мне