Как найти нужную строку и данные в 1С 8.3
Содержание
Самый быстрый способ найти строку в 1С — встать в любой список и нажать Ctrl+F: вводите фрагмент номера, наименования или комментария и жмёте «Найти далее». Чтобы искать данные сразу по всей базе, не зная, в каком документе они лежат, включают полнотекстовый поиск. А разработчику текст по всем модулям конфигурации выдаёт команда глобального поиска в Конфигураторе.
Под «строкой» каждый понимает своё. Бухгалтер ищет документ по куску номера или по сумме. Кладовщик — позицию номенклатуры по части названия. Программист — где в коде встречается реквизит или процедура. Администратор — кто и когда поменял конкретное значение. Инструменты у всех разные, и ниже разобран каждый: от строки поиска в форме списка до прямого запроса к структуре базы данных.
Сразу сориентируйтесь, какой инструмент ваш.
Ctrl+F прямо в списке либо отбор по колонке с условием «Содержит».ПОДОБНО.Поиск значения в списках и формах
Это то, чем пользуются каждый день. Откройте список документов или справочник и просто начните печатать — сработает быстрый поиск по текущей колонке. Для полноценного поиска нажмите Ctrl+F: откроется окно «Найти», где можно задать направление и искать по текущей либо по всем колонкам. Повтор — клавишей F3 («Найти далее»).
Быстрый поиск набором текста привязан к колонке, по которой отсортирован список. Если значение лежит в другой колонке, он его «не увидит» — и это частая причина мнимой пропажи документа. В таком случае помогает Ctrl+F с поиском по всем колонкам или отбор.
Отбор удобнее, когда нужно не найти одну запись, а сузить список до всех подходящих:
- В командной панели списка нажмите
Ещё → Настроить список. - Перейдите на вкладку
Отбор. - Выберите поле (например, «Комментарий» или «Контрагент»), условие
Содержити впишите фрагмент строки.
Условие Содержит в отборе — это и есть поиск по части строки внутри поля. В отличие от быстрого поиска, он находит вхождение в любом месте значения, а не только в начале.
Тот же Ctrl+F работает и внутри открытого документа — в его табличной части. Если накладная на сто строк и нужно найти одну позицию, встаньте в таблицу товаров и ищите по ней так же, как по списку. Это быстрее, чем прокручивать глазами.
Полнотекстовый поиск по всей базе
Когда непонятно, где именно лежат данные — в документе, справочнике или регистре — используют полнотекстовый поиск. Он индексирует текстовые реквизиты объектов и ищет сразу по всей базе.
Сначала механизм нужно включить и построить индекс. Если в меню нет нужной команды, сначала включите отображение служебных команд: Главное меню → Настройки → Параметры и флажок «Отображать команду Все функции». После этого:
- Откройте
Главное меню → Все функции → Стандартные → Управление полнотекстовым поиском. - Разрешите полнотекстовый поиск.
- Нажмите «Обновить индекс».
Дальше поиск доступен из поля поиска в интерфейсе конфигурации. Он понимает операторы, которые резко повышают точность:
| Приём | Как писать | Что находит |
|---|---|---|
| Любое вхождение | накладн* | слова, начинающиеся на «накладн» |
| Точная фраза | "акт сверки" | эти слова строго рядом и по порядку |
| Оба слова | болт И гайка | записи, где есть оба |
| Любое из слов | болт ИЛИ винт | записи хотя бы с одним |
| Исключение | насос НЕ скважинный | «насос» без слова «скважинный» |
| Слова рядом | оплата РЯДОМ аренда | оба слова недалеко друг от друга |
Полнотекстовый поиск находит только то, что попало в индекс. Свежесозданный документ может не отображаться, пока индекс не обновлён. В рабочих базах обновление обычно настраивают по расписанию.
Поиск по части строки и по маске
Ситуация «помню только кусок» решается тремя инструментами в зависимости от того, где искать.
🔎 В открытом списке — отбор с условием Содержит (см. выше) либо Ctrl+F с поиском по всем колонкам.
🔎 По всей базе — полнотекстовый поиск с маской *: догов* найдёт и «договор», и «договорённость».
🔎 В выборке для отчёта — запрос с оператором ПОДОБНО и шаблоном с процентами (разобран в следующем разделе).
Маска * в полнотекстовом поиске заменяет любое количество символов и ставится в конце слова. Для поиска по середине строки («всё, где встречается „крыш“») надёжнее отбор Содержит или запрос ПОДОБНО "%крыш%" — он находит вхождение в любой позиции.
Регистр букв быстрый и полнотекстовый поиск, как правило, не учитывает: «БОЛТ» и «болт» для них одно и то же.
Поиск текста в Конфигураторе
Это инструмент разработчика: найти, где в коде написано конкретное слово, имя процедуры или реквизита.
Внутри одного модуля работает привычный Правка → Найти (Ctrl+F), следующее вхождение — F3, замена — Правка → Заменить (Ctrl+H).
Чтобы пройтись по всем модулям конфигурации сразу, используйте Правка → Глобальный поиск. Он ищет текст во всех модулях и выводит список найденного — двойной клик по строке результата открывает нужное место в коде. Парная команда Правка → Глобальная замена меняет текст по всей конфигурации.
Отдельная частая задача — найти, где используется объект метаданных (справочник, реквизит, общий модуль). Для этого есть «Поиск ссылок на объект»:
- В дереве конфигурации щёлкните объект правой кнопкой.
- Выберите
Поиск ссылок на объект. - В окне результатов — все места, где объект задействован.
Перед правкой типовой конфигурации лучше искать именно через «Поиск ссылок на объект»: так видно все зависимости, которые сломаются при изменении или удалении объекта.
Запрос на языке 1С: оператор ПОДОБНО
Когда нужно получить список всех записей, подходящих под условие (а не найти одну), пишут запрос. За поиск по части строки отвечает оператор ПОДОБНО.
ВЫБРАТЬ
Номенклатура.Ссылка,
Номенклатура.Наименование
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Наименование ПОДОБНО "%болт%"
В шаблоне работают спецсимволы:
%— любое количество любых символов (в том числе ни одного);_— ровно один любой символ;[0-9]— один символ из диапазона;СПЕЦСИМВОЛ "~"— объявляет экранирующий символ, если искать нужно сам процент или подчёркивание:ПОДОБНО "100~%" СПЕЦСИМВОЛ "~".
Шаблон "%болт%" найдёт «болт», «болты», «анкерный болт». Шаблон "болт%" — только то, что начинается на «болт».
Поиск регистрозависимый, поэтому для надёжности строку и шаблон часто приводят к одному регистру через ВРЕГ():
ГДЕ ВРЕГ(Номенклатура.Наименование) ПОДОБНО ВРЕГ("%Болт%")
Проверить запрос удобно в консоли запросов — это внешняя обработка, которую подключают через Файл → Открыть. В коде результат получают так:
Запрос = Новый Запрос(ТекстЗапроса);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование);
КонецЦикла;
Если же нужно просто проверить вхождение подстроки в уже полученную строку, во встроенном языке есть функция СтрНайти(Строка, Подстрока) — она возвращает номер позиции первого вхождения или 0, если подстроки нет.
Запрос удобен и тем, что ищет сразу по нескольким полям. Чтобы найти контрагента по части названия ИЛИ по части ИНН, условия объединяют через ИЛИ: ГДЕ Наименование ПОДОБНО "%ромаш%" ИЛИ ИНН ПОДОБНО "%7701%". Полнотекстовый поиск так гибко настроить нельзя — там вы ограничены проиндексированными реквизитами.
Поиск в структуре базы данных
Иногда поиск уходит на уровень СУБД — например, при анализе производительности или разборе нештатной ситуации. Здесь главная сложность: имена таблиц и полей в базе данных служебные и не совпадают с именами объектов 1С. Справочник «Номенклатура» может храниться в таблице вида _Reference123, а реквизит — в поле _Fld456.
Сопоставить метаданные и физические таблицы помогает встроенная функция ПолучитьСтруктуруХраненияБазыДанных(). Она возвращает таблицу соответствия: объект конфигурации → имя таблицы и поля в СУБД. Без неё прямой SQL-поиск превращается в гадание.
Прямые запросы к базе 1С допустимы только на чтение и только на свой риск: любое изменение данных в обход платформы нарушает лицензионное соглашение и разрушает целостность — слетают итоги регистров, нумерация и ссылочная целостность. Строковые реквизиты в таблицах видны, но ссылки хранятся в двоичном виде (GUID), поэтому собрать читаемую картину «в лоб» через SQL сложно — почти всегда правильнее остаться в языке запросов 1С.
Поиск по журналу регистрации и логам
Вопрос «кто и когда записал это значение» решается не поиском по данным, а журналом регистрации. Он фиксирует события: проведение документов, изменение записей, вход пользователей.
Открыть журнал можно через Главное меню → Все функции → Стандартные → Журнал регистрации (во многих типовых конфигурациях он также вынесен в раздел администрирования и обслуживания). Внутри работает отбор — по этому полю ищут нужное:
- 📅 по периоду;
- 👤 по пользователю;
- 🧾 по данным (конкретному документу или элементу справочника);
- ⚙️ по виду события и важности.
Физически журнал лежит в каталоге информационной базы (в современных версиях — в файле формата SQLite), поэтому в клиент-серверном варианте он доступен через саму программу, а не как текст.
Отдельно стоит технологический журнал — он настраивается файлом logcfg.xml и пишет обычные текстовые файлы с детальными событиями платформы. По ним ищут привычным текстовым поиском или утилитой grep. А вот выгрузки базы (.dt) и файлы конфигурации (.cf) — это контейнеры, прямой текстовый поиск по ним бесполезен: сначала загружают данные в базу, потом ищут штатными средствами.
Автоматизация поиска: обработки и отчёты
Когда один и тот же поиск нужен регулярно или по сотням объектов сразу, разовые приёмы заменяют на обработки.
Для типовых задач берут штатные универсальные инструменты. Поиск и массовая правка значения по справочнику решаются обработкой группового изменения реквизитов: она отбирает элементы по условию и меняет их пакетно. Проверить и отладить выборку по строке удобно в консоли запросов.
Если готовых средств мало, пишут внешнюю обработку
. Логика простая: запрос с ПОДОБНО по нужным объектам либо перебор коллекции с проверкой через СтрНайти. Такую обработку подключают через Файл → Открыть и запускают без изменения конфигурации.
Для разовой задачи не усложняйте: чаще всего хватает отбора в списке или одного запроса в консоли. Внешняя обработка оправдана, когда поиск повторяется или должен охватить много объектов за один проход.
Чек-лист, чтобы ничего не упустить при выборе способа:
Частые вопросы
Быстрый поиск не находит документ, который точно есть. Почему?
Ctrl+F с поиском по всем колонкам либо отбор с условием «Содержит».Полнотекстовый поиск не показывает свежие документы.
Можно ли найти данные прямым SQL-запросом к базе 1С?
Как найти, где в конфигурации используется реквизит или объект?
Влияет ли регистр букв на поиск?
ПОДОБНО в запросе чувствителен к регистру — приводите строку и шаблон к одному виду через ВРЕГ().