Как 1С достаёт текст из прикреплённых файлов и зачем это поиску

· 10 мин

Содержание

Автоматическое извлечение текстов в 1С — это фоновый механизм, который читает содержимое прикреплённых файлов (Word, Excel, PDF, TXT) и сохраняет его в базе как обычный текст. Дальше этот текст попадает в индекс полнотекстового поиска: вы вводите фразу из договора — и 1С находит карточку контрагента, к которой этот договор прикреплён.

Частое заблуждение — считать, что извлечение текстов «выгружает данные из 1С» во внешние программы. Нет: механизм работает в обратную сторону, он забирает текст из файлов внутрь базы. Работает он в типовых конфигурациях на Библиотеке стандартных подсистем (БП 3.0, ЗУП 3.1, УТ 11, КА, ERP, Документооборот) и опирается на объект платформы ИзвлечениеТекста.

Суть механизма: из файла в индекс поиска

Цепочка состоит из четырёх звеньев. Если одно из них не работает , поиск по содержимому файлов молча перестаёт находить документы.

  1. 📎 Файл прикреплён к документу, справочнику или задаче (кнопка со скрепкой «Присоединённые файлы»).
  2. 🔎 Извлечение текста. Платформа открывает файл через фильтр формата и получает из него «голый» текст без оформления.
  3. 💾 Сохранение. Текст записывается в служебный реквизит версии файла, а у файла меняется статус извлечения.
  4. 📚 Индексация. При очередном обновлении индекса полнотекстового поиска сохранённый текст попадает в индекс.

У каждого файла БСП хранит статус извлечения. Значений три:

СтатусЧто значитЧто делать
Не извлеченФайл ещё не обработанЖдать запуска задания или запустить вручную
ИзвлеченТекст сохранён в базеНичего, файл уже участвует в поиске после обновления индекса
Извлечь не удалосьФормат не поддержан или файл повреждёнПроверить фильтр формата и сам файл

Задание каждый раз берёт порцию файлов со статусом «Не извлечен». Поэтому на базе с десятками тысяч вложений первый проход может занять часы или дни — это нормально.

Извлечённый текст хранится в базе. На большом архиве сканов и договоров это заметно увеличивает её размер. Учитывайте это при планировании места под резервные копии.

Где пригождается извлечение текстов из файлов

Механизм полезен везде, где важные сведения лежат не в реквизитах, а во вложениях.

  • 📄 Договорной архив. Ищете по номеру пункта, сумме или фразе «штраф за просрочку» — и находите нужный договор среди сотен.
  • 🧾 Входящая первичка. Счета и акты от поставщиков в PDF с текстовым слоем: поиск по ИНН или номеру счёта.
  • 👥 Кадровые документы. Скан-копии заявлений и приказов в ЗУП — если в PDF есть распознанный текст.
  • 📨 Документооборот. Поиск по входящим письмам и служебным запискам — основной сценарий в 1С:Документообороте.
  • 🛠 Внутренние регламенты. Инструкции в Word, прикреплённые к справочникам, находятся по любой фразе из текста.

Когда механизм не нужен:

  • ❌ Вложений в базе почти нет — извлекать нечего.
  • ❌ Полнотекстовый поиск выключен — текст будет сохраняться, но искать по нему некому.
  • ❌ Файлы — чистые сканы-картинки без текстового слоя. Извлекать из них нечего, механизм не распознаёт изображения.

Три способа извлекать тексты в 1С

Способ выбирают по тому, где работает сервер 1С и как развёрнута база.

Регламентное задание «Извлечение текста»

Основной вариант для файловых баз и для клиент-серверных баз с сервером 1С на Windows. Задание запускается по расписанию, берёт порцию необработанных файлов и извлекает из них текст прямо на сервере.

Где найти в БП 3.0, ЗУП 3.1 и УТ 11: Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. В списке ищите задание со словом «извлечение» в названии. Здесь видно расписание, дату последнего запуска и результат.

В панели Администрирование → Общие настройки есть группа полнотекстового поиска. В ней включают сам поиск и автоматическое извлечение текстов на сервере.

Обработка «Автоматическое извлечение текстов» на клиенте Windows

