Справочники и Данные · 9 мин
Как найти элемент в 1С: все способы поиска
Как найти элемент в 1С: поиск в справочниках и документах, полнотекстовый поиск, отборы, поиск по коду и наименованию, методы НайтиПоКоду и НайтиПоНаименованию для разработчиков.
Задача «найти элемент» в 1С возникает в двух разных ситуациях. Первая — пользователь ищет нужную позицию в справочнике номенклатуры, контрагентов или документе в журнале. Вторая — разработчик или администратор ищет элемент программно, чтобы привязать его к документу, обновить данные или проверить на дубли. Инструменты для этих сценариев различаются, и важно выбрать подходящий с самого начала.
Быстрее всего работает поиск по точному признаку: коду, артикулу, ИНН, штрихкоду. Поиск по части наименования медленнее и даёт больше лишних результатов, особенно в больших базах. Полнотекстовый поиск удобен, когда неизвестно, где именно хранится информация — в справочнике, документе или комментарии.
Прежде чем искать, уточните, что именно нужно: сам элемент для просмотра, ссылка на него для подстановки в документ или проверка его существования. От этого зависит, достаточно ли визуального поиска или потребуется обработка данных, а в некоторых случаях — обращение к разработчику.
Поиск в форме списка справочника или документов
Основной пользовательский способ — открыть список и воспользоваться строкой поиска. В управляемых формах (такси-интерфейс) строка поиска обычно расположена над таблицей списка. Введите часть наименования, код, артикул или ИНН и нажмите Enter — система покажет совпадения по основным полям.
Если строки поиска нет, нажмите Ctrl+F или используйте команду «Найти» в меню «Ещё». Откроется диалог, где можно выбрать поле поиска, направление и режим: по точному совпадению, по началу строки или по вхождению подстроки. Поиск по вхождению находит больше, но работает медленнее на больших списках.
Учтите: поиск в форме списка работает только по колонкам, которые выведены в список, и по полям, доступным текущему представлению. Если нужный реквизит не отображается, поиск по нему через Ctrl+F может не сработать — тогда используйте отбор.
- 1Откройте нужный справочник или журнал документов
- 2Введите значение в строку поиска над списком или нажмите Ctrl+F
- 3При необходимости уточните поле поиска и режим совпадения
- 4Если результатов много, добавьте отбор по дополнительному реквизиту
- 5Дважды щёлкните найденный элемент, чтобы открыть его карточку
Поиск через отбор по условию
Отбор — более гибкий инструмент, чем строка поиска. В форме списка нажмите «Ещё» → «Настроить список» (или кнопку отбора на панели). Добавьте условие: выберите поле, вид сравнения («равно», «содержит», «в списке») и значение. Можно комбинировать несколько условий, например: наименование содержит «кабель» И группа равна «Материалы».
Отбор особенно полезен, когда нужно найти не один элемент, а группу: всех контрагентов с определённым ИНН-регионом, всю номенклатуру без цены, все документы за период по конкретной организации. Результат отбора можно выгрузить в табличный документ через «Ещё» → «Вывести список».
Частая ошибка — забыть снять отбор после работы. Список продолжает показывать только часть данных, и пользователь считает, что элементы «пропали». Проверяйте панель отборов: активные условия обычно подсвечены.
Полнотекстовый поиск по всей базе
Когда неизвестно, где находится нужная информация, используйте полнотекстовый поиск — кнопка с лупой в верхней панели системы или команда в меню. Он ищет по всем объектам, включённым в полнотекстовый индекс: справочникам, документам, комментариям, приложенным файлам.
Поиск поддерживает операторы: кавычки для точной фразы, звёздочку для масок, логические И/ИЛИ. Например, запрос «"поставка оборудования" И Петров» найдёт документы, где встречаются оба фрагмента.
Ограничение: полнотекстовый поиск работает только если он включён администратором и индекс актуален. В файловых базах индекс обновляется по расписанию или вручную; в клиент-серверных — обычно автоматически. Если поиск не находит заведомо существующие данные, попросите администратора обновить индекс.
Поиск по уникальным признакам: код, ИНН, штрихкод
Наиболее надёжный способ — поиск по уникальному идентификатору. Для контрагентов это ИНН и КПП, для номенклатуры — артикул или штрихкод, для справочников — код. Такой поиск исключает ложные совпадения и почти всегда даёт ровно один результат.
Штрихкод удобно искать сканером: установите курсор в поле поиска и отсканируйте код — система найдёт или предложит создать новую позицию. ИНН контрагента можно ввести в строку поиска справочника контрагентов: в типовых конфигурациях поиск по ИНН включён по умолчанию.
Если поиск по уникальному признаку вернул несколько элементов — это признак дублей в базе. Не удаляйте их самостоятельно: в типовых конфигурациях есть специальная обработка поиска и удаления дублей, которая корректно заменяет ссылки в документах.
Как проверить, что найден нужный элемент
Код, ИНН или артикул полностью совпадают с исходными данными
Совпадает только наименование, а коды разные — вероятно, это другой элемент или дубль
В карточке элемента через «Ещё» видны связанные документы
Элемент выглядит похожим, но к нему не привязано ни одного документа
Элемент активен, без пометки удаления
Элемент помечен на удаление — восстановите или ищите актуальный
Программный поиск элемента для разработчиков
В коде на встроенном языке элементы справочников ищут методами менеджера объекта. Основные варианты: Справочники.Номенклатура.НайтиПоКоду("000123"), НайтиПоНаименованию("Кабель ВВГ 3х2.5") и НайтиПоРеквизиту("Артикул", "KB-100"). Все три возвращают ссылку; если элемент не найден — пустую ссылку, которую проверяют через Если Ссылка.Пустая() Тогда ....
Для сложных условий и поиска по нескольким полям используют запрос. Запрос быстрее при работе с большими объёмами и позволяет сразу получить нужные поля без обхода объектов.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Артикул = &Артикул
| И НЕ Номенклатура.ПометкаУдаления";
Запрос.УстановитьПараметр("Артикул", ИскомыйАртикул);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
НайденнаяСсылка = Выборка.Ссылка;
КонецЕсли;
Учтите особенности: НайтиПоНаименованию ищет только по точному совпадению и без учёта регистра не работает — «Кабель» и «кабель» это разные значения. НайтиПоКоду требует точного кода с ведущими нулями, если код строковый. Для поиска «по части строки» в коде применяют запрос с оператором ПОДОБНО.
Сравнение способов поиска
Подходит для быстрого разового поиска пользователем; ограничение — ищет только по видимым полям списка
Подходит для групп элементов и комбинации условий; требует понимания структуры полей
Подходит, когда неизвестно, где данные; зависит от настройки индекса администратором
Подходит в коде для точного поиска по одному полю; не ищет по части строки
Подходит для сложных условий и больших объёмов; требует навыков языка запросов
Типичные ошибки и ограничения
Ещё одно ограничение — права доступа. Если у пользователя нет прав на просмотр справочника или действует ограничение на уровне записей (RLS), элемент не найдётся ни одним способом, хотя физически существует. В этом случае обратитесь к администратору для проверки ролей.
В больших базах поиск подстрокой без индекса может выполняться десятки секунд. Если поиск регулярно «тормозит», это повод попросить администратора включить нужные поля в полнотекстовый индекс или добавить индексацию реквизита в конфигурации.
Что важно запомнить
Пользователю обычно достаточно строки поиска, отбора и полнотекстового поиска; разработчику — методов НайтиПоКоду, НайтиПоНаименованию, НайтиПоРеквизиту и запроса. Надёжнее всего искать по уникальным признакам: коду, ИНН, артикулу. Перед изменением найденного элемента убедитесь, что это именно тот объект, и проверьте, нет ли дублей и пометки удаления.
Частые вопросы
Почему поиск не находит элемент, который точно есть в базе?
Чаще всего причины: активный отбор в списке, поиск по полю, не включённому в индекс, различия в регистре или лишние пробелы в наименовании, а также ограничение прав доступа. Снимите отборы, попробуйте искать по коду или ИНН и проверьте полнотекстовый поиск.
Как найти элемент по части наименования?
В форме списка используйте строку поиска или отбор с видом сравнения «Содержит». В коде применяйте запрос с оператором ПОДОБНО, например: ГДЕ Наименование ПОДОБНО "%кабель%". Учтите, что такой поиск медленнее точного.
Чем НайтиПоКоду отличается от НайтиПоНаименованию?
НайтиПоКоду ищет по уникальному коду элемента и почти всегда возвращает один результат. НайтиПоНаименованию ищет по точному совпадению наименования, которое может повторяться у разных элементов, поэтому метод вернёт только первый найденный.
Как найти дубли элементов в справочнике?
В типовых конфигурациях есть обработка «Поиск и удаление дублей» (раздел «Администрирование» — «Обслуживание»). Она находит элементы с совпадающими реквизитами и позволяет объединить их с автоматической заменой ссылок в документах.
Можно ли найти, в каких документах используется элемент?
Да. Откройте карточку элемента и используйте команду поиска ссылок на объект (в типовых — через меню «Ещё» или обработку «Поиск ссылок на объекты» в разделе администрирования). Система покажет все документы и записи, где встречается ссылка.