УС
Участник сообщества #59
5 февр. 2026 г., 20: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 г., 23:04(изменён)
Решение

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

С
Система5 февр. 2026 г., 21:03(изменён)

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

С
Система5 февр. 2026 г., 21:43(изменён)

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

С
Система5 февр. 2026 г., 22:00(изменён)

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

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

С
Система5 февр. 2026 г., 22:14(изменён)

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

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

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

С
Система5 февр. 2026 г., 22:20(изменён)

/collaborators

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

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

С
Система5 февр. 2026 г., 22:40(изменён)

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

С
Система5 февр. 2026 г., 22:48(изменён)

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

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