Главный приём для серверов на Linux. Фильтры форматов (IFilter), через которые платформа читает DOCX, XLSX и PDF, — компонент Windows. На Linux набор поддерживаемых форматов гораздо уже, и офисные документы на сервере часто не разбираются.

Решение БСП: извлечение переносят на компьютер пользователя с Windows.

  1. На отдельном компьютере с Windows (подойдёт рабочая станция администратора, которая не выключается на ночь) запускают клиент 1С под пользователем с полными правами.
  2. Открывают обработку «Автоматическое извлечение текстов». Ссылка на неё есть в группе полнотекстового поиска в общих настройках, либо её можно открыть через Все функции → Обработки.
  3. Задают интервал запуска и размер порции, нажимают кнопку запуска.
  4. Оставляют окно открытым: пока работает сеанс, обработка по таймеру забирает файлы и сохраняет текст в базу.

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

Программное извлечение через объект ИзвлечениеТекста

Если нужен текст файла в своей обработке или расширении, платформа даёт объект ИзвлечениеТекста. Пример ниже читает файл с диска и возвращает текст:

Функция ТекстИзФайла(ПолноеИмяФайла)

    Файл = Новый Файл(ПолноеИмяФайла);
    Если Не Файл.Существует() Тогда
        Возврат "";
    КонецЕсли;

    Попытка
        Извлечение = Новый ИзвлечениеТекста(ПолноеИмяФайла);
        Возврат Извлечение.ПолучитьТекст();
    Исключение
        ЗаписьЖурналаРегистрации("ИзвлечениеТекста",
            УровеньЖурналаРегистрации.Предупреждение, , ,
            ОписаниеОшибки());
        Возврат "";
    КонецПопытки;

КонецФункции

Код выполняется там, где лежит файл и стоят фильтры форматов: на сервере или на клиенте. Если файл хранится в базе, сначала запишите его двоичные данные во временный файл через ПолучитьИмяВременногоФайла(), извлеките текст, затем удалите временный файл.

Сравнение способов:

СпособКогда подходитОграничения
Регламентное заданиеФайловая база, сервер 1С на WindowsЗависит от фильтров, установленных на сервере
Обработка на клиентеСервер 1С на LinuxНужен постоянно открытый сеанс на Windows
Объект ИзвлечениеТекстаСвоя доработка, разовая выборкаПишется и сопровождается самостоятельно

Что нужно для работы: фильтры форматов и настройки сервера

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

Форматы Office. Для DOCX, XLSX, PPTX на сервере без установленного Microsoft Office нужен пакет фильтров Microsoft Office (Office Filter Pack). Без него такие файлы получают статус «Извлечь не удалось».

PDF. Windows Server по умолчанию PDF не индексирует. Нужен сторонний PDF IFilter — например, от Adobe или другого поставщика. Ставят его на тот компьютер, где идёт извлечение.

Разрядность. Фильтр должен совпадать по разрядности с процессом, который его вызывает. Сервер 1С 64-битный — нужен 64-битный фильтр. Это самая частая причина, по которой фильтр «установлен, но не работает».

Установка фильтров на сервер 1С иногда требует перезапуска службы агента сервера. При перезапуске оборвутся сеансы всех пользователей. Делайте это вне рабочего времени и предупредите коллег заранее.

Что проверить перед стартом:

Готовность к извлечению текстов
Выполнено: 0 / 6

Почему тексты не извлекаются: разбор сбоев

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

Диагностика: выберите симптом

Типичные ошибки настройки, которые не видны из симптомов:

  • 🚫 Включили извлечение, но забыли про индекс. Текст лежит в базе, но поиск о нём не знает, пока индекс не обновится.
  • 🚫 Поставили 32-битный фильтр на 64-битный сервер. Фильтр есть в системе, но процесс 1С его не видит.
  • 🚫 Запустили обработку на Linux-клиенте. Проблема та же, что и на сервере: нет фильтров Windows.
  • 🚫 Ждут распознавания сканов. Извлечение не равно OCR: картинка остаётся картинкой.

Примеры: как это выглядит в работе

Поиск договора по фразе из текста

