Поиск нужной строки в 1С:Предприятие — задача, с которой регулярно сталкиваются и обычные пользователи, и разработчики. В одних случаях требуется найти конкретный документ по номеру или наименованию, в других — отыскать фрагмент кода в конфигурации, а иногда и вовсе проанализировать тысячи записей в базе данных. Способы поиска радикально отличаются в зависимости от цели: для бухгалтера это может быть простой фильтр в справочнике, а для программиста — сложный запрос на языке 1С или SQL.
В этой статье мы разберём все актуальные методы — от базовых (доступных любому пользователю) до продвинутых (требуют прав администратора или знания 1С:Языка программирования). Вы узнаете, как искать строки в интерфейсе программы, в конфигураторе, через запросы и даже в дампах базы данных. Особый акцент сделан на поиске по частичному совпадению и регулярным выражениям, что часто выручает при работе с большими объёмами неструктурированных данных.
1. Поиск строки в интерфейсе 1С (для пользователей)
Самый простой способ — воспользоваться встроенными инструментами поиска, доступными прямо в пользовательском режиме. Они не требуют специальных знаний и подходят для большинства повседневных задач.
Основные места, где можно искать строки:
- 📄 Документы — поиск по номерам, датам, контрагентам или суммам. Например, в журнале документов
ПокупкиилиРеализация. - 📚 Справочники — фильтрация по наименованиям, кодам или реквизитам (например, поиск товара по артикулу в справочнике
Номенклатура). - 🔍 Универсальный поиск — вызов через
Ctrl+Fв большинстве форм (работает как в списках, так и в отдельных документах). - 📊 Отчёты — многие отчёты (например,
Оборотно-сальдовая ведомость) поддерживают поиск по строкам результата.
Пример: чтобы найти документ Поступление товаров №12345, откройте журнал Поступление товаров и услуг, нажмите Ctrl+F и введите номер. Система подсветит все совпадения. Если документ не найден, проверьте:
- 📅 Диапазон дат в фильтре журнала (по умолчанию может стоять текущий месяц).
- 🏷️ Статус документа (возможно, он помечен на удаление или не проведён).
- 🔄 Правильность регистра (поиск в 1С часто чувствителен к заглавным буквам).
Если поиск по Ctrl+F не срабатывает, попробуйте обновить список документов кнопкой Обновить (или F5) — иногда данные подгружаются не полностью.
2. Поиск по частичному совпадению и подстановочным знакам
Когда точное наименование неизвестно, на помощь приходят подстановочные знаки. В 1С поддерживаются два основных символа:
%— заменяет любое количество символов (включая ноль). Например,%ноут%найдёт иНоутбук, иНоутбук HP, иРемонт ноутбуков._— заменяет ровно один символ. Например,сч_тнайдётсчёт, но несчета.
Где это работает:
- 🔎 В полях фильтров справочников и документов (например, в строке поиска справочника
Контрагенты). - 📝 В запросах на языке 1С (см. раздел 5).
- 🗃️ В некоторых отчётах (например, в
Анализ субконтоможно искать по маске).
Пример: чтобы найти все документы с упоминанием слова "монтаж" в комментарии, в журнале документов:
- Откройте нужный журнал (например,
Заказы клиентов). - Нажмите
Ещё → Настройка списка. - Добавьте колонку
Комментарий(если её нет). - В фильтре по колонке
Комментарийвведите%монтаж%.
3. Поиск строки в конфигураторе (для разработчиков)
Если нужно найти строку в коде конфигурации (например, имя переменной, процедуры или фрагмент текста), используйте встроенные инструменты конфигуратора. Это актуально для программистов, администрирующих или дорабатывающих 1С.
Основные способы:
- 🔍 Поиск по тексту модулей (
Ctrl+Shift+Fв конфигураторе). Ищет по всем модулям, формам и макетам. - 📂 Поиск по метаданным (
Ctrl+Fв дереве метаданных). Например, чтобы найти все реквизиты с именемДатаОплаты. - 🖥️ Поиск по синтаксису — в современных версиях 1С (8.3.20+) поддерживается поиск по шаблонам кода (например, найти все вызовы функции
НайтиПоНаименованию).
Пример: чтобы найти все упоминания строки "Недостаточно прав" в коде:
- Откройте конфигуратор (
1C:Предприятие → Конфигуратор). - Нажмите
Ctrl+Shift+F. - В поле поиска введите
Недостаточно прав. - Установите флажки
Учитывать регистриИскать во всех модулях. - Нажмите
Найти.
Убедиться, что конфигурация открыта в режиме редактирования|
Использовать Ctrl+Shift+F для глобального поиска|
Проверять флажки "Искать в комментариях" и "Искать в строках"|
Для больших конфигураций ограничивать область поиска (например, только в модулях объектов)-->
⚠️ Внимание: Поиск по тексту модулей может занять много времени в больших конфигурациях (например, в 1С:ERP или 1С:Управление холдингом). Если система "подвисает", ограничьте область поиска конкретными объектами метаданных (например, только модулями документов).
4. Поиск через запросы на языке 1С
Для сложных задач (например, поиска строки в табличных частях документов или по нескольким реквизитам одновременно) используйте запросы на языке 1С. Это универсальный инструмент, доступный как в пользовательском режиме (через Файл → Новый → Запрос), так и в конфигураторе.
Базовый синтаксис запроса для поиска строки:
ВЫБРАТЬ
Ссылка КАК Ссылка,
Наименование КАК Наименование
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Наименование ПОДОБНО "%монитор%"
Примеры практических запросов:
| Задача | Пример запроса | Примечание |
|---|---|---|
| Поиск документов с комментарием, содержащим слово "срочно" | |
Работает только если поле Комментарий включено в виртуальную таблицу |
| Поиск контрагентов с адресом в Москве | |
Можно уточнить поиск по ЮрАдрес или ФактическийАдрес |
| Поиск строк в табличной части документа по артикулу | |
Используйте псевдонимы (КАК) для удобства |
⚠️ Внимание: Запросы с оператором ПОДОБНО могут тормозить на больших базах (более 100 000 записей). В таких случаях:
- Ограничивайте период поиска (например,
ГДЕ Дата > &НачалоПериода). - Используйте индексируемые поля (например,
КодилиАртикулвместоНаименование). - Для регулярных поисков создавайте регламентные задания с выполнением в нерабочее время.
5. Поиск строки в базе данных (SQL-запросы)
Для опытных пользователей и администраторов доступен поиск непосредственно в базе данных через SQL-запросы. Это актуально, если:
- Нужно найти данные, которые не отображаются в интерфейсе 1С (например, удалённые документы).
- Требуется анализировать большие объёмы данных с высокой скоростью.
- Необходимо искать по системным таблицам (например,
ConfigилиParams).
Пример SQL-запроса для поиска строки в таблице документов (для Microsoft SQL Server):
SELECT
t._IDRRef,
t._Date_Time,
t._Number
FROM
_Document123 AS t -- где 123 - внутренний идентификатор типа документа
WHERE
t._Description LIKE '%срочный%'
AND t._Marked = 0 -- только не помеченные на удаление
Как выполнить SQL-запрос:
- Подключитесь к базе данных через SQL Server Management Studio или аналогичный инструмент.
- Узнайте внутренние имена таблиц (например, через запрос
SELECT * FROM _1SMetadata). - Используйте оператор
LIKEдля поиска по частичному совпадению.
Как узнать внутренний идентификатор типа документа?
В конфигураторе откройте нужный документ (например, РеализацияТоваровУслуг), перейдите на закладку Прочее и посмотрите поле Идентификатор. Или выполните запрос:
SELECT
t._ID,
t._Name
FROM
_1SMetadata AS t
WHERE
t._Type = 1 -- 1 - документ, 2 - справочник, etc.
⚠️ Внимание: Прямые SQL-запросы к базе 1С могут нарушить целостность данных, если выполнять UPDATE или DELETE. Никогда не изменяйте данные напрямую — используйте только SELECT для чтения. Для модификаций применяйте штатные механизмы 1С (например, Объект.Записать()).
6. Поиск в дампах и логах 1С
В редких случаях требуется искать строки в дампах базы данных (например, после аварийного завершения) или в логах технологического журнала. Это продвинутая техника, которая пригодится администраторам и специалистам поддержки.
Инструменты для поиска:
- 📄 Текстовые редакторы с поддержкой регулярных выражений (Notepad++, VS Code). Подходят для логов (
.lgp,.log). - 🗄️ Утилиты для работы с дампами (SQL Server Data Tools, pgAdmin для PostgreSQL).
- 🔍 Специализированные парсеры (например, 1C:LogParser для анализа логов 1С).
Пример: поиск ошибки в логе технологического журнала:
- Откройте файл лога (обычно находится в
C:\Program Files\1cv8\srvinfo\reg_1541\1Cv8Log\). - В Notepad++ нажмите
Ctrl+F, перейдите на закладкуНайти в файлах. - В поле
НайтивведитеОШИБКА:(или другой маркер). - В поле
Фильтрыукажите.lgp;.log. - Нажмите
Найти все.
Для поиска в дампах SQL Server:
-- Поиск строки в дампе (пример для SQL Server)
RESTORE FILELISTONLY FROM DISK = 'C:\backup\base.bak';
RESTORE HEADERONLY FROM DISK = 'C:\backup\base.bak';
-- Чтение содержимого дампа (требует специализированных инструментов)
-- Например, через ApexSQL Restore или аналоги
Поиск в дампах и логах — крайняя мера. В 90% случаев задачу можно решить штатными средствами 1С или SQL-запросами. Прибегайте к этому методу только если другие способы не сработали.
7. Автоматизация поиска: обработки и внешние отчёты
Если поиск строки требуется выполнять регулярно, имеет смысл автоматизировать процесс с помощью:
- 📊 Внешних отчётов — создаются в конфигураторе и позволяют гибко настраивать фильтры.
- ⚙️ Обработок — можно написать универсальную обработку для поиска по любым реквизитам.
- 🤖 Скриптов на языке 1С — например, для ночного поиска и отправки результатов на почту.
Пример кода для простой обработки поиска по справочнику:
Процедура ПоискПоСправочнику(ЗначениеПоиска, ИмяСправочника)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Ссылка,
| Наименование
|ИЗ
| Справочник." + ИмяСправочника + " КАК Справочник
|ГДЕ
| Наименование ПОДОБНО &Поиск";
Запрос.УстановитьПараметр("Поиск", "%" + ЗначениеПоиска + "%");
Результат = Запрос.Выполнить();
Возврат Результат.Выгрузить();
КонецПроцедуры
Где взять готовые решения:
- 📦 Инфостарт — тысячи бесплатных и платных обработок для поиска.
- 🛠️ Портал ИТС — официальные решения от 1С.
- 🤝 Сообщества разработчиков (например, форум 1С).
⚠️ Внимание: Перед использованием сторонних обработок проверяйте их на тестовой базе. Некоторые решения могут содержать вредоносный код или конфликтовать с вашей конфигурацией. Особенно осторожно относитесь к обработкам, требующим прав администратора.
FAQ: Частые вопросы по поиску строк в 1С
Как найти документ, если известен только фрагмент номера (например, "...-005")?
Используйте подстановочный знак % в фильтре журнала документов. Например, введите %-005% в поле поиска по номеру. Если не срабатывает, попробуйте:
- Убрать дефисы из поискового запроса (
%005%). - Проверьте настройки нумерации документа — возможно, префиксы или суффиксы мешают поиску.
Почему поиск по Ctrl+F не находит строку, которая точно есть в базе?
Возможные причины:
- Данные не подгружены в список (нажмите
F5для обновления). - Поиск ведётся только по видимым колонкам (добавьте нужную колонку через
Настройка списка). - Строка содержит непечатаемые символы (пробелы, табуляции). Попробуйте скопировать строку из базы и вставить в поиск.
- Разный регистр символов (включите опцию
Игнорировать регистр, если она есть).
Можно ли искать по истории изменений документа?
Да, для этого:
- Откройте документ.
- Нажмите
Ещё → История изменений(илиВсе действияв новых версиях). - В открывшемся окне используйте
Ctrl+Fдля поиска по тексту изменений.
Если история не ведётся, проверьте настройки журнала регистрации (Администрирование → Поддержка и обслуживание → Журналы регистрации).
Как найти все документы, в которых упоминается конкретный контрагент?
Используйте запрос на языке 1С:
ВЫБРАТЬ РАЗЛИЧНЫЕ
ВИД() КАК ВидДокумента,
Ссылка КАК Ссылка,
Номер,
Дата
ИЗ
Документ.* КАК Документ
ГДЕ
Документ.Контрагент = &Контрагент
Где &Контрагент — ссылка на нужного контрагента. Для упрощения можно создать внешний отчёт с таким запросом и полем для ввода контрагента.
Что делать, если поиск работает слишком медленно?
Оптимизируйте запрос:
- Добавьте условие по дате (
ГДЕ Дата > &НачалоПериода). - Используйте индексируемые поля (например,
КодвместоНаименование). - Разбейте запрос на части (например, сначала найдите IDs, затем детализируйте).
- Для больших баз настройте индексы в SQL (требуются права администратора).
Если проблема в интерфейсе (например, тормозит журнал документов), попробуйте:
- Отключить ненужные колонки в настройках списка.
- Использовать
Показать по 100 строквместо полной выгрузки. - Очистить кэш 1С (
Администрирование → Обслуживание → Тестирование и исправление → Очистить кэш).