Справочники и Данные · 11 мин
Что такое поиск данных в 1С и как им пользоваться
Что такое поиск данных в 1С: поиск в списках, полнотекстовый поиск, запросы на языке 1С и поиск по строке. Разбираем способы, ограничения и типичные ошибки.
Поиск данных в 1С — это набор механизмов, с помощью которых пользователь или программа находит нужные записи в информационной базе: элементы справочников, документы, записи регистров. В зависимости от задачи применяются разные инструменты — от простого поля поиска в форме списка до программных запросов на встроенном языке.
Для обычного пользователя поиск чаще всего означает быстрое нахождение контрагента, номенклатуры или документа в списке. Для разработчика и администратора — это выборка данных по условиям через язык запросов, полнотекстовый поиск по содержимому или поиск ссылок на объект перед его удалением.
Понимание того, какой механизм подходит под конкретную задачу, экономит время и снижает нагрузку на базу. Неправильно организованный поиск в больших базах может заметно замедлить работу всех пользователей, поэтому у каждого способа есть свои ограничения.
Что входит в понятие поиска данных в 1С
Под поиском данных в 1С понимают несколько разных механизмов платформы. Во-первых, это интерактивный поиск в формах списков — пользователь вводит часть наименования, кода или артикула, и система отбирает подходящие строки. Во-вторых, полнотекстовый поиск — отдельный механизм, который индексирует текстовые данные объектов и ищет по словам с учётом морфологии.
В-третьих, существует программный поиск: методы встроенного языка НайтиПоНаименованию(), НайтиПоКоду(), НайтиПоРеквизиту(), а также универсальный язык запросов, позволяющий выбирать данные по произвольным условиям из любых таблиц. Отдельно стоит функция поиска ссылок на объект, которая показывает, где используется конкретный элемент перед его удалением или заменой.
Поиск в форме списка: как найти запись без настроек
Самый доступный способ — строка поиска в форме списка справочника или документов. В управляемых формах она обычно расположена вверху списка. Достаточно начать вводить часть наименования, и список отфильтруется. Во многих конфигурациях поиск работает сразу по нескольким полям: наименованию, коду, артикулу, ИНН для контрагентов.
Если вводить значение без открытия списка — прямо в поле ввода документа — сработает поиск по строке: платформа покажет выпадающий список подходящих элементов. Способ поиска для поля ввода настраивается в конфигураторе: по точному совпадению, по началу строки или по вхождению подстроки.
Дополнительно в списках доступен отбор (кнопка «Ещё» → «Настроить список» в типовых конфигурациях). Отбор позволяет задать условия по любым реквизитам: например, показать документы только за период, по конкретной организации или с определённым статусом. Это не поиск в строгом смысле, но на практике решает ту же задачу — сужает выборку до нужных записей.
- 1Откройте нужный список: справочник или журнал документов
- 2Введите часть наименования, кода или артикула в строку поиска
- 3Если результатов слишком много, добавьте отбор через «Ещё» → «Настроить список»
- 4Проверьте, что отбор не скрывает нужные записи: сбросьте лишние условия
Полнотекстовый поиск: когда нужен и как включить
Полнотекстовый поиск нужен, когда требуется искать по содержимому: по текстам комментариев, описаний, наименованиям файлов и длинных строковых реквизитов. Он работает быстрее перебора по подстроке на больших объёмах и понимает формы слов: запрос «накладная» найдёт и «накладной», и «накладные».
Механизм требует настройки. В конфигураторе у объектов метаданных должны быть отмечены реквизиты, участвующие в полнотекстовом поиске, а в режиме предприятия нужно включить сам поиск и обновить индекс: «Администрирование» → «Полнотекстовый поиск». Индексация большой базы занимает время, поэтому первичное построение индекса обычно выполняют в нерабочие часы.
Ограничение механизма: поиск идёт по целым словам и их формам, а не по произвольным фрагментам внутри слова. Найти «12345» по вводу «234» полнотекстовый поиск не поможет — для таких задач нужен другой подход.
Программный поиск: методы встроенного языка
Разработчики ищут данные программно. Для справочников и планов счетов есть прямые методы менеджера объекта: НайтиПоКоду(), НайтиПоНаименованию(), НайтиПоРеквизиту(). Они возвращают ссылку на найденный элемент или пустую ссылку, если ничего не найдено.
У этих методов есть важные параметры. У НайтиПоНаименованию() второй параметр задаёт точное или неточное совпадение, третий и четвёртый — родителя и владельца для ограничения области поиска. Поиск по реквизиту работает только по реквизитам, для которых в конфигураторе включено индексирование, иначе поиск будет медленным или вовсе невозможным.
Найденный = Справочники.Номенклатура.НайтиПоНаименованию("Кабель ВВГ 3х2,5", Истина);
Если Найденный.Пустая() Тогда
Сообщить("Элемент не найден");
КонецЕсли;
Если условия сложнее одного реквизита — несколько полей, диапазоны дат, связи между таблицами — используют язык запросов. Это основной инструмент выборки данных в 1С: он выполняется на стороне СУБД и при правильном построении работает быстро даже на больших таблицах.
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Справочник.Контрагенты ГДЕ ИНН = &ИНН");
Запрос.УстановитьПараметр("ИНН", "7707083893");
Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() Тогда
Сообщить(Результат.Ссылка);
КонецЕсли;Поиск ссылок на объект перед удалением
Отдельная практическая задача — узнать, где используется элемент справочника или документ. Для этого служит функция «Поиск ссылок на объект» (в типовых конфигурациях доступна из меню «Ещё» в форме элемента) и программный метод НайтиПоСсылкам().
Эта проверка обязательна перед удалением или пометкой на удаление: если на контрагента ссылаются сотни документов, его удаление нарушит целостность данных. Платформа при пометке на удаление с контролем ссылочной целостности сама проверяет наличие ссылок, но ручной поиск позволяет заранее увидеть список зависимых объектов и принять решение — например, заменить элемент дубликатом через обработку поиска и замены дублей.
Сравнение способов поиска
Выбор инструмента зависит от задачи, объёма данных и того, кто выполняет поиск — пользователь или код. Таблица ниже помогает сориентироваться.
| Способ | Кто использует | Когда подходит | Ограничение |
|---|---|---|---|
| Строка поиска в списке | Пользователь | Быстро найти элемент по названию или коду | Ищет только по полям, настроенным в конфигурации |
| Отбор в списке | Пользователь | Выборка по нескольким условиям и периодам | Работает только внутри одного списка |
| Полнотекстовый поиск | Пользователь | Поиск по текстам, комментариям, описаниям | Требует индексации; ищет по словам, а не по фрагментам |
| Методы НайтиПо…() | Разработчик | Поиск одного элемента по коду, наименованию, реквизиту | Одно условие; реквизит должен индексироваться |
| Язык запросов | Разработчик | Сложные выборки, связи таблиц, отчёты | Требует знания синтаксиса и понимания структуры данных |
| Поиск ссылок | Оба | Контроль перед удалением, поиск дублей | Медленный на больших базах |
Что выбрать
Для ежедневной работы пользователя: быстро, без настройки, но только в рамках одного списка
Для поиска по текстовому содержимому всей базы; требует включения и поддержки индекса
Для автоматизации, обменов и отчётов; максимальная гибкость, но нужны навыки разработки
Типичные ошибки и проблемы производительности
Частая ошибка пользователей — поиск по полному точному наименованию, когда в базе название записано иначе: с лишним пробелом, сокращением или другим регистром символов. Надёжнее вводить уникальный фрагмент: артикул, ИНН, часть слова.
У разработчиков типичные проблемы другие. Поиск по неиндексированному реквизиту в цикле приводит к полному сканированию таблицы на каждой итерации. Поиск по наименованию без учёта того, что наименования не уникальны, даёт не тот элемент. Игнорирование параметров «Родитель» и «Владелец» возвращает элемент из чужой группы или чужого владельца.
Правило производительности простое: один запрос с условиями всегда лучше множества одиночных поисков в цикле. Если в обработке нужно сопоставить тысячи строк с элементами справочника, выгрузите соответствие одним запросом и работайте с ним в памяти.
Как проверить результат
Ссылка не пустая, реквизиты элемента соответствуют ожиданиям
Пустая ссылка или найден элемент с похожим, но другим наименованием
Выборка выполняется за секунды даже на большой таблице
Поиск занимает десятки секунд — вероятно, условие по неиндексированному полю
Находит документы по словам из комментариев и описаний
Ничего не находит — индекс устарел или поиск отключён
FAQ: частые вопросы о поиске данных в 1С
Почему поиск в списке не находит элемент, который точно есть?
Чаще всего причина в установленном ранее отборе, который скрывает часть записей, или в том, что поиск настроен только по определённым полям. Сбросьте отбор через «Ещё» → «Установить стандартные настройки» и попробуйте искать по другому реквизиту — коду или артикулу.
Чем полнотекстовый поиск отличается от обычного поиска по строке?
Обычный поиск сравнивает введённую строку с началом или фрагментом значения конкретного поля. Полнотекстовый работает по предварительно построенному индексу, ищет по целым словам с учётом их форм и охватывает сразу много объектов и реквизитов базы.
Как найти все документы, где используется конкретный контрагент?
Откройте карточку контрагента и используйте команду поиска ссылок на объект (в типовых конфигурациях она находится в меню «Ещё»). Система покажет список всех документов и записей, где встречается этот элемент.
Что вернёт НайтиПоНаименованию(), если подходящих элементов несколько?
Метод вернёт первый найденный элемент, причём какой именно — заранее не гарантируется. Наименование не является уникальным полем, поэтому для надёжной идентификации используйте код, ИНН, артикул или запрос с дополнительными условиями.
Почему полнотекстовый поиск перестал находить новые документы?
Индекс полнотекстового поиска обновляется отдельно — по расписанию или вручную. Если обновление отключено или регламентное задание завершилось с ошибкой, новые данные в индекс не попадают. Проверьте настройки в разделе «Администрирование» → «Полнотекстовый поиск» и запустите обновление индекса.
Можно ли искать данные без прав администратора?
Да. Поиск в списках, отборы и полнотекстовый поиск доступны обычным пользователям в рамках их прав. Ограничения касаются программных методов, консоли запросов и настройки индексации — это инструменты разработчика и администратора.
Что важно запомнить
Поиск данных в 1С — это несколько механизмов под разные задачи: строка поиска и отборы для пользователя, полнотекстовый поиск по содержимому, методы НайтиПо…() и язык запросов для разработчика, поиск ссылок перед удалением. Выбирайте инструмент под задачу, проверяйте результат на пустую ссылку и не запускайте тяжёлые операции в рабочее время.