logo

[ELMA3] Запись в контекстную переменную элемента справочника 1С

Сценарий для записи найденного элемента справочника 1С в контекстную переменную бизнес-процесса "Контрагент 1С" типа справочник 1С Контрагенты.

Для корректной работы сценария необходимо подключить сборки:
EleWise.ELMA.Integration1C
Microsoft.CSharp

Константы V81Consts.String, V81Consts.GetRef, V81Consts.Uid можно использовать и для 1С 8.3.

Пример сценария с использованием PublicAPI

Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA с 3.8 включительно до 3.12.1 включительно.
//инициализируем подключение к конфигурации. следует указать имя, заданное в настройках интеграции с 1С
var connector = PublicAPI.Services.Integration1C.GetComConnector("test");
//получение ссылки на спровочник 1С Контрагенты:
dynamic bookRef = connector.GetFunctionValue("NewObject", "CatalogManager.Контрагенты");
//находим конкретного контрагента 1С по коду
var kontragent = bookRef.НайтиПоКоду("000123").ПолучитьОбъект();
//создаем вспомогательную переменную типа ComObject
var comObj = new ComObject(kontragent);
//получаем GUID найденного ранее контрагента
var guid_spr = new Guid(connector.GetFunctionValue(V81Consts.String, comObj.Get(V81Consts.GetRef).GetFunctionValue(V81Consts.Uid)).ToString());
//загружаем по GUID’у контрагента в контекстную переменную процесса 
context.Kontragent1S = PublicAPI.Services.Integration1C.LoadConfObject<EleWise.ELMA.Integration1C.Configs.Test.Kontragenty>(guid_spr);

Пример сценария без использования PublicAPI

Пространства имен:
using EleWise.ELMA.Integration1C;
using EleWise.ELMA.Integration1C.Data;
using EleWise.ELMA.Integration1C.V81;
using EleWise.ELMA.Model.Common;
using EleWise.ELMA.Model.Entities;
using EleWise.ELMA.Model.Managers;
using EleWise.ELMA.Model.Types.Settings;
using EleWise.ELMA.Services;
Текст сценария:
//получим службу для работы с 1С
var service = Locator.GetServiceNotNull<Integration1CService>();
//инициализируем подключение к конфигурации. следует указать имя, заданное в настройках интеграции с 1С
ComObject connector = service.GetComConnector("test"); 
//получение ссылки на справочник 1С Контрагенты:
dynamic bookRef = connector.GetFunctionValue("NewObject", "CatalogManager.Контрагенты");
//находим конкретного контрагента 1С по коду
var kontragent = bookRef.НайтиПоКоду("000123"); 
//получаем GUID найденного ранее контрагента
var guid_spr = new Guid(((dynamic)connector.Reference).XMLСтрока(kontragent));
//загружаем по GUID’у контрагента в контекстную переменную процесса 
context.Kontragent1S = EntityManager<EleWise.ELMA.Integration1C.Configs.Test.Kontragenty>.Instance.LoadOrNull((object)guid_spr);