Сценарий формирования изображения штрихового кода для подстановки в шаблон документа

В данной статье представлен сценарий генерации штрихового кода по вычисляемому значению. Для корректной работы сценария необходимо в веб-приложении включить генерацию штрих-кода в разделе Администрирование - Документооборот – Настройки модуля «Документооборот» – Настройки генерации штрих-кода.

Пример формирования изображения штрих-кода

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

Ссылки на базу знаний