Виды номера и источник выдачи
Внутренний идентификатор, номер клиента и номер внешнего документа имеют разные источники. Их уникальность может действовать только внутри организации или года. Поэтому поле поиска должно объяснять, какой номер принимается, а результат — показывать найденный вид номера.
В учебном примере внутренняя заявка Z812 связана с номером клиента 0042 и документом доставки D90. У другой компании тоже есть 0042. Поиск по номеру клиента ограничен текущей организацией; внутренний идентификатор не становится разрешением прочитать объект.
Нормализация ввода
Нормализация помогает убрать случайный пробел, но не должна менять смысл. Ведущие нули, дефисы и буквенные префиксы иногда являются частью номера. Правила согласуют для каждого вида идентификатора, сохраняя исходное значение для объяснения результата.
Словарь номеров и сценарии поиска:
| Вид | Исходный номер | Разрешённое преобразование | Область |
|---|---|---|---|
| Клиентский | 0042 | Убрать пробелы по краям | Организация и источник |
| Внутренний | Z812 | Согласованный регистр букв | Объекты с доступом |
| Доставка | D90 | Без удаления префикса | Перевозчик и документ |
Ввод 42 не приравнивают к 0042, пока владелец нумерации не подтвердил такую эквивалентность.
Неоднозначные совпадения
Если допустимы несколько совпадений, поиск возвращает список с безопасными признаками выбора: датой, собственным подразделением и типом документа. Автоматически открывать первый результат опасно для понимания пользователем ситуации. Порядок сортировки не устраняет неоднозначность.
У клиента два заказа 0042 в разных годах. Кабинет предлагает уточнить год или показывает оба доступных заказа. Для приёмки используют точное совпадение, похожий номер и повтор в другом периоде. Отсутствие результата после уточнения не заменяют ближайшей похожей заявкой без обозначения этого факта.
Защита от раскрытия чужой заявки
Ограничение доступа действует и на выдачу поиска, и на прямое открытие документа. Иначе невидимую заявку можно обнаружить по счётчику совпадений или проверить подбором номеров. Состав ответа об отсутствии совпадения согласуют с владельцем кабинета.
Пользователь компании А ищет 0042, который существует только у Б. Он получает ответ в пределах своей области поиска без названия компании Б, суммы и контактов. Отдельная проверка прямого адреса подтверждает то же ограничение. Полезный результат — поиск, который помогает найти свои данные, сохраняя ясность номера и границы организации.

