refactor(bitra-patch): email через РегистрСведений.КонтактнаяИнформация БСП (1 запрос, без ПолучитьОбъект)

This commit is contained in:
Roman Chesnokov
2026-05-15 18:04:28 +05:00
parent 252c5e38a7
commit 432cfd3413
2 changed files with 13 additions and 40 deletions
@@ -129,44 +129,6 @@
КонецФункции
// Извлекает email из ТЧ КонтактнаяИнформация пользователя.
//
Функция ИзвлечьEmail(Знач Пользователь) Экспорт
Если НЕ ЗначениеЗаполнено(Пользователь) Тогда
Возврат "";
КонецЕсли;
Попытка
Объект = Пользователь.ПолучитьОбъект();
Исключение
Возврат "";
КонецПопытки;
Если Объект = Неопределено Тогда
Возврат "";
КонецЕсли;
Попытка
Для Каждого Стр Из Объект.КонтактнаяИнформация Цикл
ВидНаименование = "";
Если ЗначениеЗаполнено(Стр.Вид) Тогда
ВидНаименование = Строка(Стр.Вид);
КонецЕсли;
Если СтрНайти(НРег(ВидНаименование), "email") > 0 ИЛИ СтрНайти(НРег(ВидНаименование), "почта") > 0 Тогда
Если ЗначениеЗаполнено(Стр.Представление) Тогда
Возврат Стр.Представление;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Исключение
Возврат "";
КонецПопытки;
Возврат "";
КонецФункции
// Лимит выборки из query-параметра.
//
Функция ПарсЛимит(Знач Запрос, Знач MaxDefault = 1000, Знач MaxAllowed = 10000) Экспорт
@@ -25,10 +25,14 @@
// GET /v1/employees
//
// Email берётся одним запросом через РегистрСведений.КонтактнаяИнформация БСП
// (подзапрос с ПЕРВЫЕ 1 — если у пользователя несколько email-адресов, берём первый).
//
Функция EmployeesGet(Запрос) Экспорт
Попытка
Запрос1С = Новый Запрос;
Запрос1С.УстановитьПараметр("ТипEmail", Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
Запрос1С.Текст =
"ВЫБРАТЬ
| Пользователи.Ссылка КАК Ссылка,
@@ -38,7 +42,14 @@
| Пользователи.Подразделение КАК Подразделение,
| Пользователи.Ставка КАК Ставка,
| Пользователи.Недействителен КАК Недействителен,
| Пользователи.ДолженЗаполнятьОтчет КАК ДолженЗаполнятьОтчет
| Пользователи.ДолженЗаполнятьОтчет КАК ДолженЗаполнятьОтчет,
| (ВЫБРАТЬ ПЕРВЫЕ 1
| КИ.Представление
| ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КИ
| ГДЕ
| КИ.Объект = Пользователи.Ссылка
| И КИ.Тип = &ТипEmail) КАК Email
|ИЗ
| Справочник.Пользователи КАК Пользователи
|ГДЕ
@@ -53,7 +64,7 @@
Запись = Новый Структура;
Запись.Вставить("id", bfd_IntegrationAPIHelpers.UUID(Выборка.Ссылка));
Запись.Вставить("full_name", Выборка.ФИО);
Запись.Вставить("email", НРег(bfd_IntegrationAPIHelpers.ИзвлечьEmail(Выборка.Ссылка)));
Запись.Вставить("email", НРег(?(Выборка.Email = Null, "", Строка(Выборка.Email))));
Запись.Вставить("eva_id", Выборка.EvaID);
Запись.Вставить("office", Строка(Выборка.Офис));
Запись.Вставить("department", Строка(Выборка.Подразделение));