Бухгалтеру нужен договор, где есть пункт об отсрочке на 45 дней. Контрагентов 600, договоров у каждого — от одного до десяти.

  1. В строке поиска по всем данным (значок лупы в верхней части окна) вводит отсрочка 45 дней.
  2. 1С показывает список объектов, в реквизитах или вложениях которых встречаются эти слова.
  3. Среди результатов — карточка договора с контрагентом, к которой прикреплён DOCX с нужным пунктом.

Без извлечения текстов этот поиск вернул бы только объекты, где фраза есть в комментарии или наименовании.

Перевод извлечения на Windows-клиент

Компания перенесла сервер 1С на Linux. Через месяц выяснилось: новые договоры в поиске не находятся. Проверка статусов показала около 1 200 файлов «Извлечь не удалось» за этот месяц.

Что сделали:

  1. Выделили виртуальную машину с Windows и клиентом 1С той же версии платформы, что и сервер.
  2. Установили на неё Office Filter Pack и PDF IFilter, оба 64-битные.
  3. Запустили обработку «Автоматическое извлечение текстов» под служебным пользователем, интервал — 60 секунд.
  4. Вернули проблемным файлам статус «Не извлечен», чтобы обработка забрала их повторно.

Через двое суток статус «Извлечь не удалось» остался у 30 файлов — это оказались сканы без текстового слоя.

Выборка текстов в отчёт для проверки

Аудитору нужно убедиться, что во всех договорах аренды за год указан пункт о порядке индексации платы. Вместо открытия 80 файлов вручную разработчик пишет обработку: она перебирает файлы договоров аренды, получает текст через ИзвлечениеТекста и выводит таблицу «договор — найдено/не найдено слово индексация». Проверка занимает минуты.

Автоматизация и интеграция: что делать с извлечённым текстом

Когда текст файлов уже в базе, его можно использовать шире, чем для строки поиска.

  • 🔁 Расписание индексации. Обновление индекса полнотекстового поиска тоже регламентное задание. Ставьте его после извлечения: сначала текст, потом индекс. Вручную индекс обновляют через Все функции → Стандартные → Управление полнотекстовым поиском.
  • 🌐 Выдача во внешние системы. Через стандартный интерфейс OData, HTTP-сервисы или COM-соединение внешняя программа получает данные базы. Тексты файлов в такие выгрузки обычно добавляют своей доработкой.
  • 🧩 Расширение конфигурации . Свою логику (например, автоматическая проверка ключевых слов во входящих договорах) пишут в расширении, а не в типовой конфигурации. Так обновления проходят без конфликтов.
  • 🖨 Распознавание сканов. Если вложения в основном картинки, сначала их нужно распознать во внешней программе OCR и сохранить как PDF с текстовым слоем. Только после этого извлечение текста даст результат.

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

Порядок для новой базы с большим архивом:

  1. Включить полнотекстовый поиск и извлечение текстов в общих настройках.
  2. Установить фильтры форматов на компьютер, где будет идти извлечение.
  3. Дать заданию отработать первый полный проход — ночами, небольшими порциями.
  4. Перестроить индекс полнотекстового поиска целиком.
  5. Перевести индексацию на регулярное расписание.

Частые вопросы

Извлечение текстов замедляет работу пользователей?
Само задание нагружает сервер, пока идёт обработка порции. На больших архивах первый проход лучше запускать ночью. В штатном режиме новых файлов мало, и нагрузка незаметна.
Можно ли выключить извлечение и не потерять уже найденный текст?
Да. Уже извлечённый текст остаётся в базе, и поиск по нему продолжит работать. Новые файлы просто перестанут попадать в поиск по содержимому.
Будет ли работать поиск по файлам, которые хранятся в томах на диске, а не в базе?
Да, извлечение работает для обоих вариантов хранения. Важно, чтобы у процесса, который извлекает текст, был доступ на чтение к каталогу томов.
Поддерживаются ли архивы ZIP и RAR?
Платформа не распаковывает архивы для извлечения. Чтобы содержимое архива участвовало в поиске, прикрепляйте файлы по отдельности.
Почему поиск находит файл по одному слову, а по другому из того же текста — нет?
Скорее всего, индекс обновлялся частично или слово относится к игнорируемым коротким словам. Полное перестроение индекса обычно снимает проблему.