Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 18:50

Печать штрихкодов

Автор Golickoff, 09 фев 2015, 09:47

0 Пользователей и 1 гость просматривают эту тему.

Golickoff

Всем привет.

Пытаюсь добавить в конфигурацию возможность печати штрихкодов. За основу взял демонстрационную конфигурацию "Управляемое приложение". Нашёл в сети пару примеров её работы, но на обоих сайтах нет возможности задать вопрос, поэтому пишу здесь. Вот код работы со штрихкодом:
Функция ПолучитьКартинкуШтрихкода(ШтрихКод, ТипКода=1) Экспорт

ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодовWindows64", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);

// Создадим объект внешней компоненты
Компонент = Новый("AddIn.КартинкаШтрихкода.Barcode");

// Если нет возможности рисовать
Если НЕ Компонент.ГрафикаУстановлена Тогда

  // То картинку сформировать не сможем
  Возврат Неопределено;

КонецЕсли;

// Если в системе установлен шрифт Tahoma
Если Компонент.НайтиШрифт("Tahoma") = Истина Тогда

  // Выбираем его как шрифт для формирования картинки
  Компонент.Шрифт = "Tahoma";

Иначе

  // Шрифт Tahoma в системе отсутствует

  // Обойдем все доступные компоненте шрифты
  Для Сч = 0 По Компонент.КоличествоШрифтов -1 Цикл

   // Получим очередной шрифт, доступный компоненте
   ТекущийШрифт = Компонент.ШрифтПоИндексу(Сч);

   // Если шрифт доступен
   Если ТекущийШрифт <> Неопределено Тогда

    // Они и будет шрифтом для формирования штрихкода
    Компонент.Шрифт = ТекущийШрифт;
    Прервать;

   КонецЕсли;

  КонецЦикла;

КонецЕсли;

// Установим размер шрифта
Компонент.РазмерШрифта = 12;

// Зададим размер картинки
Компонент.Ширина = 100;
Компонент.Высота = 90;

Если ТипКода = Неопределено Тогда
  // Разрешим компоненте самой определять тип кода
  Компонент.ТипКода = 1;;
  // ИЛИ установим код EAN-13
  // Компонент.ТипКода = 1;
  //
  // Тип смотрим в документации на внешнюю компоненту
Иначе
  Компонент.ТипКода = ТипКода;
КонецЕсли;

// Если код содержит контрольный символ, обязательно указываем
Компонент.СодержитКС = СтрДлина(Штрихкод) = 13;

// Если отображать контрольный символ не нужно
// Компонент.ВидимостьКС = Ложь;

// Формируем картинку штрихкода
Компонент.ЗначениеКода = Штрихкод;

// Если установленная нами ширина меньше минимально допустимой для этого штрихкода
Если Компонент.Ширина < Компонент.МинимальнаяШиринаКода Тогда

  // Скорректируем ширину
  Компонент.Ширина = Компонент.МинимальнаяШиринаКода + 10;

КонецЕсли;

// Сформируем картинку
ДвоичныеДанныеКартинки = Компонент.ПолучитьШтрихкод();

// Если картинка сформировалась
Если НЕ ДвоичныеДанныеКартинки = Неопределено Тогда

  // Формируем из двоичных данных
  Возврат Новый Картинка(ДвоичныеДанныеКартинки);

КонецЕсли;

Возврат Неопределено;

КонецФункции

Конфигурация ругается на строку Компонент = Новый("AddIn.КартинкаШтрихкода.Barcode"); и сообщает "Тип не определен (AddIn.КартинкаШтрихкода.Barcode)". В чём может быть проблема?
P.S. Если вы не знаете, что не так с этим кодом, но у вас есть свой рабочий пример, я буду несказанно рад ему.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

LexaK

а простой вариант с стандартным шрифтом 1С EANGNIVC.TTF чем не устраивает?
Добавлено: 09 фев 2015, 10:24


пример печати штрих кода
если помогло нажмите: Спасибо!

Golickoff

Цитата: LexaK от 09 фев 2015, 10:20
а простой вариант с стандартным шрифтом 1С EANGNIVC.TTF чем не устраивает?
Добавлено: 09 фев 2015, 10:24


пример печати штрих кода
Я и не знал что так можно (Радченко молчит об этом в своих книгах), но суть уловил. Кстати, при открытии этой ВО у меня ничего не происходит. Платформа 8.3, интерфейс 8.2, включен режим использования модальности.
Добавлено: 09 фев 2015, 11:30


На практике оказалось, что сканер не видит этот шрифт. Даже при воспроизведении штрихкода, который я только что считал с коробки и который выглядит точно также, как и на коробке, сканер его не видит, так что всё не так однозначно с этим шрифтом.
Добавлено: 10 фев 2015, 09:28


Сегодня изучил алгоритм создания штрихкода EAN13, который мне изначально был необходим. Затем написал функцию для генерации этого штрихкода из строки, содержащей 12 цифр. По этим цифрам процедура генерирует контрольную, 13ю цифру, а затем переводит всё из цифр в набор символов, которые рекомендованный выше шрифт отображает как штрихкод. Короче, теперь генерация штрихкода происходит без использования ВК. Штрихкод в формате EAN13, считыватели его прекрасно видят. Если вдруг кому-то это интересно -- пишите.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск