Перейти к содержимому
Участник сообщества #59
Участник сообщества #59
5 февр. 2026 г., 17:58(изменён)
Решено
0
0

Поиск без учёта регистра в настраиваемом поле

Из чата сообщества

Коллеги, приветствую! Подскажите пожалуйста по вопросу. 🙏

На странице «Поиск по порталу» в Выборке на доработанной вкладке «Сотрудники» есть успешно работающий код

arrObjects = ArraySelectAll( XQuery( "for $elem in collaborators where (doc-contains($elem/id, '', '[myfield contains ТЕСТ]')) order by $elem/fullname return $elem/Fields('id','fullname')" ) );

который отбирает тех сотрудников, у которых в кастомном настраиваемом поле myfield присутствует текст ТЕСТ.

Этот код ищет с учётом регистра большие маленькие символы, а мне нужно искать без учёта регистра.

Вместо '[myfield contains ТЕСТ]' я пробовал использовать '[upper-case(myfield) contains ТЕСТ]' '[upper(myfield) contains ТЕСТ]' и прочие варианты, но они не работают.

Как можно было бы исправить код условия

where (doc-contains($elem/id, '', '[myfield contains ТЕСТ]'))

чтобы искалось бы без учёта регистра? 🙏

Участник сообщества
Участник сообщества5 февр. 2026 г., 20:04(изменён)
Решение

Настраиваемое поле не самый удобный для последующего использования в запросах вариант Его нет в каталоге, а значит обратиться к нему "просто и удобно" не получится Хотя оно вполне удобно отображается в карточке и этим весьма прельщает

Участник сообщества
Участник сообщества5 февр. 2026 г., 18:03(изменён)

пробежаться агентом по всем сотрудникам и привести значение данного поля к одному регистру?

Участник сообщества
Участник сообщества5 февр. 2026 г., 18:43(изменён)

Костыль 😅 Сделать еще 1 поле(хоть тип данных), ну можно custom И там написать(скопировать) в upper case или lower case И по новому полю сравнивать

Участник сообщества
Участник сообщества5 февр. 2026 г., 19:00(изменён)

может в sql переписать?

код как есть, сам запрос изменить с xquery на sql

Участник сообщества
Участник сообщества5 февр. 2026 г., 19:14(изменён)

В том месте где сотрудники заполняют или редактируют это поле Необходимо(варианты, агент не требуется)

  1. Создать новое custom fields
  2. Создать новый объект тип данных(тогда можно быстро через каталог xquery найти, быстро сделать отчет и тд)

По sql - не уверен что получится к кастомному полю применить sql

Участник сообщества
Участник сообщества5 февр. 2026 г., 19:20(изменён)

/collaborators

SELECT unnest(xpath('//collaborator/custom_elems/custom_elem[name="my_custom_field"]/value/text()', data))::text
Участник сообщества
Участник сообщества5 февр. 2026 г., 19:25(изменён)

только всякие скобки проверьте. было бы не плохо в БД напрямую. или агенте, чтобы точно работал. ну и я бы, конечно, ещё условий добавил. не уволенные хотя бы) или смотря зачем там выборка вам можете не добавлять.

Участник сообщества
Участник сообщества5 февр. 2026 г., 19:40(изменён)

Около 3 500 сотрудников.

Участник сообщества
Участник сообщества5 февр. 2026 г., 19:48(изменён)

многовато... тогда или запрос на языке БД, или переходить на дублирование этих данных из Настраиваемого поля при сохранении карточки в Тип данных объектов (можно через Обработчик для Системного события - common_save_collaborator Сохранение объекта Сотрудник)

Чтобы ответить, необходимо войти в систему