Получение информации из ЭУ "Записи справочника сотрудников"
Для выбора записей из Справочника сотрудников предназначен элемент управления "Записи справочника сотрудников". В зависимости от настроек пользователь может выбирать сотрудников, организации, подразделения, группы, роли и должности, а также поисковые слова.
-
Сотрудники:
EmployeeDataModel
. -
Организации и подразделения:
DepartmentModel
. -
Группы, роли, должности, поисковые слова:
StaffDataModel
Поля, которые содержит каждая модель, можно посмотреть в справочнике по JavaScript API.
Чтобы корректно в коде обрабатывать полученные значения из ЭУ Записи справочника сотрудников
нужно явно указывать тип. Если в области выбора элемента указан только один из типов, в коде достаточно
прописать этот тип:
sender.layout.controls.get<StaffDirectoryItems<GenModels.EmployeeDataModel>>(название ЭУ);
Пример для ЭУ с множественным выбором:
sender.layout.controls.get<StaffDirectoryItems<GenModels.EmployeeDataModel[]>>(название ЭУ);
Если в области выбора указано несколько типов, необходимо написать логику, определяющую тип элемента. Пример такой функции приведён ниже:
function showName(sender: Layout) {
const control = sender.layout.controls.get<StaffDirectoryItemsSingle>(Название ЭУ);
if(control.value.dataType === GenModels.DirectoryDataType.Employee) {
const value = control.value as GenModels.EmployeeDataModel;
console.log(value.firstName + " " + value.lastName); (1)
} else if (control.value.dataType === GenModels.DirectoryDataType.Department
|| control.value.dataType === GenModels.DirectoryDataType.Organization) {
const value = control.value as GenModels.DepartmentModel;
console.log(value.fullName); (2)
} else {
const value = control.value as GenModels.StaffDataModel;
console.log(value.name); (3)
}
}
1 | Логика работы с value типа EmployeeDataModel . |
2 | Логика работы с value типа DepartmentModel . |
3 | Логика работы с value типа StaffDataModel . |
Если установлен множественный выбор, код аналогичный. При получении элемента управления необходимо указать тип значения StaffDirectoryItemsMultiple
вместо StaffDirectoryItemsSingle
, далее циклом пройти все значения и в зависимости от типа совершить определенные действия с каждым из значений.