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 |  Дата:   Прочитано: 31698
 +1 
Распечатать
Возможно, вас также заинтересует
1С Предприятие что это? 13
Что такое 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 брать?
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.
Загрузка... Дождитесь завершения!