logo

[ELMA3] Использование в сценариях объектов и документов пользовательских свойств системных объектов

После добавления пользовательского свойства в системный объект или документ, может возникнуть необходимость обратиться к нему из сценария объекта.

В силу того, что из сценария объекта нельзя работать с классами, которые реализуют все интерфейсы того или иного объекта, необходимо явно указывать интерфейс. После изменения системного объекта, создается интерфейс ObjNameConfigExt. Например, для Юридического лица (IContractorLegal) это будет IContractorLegalConfigExt.

Примеры:

1. В объект Юридическое лицо добавили свойство Полное наименование (FullName). Для использования этого свойства необходимо привести контрагента к IContractorLegalConfigExt

 var Contractor = InterfaceActivator.Create<IContractorLegal>();
 var ContractorEx = (IContractorLegalConfigExt)Contractor;

В этом примере переменная Contractor будет содержать только стандартные свойства юридического лица, а ContractorEx – все свойства, в т.ч. пользовательские.

2. В документе Договор (Contract) используется справочник Мои юрлица (MyLegalPerson), к этому справочнику добавили новое свойство Код объекта (ObjId). Для того, чтобы использовать свойство Код объекта, необходимо привести MyLegalPerson к IMyLegalPersonConfigExt.

var Contract = InterfaceActivator.Create<IContract>();

Contract.MyLegalPerson будет содержать только стандартные свойства.

((IMyLegalPersonConfigExt)Contract.MyLegalPerson).ObjId;

После приведения MyLegalPerson к IMyLegalPersonConfigExt, можно будет обратиться к пользовательским свойствам.