После обновления на 3.5 перестали работать скрипты на пользователей


В версии 3.5 произошли следующие изменения:

В связи с этим просьба обратить внимание на использование пользовательских атрибутов в скриптах, которые потенциально необходимо будет доработать.

Изменение №1

Все системные API, которые возвращают значения атрибутов (например, GetWithAlias, Get, GetPropertyValues, ListWithAlias и т.д.) возвращают пары: системное имя атрибута и значения в виде структуры Dictionaryobject в данном случае – это значение атрибута, а string — его системное имя.

В предыдущих версиях все атрибуты с типом данных «Пользователь» имели тип IEnumerable вне зависимости от настроек полей. Таким образом, чтобы получить значение атрибута, достаточно было в скрипте после получения значений через API сделать cast вида (IEnumerable)object. В связи с произошедшими изменениями, тип возвращаемого значения атрибута в API теперь меняется в зависимости от указанного флага «Несколько значений» в настройках атрибута, а именно:

Данную проблему можно решить, проверяя тип возвращенного значения с использование следующего кода:

 

if (obj != null)

{ val = (IEnumerable)obj.ToList();

if (val = null) val = new List{(sting)obj};

}

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

 

Изменение №2

Вне зависимости от значения флага «Несколько значений» в настройках атрибута с типом данных «Пользователь» конструкция Entity.Select(id) будет возвращать одно значение. Entity необходимо переписать на любой из выше названных API (GetWithAlias, Get, GetPropertyValues, ListWithAlias в зависимости от использования).

Объект класса Entity является историческим и плохо оптимизирован. Его использование не рекомендуется и в будущих версиях не будет поддерживаться.



Номер Статьи: 2651
Размещено: Wed, Oct 21, 2020
Последнее обновление: Fri, Feb 25, 2022

Online URL: https://kb.comindware.ru/article/posle-obnovleniya-na-3-5-perestali-rabotat-skripty-na-polzovatelej-2651.html