Вопрос

Синхронизация кастомного поля в разделе Контрагент и на детали Адрес контрагента

Добрый день,

Столкнулся с такой проблемой, добавил в раздел Контрагенты справочное поле "Населенный пункт" (VcLocality) и такое же поле в деталь  Адрес контрагента, и пытаюсь настроить синхронизацию так же как она работает в базовой версии. Для этого в процессе объекта Контрагент переопределил метод SynchronizeAddress, в результате получилось передавать значение из раздела на деталь, а вот обратно из детали в раздел не получается. В процессе объекта Адрес контрагента есть метод GetAddressSynchronizer,

AddressSynchronizer = AddressSynchronizer ?? 
    ClassFactory.Get<BaseAddressSynchronizer>(
        new ConstructorArgument("userConnection", UserConnection), new ConstructorArgument("addressEntity", Entity),
        new ConstructorArgument("masterEntityName", "Account"));
return (BaseAddressSynchronizer) AddressSynchronizer;

я так понимаю что он вносит изменение в исходный код схемы BaseAddressSynchronizer. Но вот заместить схему BaseAddressSynchronizer не получается.

Вопрос состоит в том как мне передать следующий код в схему BaseAddressSynchronizer:

new SynchronizationColumnMapping {
                    SourceColumnName = "VcLocalityId",
                    DestinationColumnName = "VcLocalityId"
                },

 

 

Нравится

5 комментариев

Добрый вечер.

Создайте класс, который наследуется от «BaseAddressSynchronizer», и параметризированный атрибутом «[Terrasoft.Core.Factories.Override]», например:

[Terrasoft.Core.Factories.Override],
public class UpdatedBaseAddressSynchronizer : BaseAddressSynchronizer
 
{
 
// замещаете необходимые методы
 
}

В версии 7.15 это так же в процессе используется? Можете подсказать как процесс называется?

Видимо, речь о встроенном процессе объекта «Контрагент».

Нашёл встроенный процесс с методом SynchronizeAccountAddress, но в нём никак не используется класс BaseAddressSynchronizer. Это два разных варианта реализации?

Если создать свой класс от BaseAddressSynchronizer и переопределить GetSynchronizationColumnMappings то где в системе происходит обращение к экземпляру этого класса?

BaseAddressSynchronizer используют в обратную сторону, в БП объекта детали.

Показать все комментарии