Печать наклеек с штрих кодом из документа "Заказ поставщика"



Если есть необходимость произвести печать некоторого количества наклеек одного товара непосредственно из документа, то данное приложение будет малая помощь тем кому это действительно необходимо.

 Периодически возникает необходимость распечатать большое количество этикеток с наименованием и штрих кодами для большого ассортимента товара, для этого вам не потребуется отдельный специальный принтер и лента для такого принтера. Выход из положения это стандартный офисный принтер и лист формата А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 не устанавливалась, так что дерзайте у вас все получится.   

2 Comments

  1. user882676

    Работает УТ 11.1.9.61 Спасибо!

    Reply
  2. creatermc

    Всегда рад,

    когда маломальская обработка оказалась полезной не только мне

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *