helpf.pro
Регистрация
 +1 
Распечатать

Добавление поддержки нестандартного штрих-кода в обработке ПечатьЭтикеток

Обработка ПечатьЭтикеток использует компоненту "1С:Печать штрихкодов"(доступную на диске ИТС) для печати штрих-кодов(далее ШК). Эта компонента поддерживает следующие типы штрих-кодов: EAN8, EAN13, EAN128, Code39, Code128.

Что делать если на предприятии используется отличный ШК, например Interleave 2 of 5, для которго есть системный шрифт @IDAutomationSHI25M, используемый для вывода ШК на экран или на принтер.

Рассмотрим как проще всего добавить поддержку этого типа ШК в обработке ПечатьЭтикеток.

Первым делом скопируем общий макет Этикетка в макет для вывода нашего штрих-кода ЭтикеткаInterleave. В этом макете надо удалить элемент управления, связанный с компонентой "1С:Печать штрихкодов". И оформить центральное поле как параметр табличного документа ШтрихКод, выводимый шрифтом @IDAutomationSHI25M.
title

Далее разрешаем запуск обработки даже с неустановленной компонентой т.к. для вывода нашего ШК компонента не нужна. Для этого комментируем строчку в модуле формы обработки:
Код 1C v 8.х
 Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Попытка
