[ELMA3] Получение списка контактов контрагента в сценарии
В статье приведен сценарий для вывода списка контактов выбранного контрагента в блок.
Пример сценария с использованием PublicAPI
Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA до 3.15.38 включительно.
Контекстные переменные:
- context.Klient - переменная типа Контрагент;
- context.Kontakty - переменная типа Блок (имеет свойство NaimenovanieKontakta - переменная типа Контакт).
При создании нового элемента блока используется имя его класса P_PoluchenieSpiskaKontakto_Kontakty.
Пространство имен:
Пространство имен:
using EleWise.ELMA.API; using Elewise.ELMA.Extensions;Текст сценария:
var konragent = PublicAPI.CRM.Contractor.Find(FetchOptions.All); konragent.ForEach(k => { if (k == context.Klient){ context.Klient.Contacts.ToList().ForEach(cont => { //то получаем список контактов этого контрагента var item_b = new P_PoluchenieSpiskaKontakto_Kontakty(); //для каждого контакта из этого списка создаем элемент блока item_b.NaimenovanieKontakta = cont; //и записываем в созданный элемент этот контакт context.Kontakty.Add(item_b); //добавляем созданный элемент в блок }); } });
Пример сценария без использования PublicAPI
В сценарии используются следующие контекстные переменные:
- context.Klient - переменная типа Контрагент, содержит выбранного (например, в пользовательской задаче до сценария) контрагента;
- context.Kontakty - переменная типа Блок (имеет свойство NaimenovanieKontakta). При создании нового элемента блока используется имя его класса P_VyvodKontaktovKontragenta_Kontakty.
Для корректной работы сценария необходимо подключить сборку:
EleWise.ELMA.CRM
Пространства имен:
using EleWise.ELMA.CRM.Models; using EleWise.ELMA.Model.Common; using EleWise.ELMA.Model.Entities.ProcessContext; using EleWise.ELMA.Model.Managers;
Текст сценария:
var kontragenti = EntityManager<Contractor>.Instance.Find(FetchOptions.All); //получаем список всех контрагентов kontragenti.ForEach(k => { if (k == context.Klient) //если рассматриваемый контрагент совпадает с искомым { k.Contacts.ForEach(cont => { //то получаем список контактов этого контрагента var item_b = new P_VyvodKontaktovKontragenta_Kontakty(); //для каждого контакта из этого списка создаем элемент блока item_b.NaimenovanieKontakta = cont; //и записываем в созданный элемент этот контакт context.Kontakty.Add(item_b); //добавляем созданный элемент в блок }); } });