Как настроить поиск документа по части номера в табличной части 1С?

Пользователь 1С v8.3 (Управляемые формы)
← На главную

Часто при работе с документами, содержащими табличные части, возникает необходимость быстро найти и подставить другой документ по его номеру. Например, в документе "Реализация товаров и услуг" нужно указать документ-основание "Счет на оплату". Стандартный механизм 1С не всегда позволяет находить документ, если вводить неполный номер или его часть. Разберем, почему так происходит и как это исправить.

Проанализируем ситуацию: у вас есть табличная часть, в одной из колонок которой находится реквизит-ссылка на другой документ. Вы начинаете вводить в это поле номер и ожидаете, что система найдет и подставит нужный документ, но ничего не происходит. Выясним причину и рассмотрим несколько способов решения этой задачи.

Стандартное поведение системы и возможные проблемы

По умолчанию платформа 1С действительно умеет искать документ по номеру при вводе в поле ссылки. Однако этот механизм имеет свои особенности, из-за которых поиск может не срабатывать.

Причина 1: Поиск по началу строки. Стандартный поиск работает по принципу "Найти по строке". Это означает, что система ищет совпадение с самого начала номера документа. Если вы введете "123", то 1С найдет документы с номерами "123", "123-А", "12345", но не найдет документ с номером "АБ-123". Если вы пытаетесь найти документ по цифрам из середины или конца номера, стандартный поиск вам не поможет.

Причина 2: Периодичность нумерации. Если в системе есть несколько документов с одинаковым номером, но за разные периоды (например, "001" от января и "001" от февраля), то после ввода номера система предложит вам список для выбора нужного документа. Это штатное и корректное поведение.

Причина 3: Составной тип данных. Если поле в табличной части может ссылаться на документы разных видов (например, и на "Счет на оплату", и на "Заказ клиента"), то стандартный поиск по номеру может работать иначе или не работать вовсе, так как системе непонятно, среди документов какого типа искать.

Если ваша проблема заключается в том, что вы хотите находить документ по любой части его номера, то стандартного функционала будет недостаточно. В этом случае на помощь приходит полнотекстовый поиск.

Решение 1: Настройка полнотекстового поиска (ППД)

Полнотекстовый поиск — это мощный механизм платформы, который позволяет находить данные не только по полному совпадению или началу строки, но и по любому вхождению слова или числа. Он работает на основе специального индекса, что делает поиск очень быстрым.

Рассмотрим по шагам, как его включить и настроить.

  1. Включение функционала. Запустите 1С в режиме "Предприятие" с правами администратора. Перейдите в раздел "Администрирование""Общие настройки".

  2. Активация поиска. Внутри общих настроек найдите подраздел "Поиск данных". Установите основной флажок "Полнотекстовый поиск данных".

  3. Создание и обновление индекса. После установки флажка нажмите на ссылку "Настроить". Откроется окно управления полнотекстовым поиском. Нажмите кнопку "Обновить индекс". Этот процесс может занять значительное время, если у вас большая информационная база. Система проанализирует все текстовые данные и создаст индекс для быстрого поиска.

  4. Настройка регламентных заданий. Для корректной работы поиска важно, чтобы индекс регулярно обновлялся. Это делается с помощью двух регламентных заданий: Обновление индекса ППД и Слияние индекса ППД. Убедитесь, что в настройках (раздел "Администрирование" – "Обслуживание" – "Регламентные и фоновые задания") эти задания включены и выполняются по расписанию (например, каждую ночь).

Важные особенности полнотекстового поиска:

После включения и первоначального обновления индекса поиск в полях ввода должен начать работать по части строки, решая исходную проблему.

Решение 2: Программная доработка (для разработчиков)

Если полнотекстовый поиск по каким-то причинам не подходит (например, создает слишком большую нагрузку или требуется более сложная логика подбора), задачу можно решить программно. Этот способ требует внесения изменений в конфигурацию.

Обработка события "ПриИзменении"

Для поля ввода в табличной части можно создать обработчик события ПриИзменении. В этом обработчике пишется код, который будет выполняться каждый раз, когда пользователь вводит текст в поле.

Логика работы может быть следующей:

  1. Код получает текст, введенный пользователем.
  2. С помощью запроса к базе данных выполняется поиск документов, номер которых содержит введенный текст. В запросе для этого используется оператор ПОДОБНО (например, ГДЕ Документ.Номер ПОДОБНО "%" + ВведенныйТекст + "%").
  3. Если по результатам запроса найден ровно один документ, он автоматически подставляется в поле.
  4. Если найдено несколько документов, пользователю открывается специальная форма выбора из найденных вариантов.
  5. Если ничего не найдено, поле очищается или выводится сообщение.

Этот метод дает полный контроль над логикой поиска, позволяя добавлять любые дополнительные фильтры (по дате, контрагенту, организации и т.д.).

Использование форм подбора

Еще один распространенный способ — создание кастомной формы подбора. Вместо прямого ввода в ячейку пользователь нажимает кнопку выбора, и открывается специальная форма. Эта форма может содержать список документов с различными фильтрами и полем для поиска по любой части номера. Пользователь находит нужные документы в этой форме, выбирает их, и они автоматически переносятся в табличную часть исходного документа. Этот подход считается наиболее удобным для пользователя при работе с большими объемами данных.

← На главную