Работа с табличными частями в 1С:Предприятие — одна из самых частых задач как для обычных пользователей, так и для разработчиков. Нередко возникает ситуация, когда нужно быстро отыскать конкретную строку среди сотен или тысяч записей: будь то поиск документа по номеру, фильтрация товаров по артикулу или проверка остатков по определенному складу. Вручную пролистывать таблицу неэффективно, особенно если она содержит десятки колонок и тысячи строк. К счастью, в 1С есть несколько способов ускорить этот процесс — от стандартных инструментов платформы до программных решений на встроенном языке.
Многие пользователи ограничиваются базовым поиском через Ctrl+F, но этот метод работает не всегда: он ищет только по видимым на экране данным и не учитывает скрытые колонки или неотображаемые строки. Более того, в некоторых конфигурациях (например, в 1С:УТ 11 или 1С:ERP) табличные части могут иметь сложную структуру с вложенными таблицами, что усложняет поиск. В этой статье мы разберем все доступные методы — от простых до продвинутых, — чтобы вы могли выбрать оптимальный подход в зависимости от задачи.
Если вы разработчик, то найдете здесь примеры кода для программного поиска, включая работу с динамическими списками и запросами. Если вы обычный пользователь — узнаете, как использовать фильтры, условное оформление и горячие клавиши для ускорения работы. А если вам нужно найти строку по частичному совпадению или с учетом регистра — мы расскажем, как это сделать без программирования.
1. Стандартный поиск через Ctrl+F: ограничения и лайфхаки
Самый очевидный способ — воспользоваться стандартной функцией поиска, которая вызывается комбинацией Ctrl+F (или через меню Правка → Найти). Этот метод работает во всех конфигурациях 1С и не требует дополнительных настроек. Однако у него есть серьезные ограничения:
- 🔍 Ищет только по видимым колонкам — если нужное поле скрыто, поиск не сработает.
- 📄 Не учитывает данные в неотображаемых строках (например, если таблица имеет иерархию или группировку).
- 🔄 Не поддерживает поиск по частичному совпадению в некоторых версиях платформы.
- 🔠 Чувствителен к регистру, если не настроено иначе.
Чтобы повысить эффективность стандартного поиска, воспользуйтесь этими советами:
- 🔧 Предварительно разверните все группировки в таблице (если они есть) — для этого нажмите
ПКМ → Развернуть все. - 👁️ Покажите все колонки через
ПКМ → Настройка списка, если не уверены, в каком поле может быть искомое значение. - 🔄 Если поиск не сработал, попробуйте вводить запрос без пробелов или с подстановочными символами (например,
123вместоДоговор 123).
Обратите внимание: в некоторых конфигурациях (например, в 1С:Бухгалтерия 3.0) стандартный поиск может работать некорректно, если табличная часть содержит динамические данные (например, остатки по складам). В этом случае лучше использовать другие методы.
Если вы часто ищете одни и те же данные, сохраните фильтр как пользовательскую настройку через меню Ещё → Сохранить настройки. Это сэкономит время в будущем.
2. Фильтры в табличной части: как настроить точный поиск
Фильтры — это более мощный инструмент, чем стандартный поиск. Они позволяют искать данные по нескольким критериям одновременно, а также применять условия типа "больше", "меньше", "содержит" и т.д. Чтобы открыть панель фильтров:
- Нажмите на табличную часть правой кнопкой мыши.
- Выберите пункт
Фильтр(илиОтбор и сортировкав некоторых конфигурациях). - В появившемся окне укажите поле, условие и значение для поиска.
Пример: если вам нужно найти все строки, где количество товара больше 100, а дата поставки — позже 01.01.2026, фильтр позволит задать оба условия одновременно. Это невозможно сделать через Ctrl+F.
Вот какие типы фильтров поддерживаются в большинстве конфигураций 1С:
| Тип условия | Пример использования | Применимость |
|---|---|---|
| Равно | Номер документа = "ДОГ-00123" | Для точного совпадения |
| Содержит | Наименование содержит "ноутбук" | Для частичного совпадения |
| Начинается с | Артикул начинается с "ART-" | Для поиска по префиксу |
| Больше/Меньше | Количество > 50 | Для числовых полей |
| В списке | Склад в ("Основной", "Резерв") | Для множественного выбора |
Важный нюанс: в некоторых конфигурациях (например, в 1С:Управление торговлей) фильтры могут автоматически сохраняться между сеансами. Если вы не хотите, чтобы фильтр применялся при каждом открытии документа, не забывайте сбрасывать его через кнопку
Если фильтр применяется автоматически и кнопка 1. Закрыть и открыть документ заново. 2. Нажать 3. Вручную изменить условие фильтра на противоположное (например, "Равно" → "Не равно") и вернуть обратно.Очистить.
Как сбросить "залипший" фильтр, если кнопка не работает?
Очистить не активна, попробуйте:Shift+F5 (обновить форму).
3. Условное оформление: визуальный поиск по цвету
Если вам нужно не просто найти строку, а выделить ее визуально (например, все просроченные заказы или товары с нулевым остатком), используйте условное оформление. Этот инструмент позволяет автоматически раскрашивать строки по заданным правилам.
Как настроить условное оформление:
- Нажмите
ПКМна табличную часть →Условное оформление. - Добавьте новое правило и укажите условие (например,
Дата < ТекущаяДата()для просроченных документов). - Выберите цвет фона или шрифта для выделения.
Преимущества этого метода:
- 🎨 Визуально мгновенно заметны все строки, соответствующие критерию.
- 🔄 Правила сохраняются и применяются автоматически при открытии документа.
- 📊 Можно настроить несколько правил одновременно (например, красный для просрочки, желтый для предоплаты).
Пример: в документе Заказ покупателя можно выделить красным все строки, где Количество > ОстатокНаСкладе, чтобы сразу увидеть дефицитные позиции.
Условное оформление не заменяет фильтры, а дополняет их. Фильтр скрывает ненужные строки, а условное оформление подсвечивает важные среди видимых.
4. Поиск через запросы (для разработчиков)
Если вам нужно найти строку в табличной части программно (например, в обработке или отчете), лучший способ — использовать запрос на языке 1С. Это гибкий метод, который позволяет искать данные по сложным условиям, включая связь с другими таблицами.
Пример кода для поиска строки в табличной части документа по артикулу товара:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Документ.Строка КАК Строка
|ИЗ
| Документ.ЗаказПокупателя.ТабличнаяЧасть1 КАК Документ
|ГДЕ
| Документ.Артикул = &Артикул";
Запрос.УстановитьПараметр("Артикул", "ART-12345");
Результат = Запрос.Выполнить();
НайденныеСтроки = Результат.Выгрузить();
Этот метод подходит для:
- 🔍 Поиска по несколько полям одновременно (например, артикул + склад).
- 📊 Получения статистики по найденным строкам (сумма, количество).
- 🔄 Интеграции с другими объектами (например, проверка остатков по найденному товару).
Обратите внимание: если табличная часть содержит большое количество строк (десятки тысяч), запрос может выполняться медленно. В этом случае лучше использовать индексы или оптимизировать структуру данных.
1. Проверьте права доступа к табличной части
2. Убедитесь, что поле для поиска не пустое
3. Используйте параметры в запросе для защиты от SQL-инъекций
4. Обработайте случай, когда строк не найдено
-->
5. Горячие клавиши и скрытые возможности
Многие пользователи не знают, что в 1С есть скрытые комбинации клавиш, которые ускоряют поиск в табличных частях. Вот самые полезные из них:
- 🔍
Ctrl+Shift+F— расширенный поиск (в некоторых конфигурациях открывает фильтр). - ↑↓
Alt+↑/Alt+↓— быстрый переход к первой/последней строке. - 🔠
F3— повтор последнего поиска (работает послеCtrl+F). - 📋
Ctrl+Alt+F— открыть отбор и сортировку (аналог фильтра).
Еще один лайфхак: если вам нужно найти строку по нескольким критериям, но фильтры не сохраняются, воспользуйтесь временной сортировкой. Например:
- Отсортируйте таблицу по колонке
Артикул(кликните на заголовок столбца). - Затем отсортируйте по
Складу. - Теперь все строки с одинаковым артикулом и складом будут grouped together, и их легко найти визуально.
В конфигурациях на управляемых формах (например, 1С:ERP 2.5) есть еще одна полезная функция — поиск по первым символам. Начните вводить текст прямо в таблице (без Ctrl+F), и 1С автоматически подсветит первую строку, которая начинается с введенных символов.
Если вы часто работаете с одной и той же табличной частью, создайте внешнюю обработку с предварительно настроенными фильтрами. Это сэкономит время при повторном поиске.
6. Поиск в динамических списках и сложных таблицах
В современных конфигурациях (например, 1С:УТ 11 или 1С:КА 2.4) табличные части часто реализованы как динамические списки. Они подгружают данные порциями (пагинация), что усложняет поиск. Если стандартные методы не работают, попробуйте следующее:
- 🔄 Отключите пагинацию через настройки списка (если возможно).
- 📥 Экспортируйте данные в Excel через
Файл → Экспорти ищите там. - 🔧 Используйте пользовательские настройки для увеличения количества строк на странице.
Для программного поиска в динамических списках используйте метод НайтиСтроки():
Список = ЭлементыФормы.ТабличнаяЧасть1.Список;
НайденныеСтроки = Список.НайтиСтроки(Новый Структура("Артикул", "ART-123"));
Если табличная часть имеет иерархическую структуру (например, группировка по складам), стандартный поиск может не учитывать вложенные строки. В этом случае:
- Разверните все группировки (
ПКМ → Развернуть все). - Используйте фильтр с условием
Уровень = 0для поиска только по верхнему уровню.
Как искать в таблице с миллионом строк?
Для очень больших таблиц (более 100 000 строк) стандартные методы неэффективны. В этом случае:
1. Используйте серверные процедуры для поиска.
2. Настройте индексы на часто используемые поля.
3. Разбейте поиск на пакеты (например, искать по 10 000 строк за раз).
7. Поиск с учетом регистра и специальных символов
По умолчанию поиск в 1С обычно нечувствителен к регистру, но в некоторых случаях это может быть проблемой. Например, если вы ищете артикул ART-123, а в таблице есть art-123 или Art-123, стандартный поиск найдет все варианты. Чтобы искать с учетом регистра, используйте:
- 🔠 Запросы с функцией
ВРЕГ()для приведения к верхнему регистру:ГДЕ ВРЕГ(Артикул) = ВРЕГ(&Артикул) - 📝 Фильтры с условием "Равно" и точным вводом (включая регистр).
Если в данных есть специальные символы (например, кавычки, проценты), их нужно экранировать. В запросах для этого используется функция ЭкранироватьСтроку():
АртикулДляПоиска = ЭкранироватьСтроку("ART""123");
Запрос.Текст = "ГДЕ Артикул = """ + АртикулДляПоиска + """";
Для поиска по частичному совпадению с маской используйте символы % (любое количество символов) и _ (один символ). Пример:
ГДЕ Артикул ПОДОБНО "ART%123"
Этот запрос найдет все артикулы, которые начинаются на ART и заканчиваются на 123.
8. Автоматизация поиска: обработки и расширения
Если вам приходится часто искать данные по одним и тем же критериям, имеет смысл автоматизировать процесс. Вот несколько способов:
- 🤖 Создать внешнюю обработку с предварительно настроенными фильтрами и кнопкой "Найти".
- 📦 Использовать расширения конфигурации для добавления новых полей поиска.
- 🔄 Настроить регламентное задание, которое будет автоматически помечать нужные строки (например, просроченные заказы).
Пример кода для простой обработки поиска:
Процедура НайтиПоАртикулу(Команда)
Артикул = ВвестиЗначение("Введите артикул для поиска:");
Если НЕ ЗначениеЗаполнено(Артикул) Тогда
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ССЫЛКА КАК Ссылка
|ИЗ Документ.ЗаказПокупателя.Товары КАК Товары
|ГДЕ Товары.Артикул = &Артикул";
Запрос.УстановитьПараметр("Артикул", Артикул);
Результат = Запрос.Выполнить().Выгрузить();
Если Результат.Количество() = 0 Тогда
Предупреждение("Строки не найдены!");
Иначе
ОткрытьЗначение(Результат[0].Ссылка);
КонецЕсли;
КонецПроцедуры
Для сложных сценариев (например, поиск с учетом истории изменений) можно использовать механизм полнотекстового поиска, который доступен в 1С:Предприятие 8.3.14+. Он позволяет искать данные даже в текстовых полях с учетом морфологии.
Автоматизация поиска особенно полезна для повторяющихся задач, таких как проверка остатков, поиск дублей или анализ просроченных документов.
FAQ: Частые вопросы по поиску в табличных частях 1С
Почему Ctrl+F не находит строку, которая точно есть в таблице?
Вероятные причины:
- Строка скрыта из-за группировки или фильтра.
- Искомое значение находится в скрытой колонке.
- Поиск ведется с учетом регистра, а в данных другой регистр.
- Табличная часть является динамическим списком и не все данные подгружены.
Решение: разверните все группировки, покажите все колонки и попробуйте поиск по другому полю.
Как найти строку по частичному совпадению (например, только начало артикула)?
Используйте:
- В фильтрах: условие "Начинается с" или "Содержит".
- В запросах: оператор
ПОДОБНО(например,ГДЕ Артикул ПОДОБНО "ART%"). - В стандартном поиске: введите
часть_текста(если поддерживается).
Можно ли искать данные в табличной части по нескольким документам одновременно?
Да, для этого нужно:
- Использовать отчет или обработку, которая обходит несколько документов.
- Написать запрос с объединением (например,
ОБЪЕДИНИТЬ ВСЕдля разных типов документов). - В 1С:ERP или 1С:УТ воспользоваться универсальным отчетом "Анализ данных".
Пример запроса для поиска по нескольким видам документов:
ВЫБРАТЬ
"ЗаказПокупателя" КАК ТипДокумента,
ЗаказПокупателя.Ссылка КАК Ссылка
ИЗ
Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателя
ГДЕ
ЗаказПокупателя.Артикул = &Артикул
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"РеализацияТоваровУслуг" КАК ТипДокумента,
РеализацияТоваровУслуг.Ссылка КАК Ссылка
ИЗ
Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг
ГДЕ
РеализацияТоваровУслуг.Артикул = &Артикул
Как сохранить фильтр, чтобы не настраивать его каждый раз?
Способы сохранения фильтров:
- В большинстве конфигураций:
Ещё → Сохранить настройки(сохраняет фильтры, сортировку и колонки). - В 1С:УТ 11 и 1С:ERP: используйте пользовательские настройки списков (
Все настройки → Сохранить как...). - Для разработчиков: создайте обработку с предварительно заданными фильтрами и добавьте ее в панель разделов.
Внимание: в некоторых конфигурациях сохраненные настройки применяются ко всем пользователям. Проверьте права доступа, если нужно ограничить видимость фильтра.
Что делать, если поиск работает очень медленно?
Причины медленной работы и решения:
- Большой объем данных: используйте индексы на часто используемых полях или разбейте поиск на части.
- Сложные запросы: оптимизируйте запрос, убирая лишние соединения (
ЛЕВОЕ СОЕДИНЕНИЕ). - Динамические списки: отключите пагинацию или увеличьте размер порции данных.
- Сетевые задержки: если база на сервере, проверьте скорость соединения.
Для диагностики используйте технологический журнал (Администрирование → Технологический журнал), чтобы найти узкие места.