logo

[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); //добавляем созданный элемент в блок
         });         
      }
     });