Здравствуйте. Для интеграции с существующей системой CRM нужно в трансферную таблицу вложить изменения контрагента и контактов. Контакты берутся из AD. Логины AD хранятся в таблице SysAdminUnit. Проблема в том что через БП добраться так просто к колонке LDAPEntry, нужно написать C# скрипт. Скрипт я написал, он работает
using System;
using System.Collections.Generic;
using System.Linq;
using Terrasoft.Core;
using Terrasoft.Core.Entities;
using CoreConfiguration = Terrasoft.Core.Configuration;
namespace Terrasoft.Configuration.PsADSearchUser
{
public class PsADSearchUserHelper
{
#region Properties: Public
public UserConnection UserConnection {
get;
private set;
}
#endregion
#region Constructors: Public
public PsADSearchUserHelper(UserConnection userConnection) {
UserConnection = userConnection;
}
#endregion
#region Methods: Public
public virtual string GetLoginADByContactId(string contactId){
if (string.IsNullOrEmpty(contactId)) {
return string.Empty;
}
var result = "";
var esq = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "SysAdminUnit");
var contact = esq.AddColumn("Contact");
var colLDAPEntry = esq.AddColumn("LDAPEntry");
var esqFilter = esq.CreateFilterWithParameters(FilterComparisonType.Equal, "Contact", contactId);
esq.Filters.Add(esqFilter);
var entities = esq.GetEntityCollection(UserConnection);
if (entities.Count > 0)
{
//result = entities[0].GetColumnValue(colLDAPEntry.Name).ToString();
// Также можно использовать такой вариант:
result = entities[0].GetTypedColumnValue(colLDAPEntry.Name);
}
return result;
}
#endregion
}
}
В БП был создан метод
public virtual void LoginADB() {
var helper = Factories.ClassFactory.Get(new Factories.ConstructorArgument("userConnection", UserConnection));
LoginADByContact = helper.GetLoginADByContactId(ContactId.ToString());
}
и Using
Terrasoft.Configuration.PsADSearchUser
В "Задание-сценарий" был вызван метод
LoginADB();
return true;
Но при компиляции выдает ошибку
