В версии 3.5 произошли следующие изменения:
Изменение №1
Все системные API, которые возвращают значения атрибутов (например, GetWithAlias, Get, GetPropertyValues, ListWithAlias и т.д.) возвращают пары: системное имя атрибута и значения в виде структуры Dictionary. object в данном случае – это значение атрибута, а 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