Публикация

И снова QR-коды в Terrasoft CRM

В прошлый раз мы генерировали QR-коды при помощи веб-сервиса Google. Сейчас рассмотрим другой вариант, работающий без Интернета.

qrcode

Для этого понадобится ActiveX-компонент BarcodeGenerator от Душелова. Разработчиком заявлена поддержка формата QR и многих форматов штрих-кодов.

Качаем и распаковываем архив, запускаем батник reg.bat. Для работы компонента нужен .NET Framework 2.0.

На форму помещаем ActiveXControl с именем axcTest, GUID равным {A7E27105-8C26-331E-BE0B-0308B687EAAC} и ProgID равным Душелов.Barcode1C. Значения ширины и высоты компонента у меня равны 180.

Скрипт генерации крайне прост:

  axcTest.ActiveXObject.Штрихкод = edtText.Value;
  axcTest.ActiveXObject.ТипШтрихкода = 'QR Code';
  axcTest.ActiveXObject.Сгенерировать();

Больше свойств и методов описано в файле документации.

Например, сохранение кода в графический файл:

СохранитьКартинку(ПутьКФайлу, Тип); //тип - строка (bmp, gif, jpg, png или tiff)

Для вышеописанного тестового примера будет:

axcTest.ActiveXObject.СохранитьКартинку('C:\\file.bmp', 'bmp');

Такой QR-код можно использовать в карточке контакта или контрагента для быстрого звонка с мобильного по указанному номеру, ещё его можно выводить в печатные формы.

Нравится

Поделиться

23 комментария

Здравствуйте! Есть такой вопрос:
Стоит задача, в рамках которой мы должны генерировать двумерный штрих код по трем полям.
Есть поля: Артикул, серийный номер и дата производства... Вопрос в том, какими символами их нужно разделять, чтобы сканер потом это распознал?
Нужно ли будет каким-то особым образом настраивать сканер?

Алёна, это зависит от того, куда передаётся и чем обрабатывается информация от сканера. Для обычных одномерных кодов сканеры чаще всего просто имитируют ввод цифр с клавиатуры.

В двухмерном может быть строка произвольной структуры, если её получать от сканера как одну строку и разделять программно. Например, программы для телефонов умеют специальным образом обрабатывать гиперссылки, телефонные номера, email и т.д.

Если разбирать строку в Terrasoft, можно разделить части хоть пробелом, хоть каким-то # примерно так:

var CodeText = '123#456#31.04.2012';
var NumberParts = CodeText.split('#');

Получим массив из 3 строковых элементов.

Александр, спасибо за быстрый ответ! К сожалению, я пока не знаю, как именно будет обрабатываться информация из сканеров, выясню это у клиента.

Здравствуйте!
В Terrasoft установили данный вариант, но на открытии карточки, где расположен ActiveXControl, выдается ошибка (файл во вложение).
Пробовали установить в Visual Studio, так же возникает ошибка.

Марина, а батник reg.bat отработал без ошибок? Файл Dushelov.Barcode1C.dll не перемещали после запуска батника? Фреймворк установлен нужной версии?

Здравствуйте!

Александр, батник установился успешно, файл не перемещали. И фреймворк установлен версии 2.0.

Странно. А на другом компьютере то же самое, не работает?
А другой ActiveX нормально открывается?

Вот мои сервисы тестового примера для 3.3.2.

На другом компьютере аналогичная ошибка: "Не удается найти указанный файл". А вот другой ActiveX (видео) открывается нормально

А мой сервис тоже не открылся?

Снова эта же ошибка :(

Марина, для диагностики проблемы требуется следующая информация:

  1. Операционная система (включая информацию о сервис-паках);
  2. Версия базы данных Terrasoft;
  3. Версия бинарных файлов;
  4. Скриншот колл-стека (касается сбоя в комментарии #4)

1. ОС Windows Server 2003 R2 Enterprise Edition (Service Pack 2)

2. SQL Server 2008

3. Terrasoft 3.4.0.97

4. Скриншот

Проверил на 3.4.0 - тоже работает. А на другом компьютере тоже Windows Server 2003? Может, в ней чего-то не хватает для регистрации библиотеки? Или попробовать регистрировать и тестировать в Windows от пользователя с правами админа?

А Windows 32-битная или 64-битная?

Сейчас попробовала на Terrasoft 3.3.2.255 все работает, получается проблема не в ОС, а в Terrasoft 3.4.0.97

В 97 тоже работает.
3.4.0.97

function wnd_TestFormOnPrepare(Window) {
	Self.WindowCaption = 'Версия программы ' + Connector.Version;
}

Странно, почему у меня не хочет работать в 3.4. А в сам Террасофт ни каких доп сервисов не нужно загружать?

Я переносил только эту тестовую форму и её скрипт. Может, не совпадает GUID или ProgID ActiveX компонента?

При вводе GUID он автоматически сам указывает ProgID и наоборот, поэтому они совпадают. Переношу форму из 3.3.2 в 3.4 опять ошибка, что не найден указанный файл.

Очистка кэша не помогает?

Не помогло, ошибка осталась

Добрый день! Возможно ли уменьшить размер штрихкода? Сделать 238 * 238 пикселей? Если просто уменьшать картинку, то штрихкод не всегда считывается (искажается)

Марина, там есть параметры ШиринаШтрихкода и ВысотаШтрихкода. Код искажается при их изменении? Если же нужно сделать более простой код из меньшего числа клеточек, то не уверен, что этот компонент так умеет, это недостаток.

Показать все комментарии