[ELMA3] Сценарий формирования изображения штрихового кода для подстановки в шаблон документа
В данной статье представлен сценарий генерации штрихового кода по вычисляемому значению. Для корректной работы сценария необходимо в веб-приложении включить генерацию штрих-кода в разделе Администрирование - Документооборот – Настройки модуля «Документооборот» – Настройки генерации штрих-кода.
Пример формирования изображения штрих-кода
1. В бизнес-процессе (рис. 1) создадим контекстную переменную Barcode с типом данных Файл (группа Системные) для хранения изображения штрих-кода, а также переменную String с типом данных Строка для хранения строкового значение штрих-кода. Для работы сценария необходимо в веб-приложении заполнить строковое значение штрих-кода, переменную String вынесем в задаче Ввести строковое значение.
Рис. 1. Графическая модель процесса «Генерация штрих-кода»
2. Для генерации изображения штрих-кода добавим следующий сценарий:
Пространства имен:
using EleWise.ELMA.Barcode; using EleWise.ELMA.ComponentModel; using EleWise.ELMA.Barcode.Models; using EleWise.ELMA.Services; using EleWise.ELMA.Logging; using EleWise.ELMA.Files; using EleWise.ELMA.Runtime.Managers; using EleWise.ELMA.Services; using EleWise.ELMA.Common.Managers; using EleWise.ELMA.Model.Services;
Текст сценария:
var settingsModule = Locator.GetService<BarcodeGenerationSettingsModule>(); if (settingsModule != null && settingsModule.Settings != null && settingsModule.Settings.GenerateBarCode && !string.IsNullOrEmpty(settingsModule.Settings.ProviderKey)) { var provider = ComponentManager.Current.GetExtensionPoints<IBarcodeProvider>().FirstOrDefault(p => p.Key == settingsModule.Settings.ProviderKey); if (provider != null) { BinaryFile barcodeFile; try { barcodeFile = provider.CreateBarcode( new BarcodeInfo { Code = context.String, Width = settingsModule.Settings.Width, Height = settingsModule.Settings.Height }); } catch (Exception ex) { Logger.Log.Error(SR.T("Не удалось генерировать штрих-код с размерами - {0}х{1}. Штрих-код сформирован с настройками по умолчанию.", settingsModule.Settings.Width, settingsModule.Settings.Height), ex); barcodeFile = provider.CreateBarcode( new BarcodeInfo { Code = context.String, Width = 0, Height = 0 }); } context. Barcode =InterfaceActivator.Create<BinaryFile>(); context.Barcode.Name = barcodeFile.Name; context.Barcode.CreateDate = DateTime.Now; context.Barcode.InitializeContentFilePath(); System.IO.File.Copy(barcodeFile.ContentFilePath, context.Barcode.ContentFilePath); var attachment = PublicAPI.Portal.Objects.Common.Attachment.Create(context. Barcode); PublicAPI.Services.File.SaveFile(context.Barcode); } }
3. Для вывода изображения штрих-кода в шаблон документа (рис. 2) добавим следующий код:
{Image({$Barcode};’scale:50’)}
где scale:50 – масштаб выводимой картинки.
Рис. 2. Шаблон документа
В качестве переменной выберем ранее созданную переменную Barcode (рис. 3).
Рис. 3. Операция "Генерация документа". Вкладка "Настройки"
После генерации документа в задаче "Сгенерированный документ" будет отображен документ с формированным штрих-кодом (рис. 4).
Рис. 4. Отображение штрих-кода в сгенерированном документе