[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. Отображение штрих-кода в сгенерированном документе