КомпонентШК = Новый COMОбъект("V8.Barcod.1");
Макет = ПолучитьОбщийМакет("Этикетка");
ЭтикеткаОбласть = Макет.ПолучитьОбласть(1,1,4,2);
ЭтикеткаОбласть.Рисунки.Штрихкод.Объект.Сообщение = "1111111111116";
Исключение
Сообщить("Компонента 1С:Печать штрихкодов не установлена на данном компьютере!
|Возможна печать только штрих-кодов Interleave!", СтатусСообщения.Важное);
//Отказ = Истина;
КонецПопытки;

КонецПроцедуры


В общем модуле УправлениеРозничнойТорговлей также есть место проверки на компоненту
Код 1C v 8.х
 #Если Клиент Тогда
// Печать этикеток со штрих-кодом
//
Процедура ПечатьЭтикеток(Товары = Неопределено) Экспорт

//am+ Эта проверка нам не нужна, во первых она выполняется ПередОткрытием в форме обработки.
// Кроме того у нас есть тип штрихкода, который печататется без компоненты.
//Попытка
// КомпонентШК = Новый COMОбъект("V8.Barcod.1");
//Исключение
// Сообщить("Компонента 1С:Печать штрихкодов не установлена на данном компьютере!", СтатусСообщения.Важное);
// Возврат;
//КонецПопытки;
//am-


В обработке есть место, где выполняется проверка типа ШК. Наш ШК сейчас не пройдет проверку и печать выполнена не будет. Чтоб печать выполнялась необходимо исправить функцию в общем модуле УправлениеРозничнойТорговлей.
Код 1C v 8.х
 
// Возвращает значение типа штрих-кода для использования в ЭУ
// "1С:Печать штрих-кодов"
//
// Параметры
// ТипКода - ПланыВидовХарактеристик.ТипыШтрихкодов - тип, значение для которого
// нужно получить
//
// Возвращаемое значение:
// Число, которое может быть присвоено свойству ЭУ "ТипКода"
//
Функция ПолучитьЗначениеТипаШтрихкодаДляЭУ(ТипКода) Экспорт
Перем Значение;

Если ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN8 Тогда
Значение = 0;
ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13 Тогда
Значение = 1;
ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN128 Тогда
Значение = 2;
ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code39 Тогда
Значение = 3;
ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.Code128 Тогда
Значение = 4;

//am+
ИначеЕсли ТипКода = ПланыВидовХарактеристик.ТипыШтрихкодов.Interleave20FS Тогда
Значение = 100;
//am-

Иначе
Значение = -1;
КонецЕсли;

Возврат Значение;
КонецФункции // ПолучитьЗначениеТипаШтрихкодаДляЭУ()


Мы на завершающем этапе, вносим изменения непосредственно в обработку.
Код 1C v 8.х
 Процедура Печать(ТаблицаТоваров) Экспорт

//am+ Так как у нас два разных макета, то нам нельзя смешивать типы ШК
// печатаемые в разных макетах. Выполним проверку.

флВремЕстьInterleave = Ложь;
флВремЕстьНеInterleave = Ложь;
Для Каждого СтрокаИзСписка Из ТаблицаТоваров Цикл
Если СтрокаИзСписка.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.Interleave20FS Тогда
флВремЕстьInterleave = Истина;
Иначе
флВремЕстьНеInterleave = Истина;
КонецЕсли;
Если флВремЕстьInterleave и флВремЕстьНеInterleave Тогда
Предупреждение("В списке одновременно встречаются штрих-коды несовместимых типов,
|Штрих-коды Interleave необходимо печатать отдельно от остальных!");
Возврат;
КонецЕсли;
КонецЦикла;
//am-

Таб = Новый ТабличныйДокумент;
Таб.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Этикетка"+СокрЛП(ИмяКомпьютера());
//am+ Используем наш макет.
Если флВремЕстьInterleave Тогда
Макет = ПолучитьОбщийМакет("ЭтикеткаInterleave");
Иначе
//am-
Макет = ПолучитьОбщийМакет("Этикетка");
КонецЕсли;

//am+ Некоторые строки в нашем макете не заработают, необходимо добавить условие.
Если Не флВремЕстьInterleave Тогда
//am-
РисунокШтрихкод = ЭтикеткаОбласть.Рисунки.Штрихкод;
КонецЕсли;

//am+
Если Не флВремЕстьInterleave Тогда
//am-
РисунокШтрихкод.Расположить(ОбластьШтрихкод);
КонецЕсли;


Если УправлениеРозничнойТорговлей.ПроверитьШтрихКод(СтрокаИзСписка.ШтрихКод,
СтрокаИзСписка.ТипШтрихкода) Тогда
//am+ здесь мы установим размер шрифта (об этом в конце статьи) и зададим параметр ШтрихКод нашего макета для вывода
Если флВремЕстьInterleave Тогда
ЭтикеткаОбласть.Параметры.Установить(0,
СформироватьШтрихКодДляМакетаЭтикеткаInterleave(СтрокаИзСписка.ШтрихКод));
ЭтикеткаОбласть.Области.ОбластьШтрихкод.Шрифт =
Новый Шрифт(ЭтикеткаОбласть.Области.ОбластьШтрихкод.Шрифт,,РезмерШрифтаInterleave);
Иначе
//am-
Попытка //попытку нужно добавить т.к. если компонента не установлена, то будут ошибки.
ЭтикеткаОбласть.Рисунки.Штрихкод.Объект.ТипКода = ТипКода;
ЭтикеткаОбласть.Рисунки.Штрихкод.Объект.Сообщение = СтрокаИзСписка.ШтрихКод;
Исключение
КонецПопытки;
КонецЕсли;

Последний штрих это добавить регулятор размера шрифта (в коде переменная РезмерШрифтаInterleave) на форму обработки:
title
источник
Разместил:   Версии: | 8.x |  Дата:   Прочитано: 30009
 +1 
Распечатать
Возможно, вас также заинтересует
1С Предприятие что это? 12
Что такое 1С? 1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » - конкретный продукт, который выпускает компания 1С . Что такое
Cклонения по падежам 6
НаКлиенте Процедура Команда1(Команда) ФИО = " Иванов Иван Иванович" ; Падеж = 2; Пол = 1; Результат = СклонениеФИО(ФИО, Падеж, пол); Сообщить(Результат); КонецПроцедуры НаСервере Функция СклонениеФИО(ФИО, Падеж, пол) Результат = " " ;
QR код в 1С 21
Столкнулся с интересной задачей реализации генерации QR-кода в 1С 8.2 ( QR-код — матричный код (двухмерный штрихкод) ) Для генерации было использовано api от google (http://chart.apis.google.com/chart). Вот сайт , который работает с ним. После тог
Автоматическая установка ширины колонки табличного документа. 0
Процедура, которая " примерно" делает автоширину колонок (навроде, как если бы выделить все колонки и дважды щелкнуть мышкой по границе заголовка колонки). Привожу текст, работает неахти, но лучше чем ничего: Процедура РасчетШириныКолонок(Табличный
Архивация баз 7.7 при помощи WinRara 0
Данный bat файл лежит в автозагрузке и при включении компьютера спрашивает о архивации. После нажатия пробела запускается архивация базы c:1CBasaOmegal1003 и в папке появляется архив Omegal_0110_2009.rar @echo off echo . echo . echo Архивир
Посмотреть все результаты поиска похожих
Комментарии
DEN4IK
26.08.2013 19:09Комментарий: 1
DEN4IK
А где процедуру создания штрихкода interleaved 2 of 5 брать?
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.