При работе с конфигурациями на платформе 1С:Предприятие 8.3 пользователи и администраторы часто сталкиваются с неочевидными техническими сбоями. Одним из самых неприятных является «Ошибка формата потока». Особенно остро эта проблема проявляется в механизме полнотекстового поиска (ППД), когда при попытке обновить индекс система аварийно завершает фоновые задания. Рассмотрим подробно, как диагностировать и устранить эту неисправность, используя проверенные методики.
Для начала проанализируем ситуацию. Ошибка формата потока обычно сигнализирует о том, что данные, которые платформа пытается прочитать из файла или базы данных, не соответствуют ожидаемому формату. В контексте полнотекстового поиска это чаще всего означает повреждение самих файлов индекса, некорректное состояние кэша сеансовых данных или наличие в базе «битых» бинарных объектов, которые индексатор не может обработать.
Выясним причину, изучив типичные симптомы. Ошибка может возникать как при запуске через стандартную обработку УправлениеПолнотекстовымПоискомИИзвлечениемТекстов, так и через системное меню «Все функции». При этом часть фоновых заданий может завершаться успешно, а часть — падать с критической ошибкой. Это говорит о том, что проблема локализована либо в конкретных файлах индекса, либо в конкретных порциях данных.
Первым делом разберем наиболее эффективный метод, который помогает в большинстве случаев — очистку каталога сеансовых данных на сервере приложений. Выполним следующие шаги:
C:\Program Files\1cv8\srvinfo\.reg_1541) и внутри нее увидим каталог snccntx.snccntx. В этой папке хранятся данные сеансов, и их повреждение часто ведет к ошибкам формата потока при передаче данных между рабочими процессами и менеджером кластера.После выполнения этих действий попробуем снова запустить обновление индекса. Если проблема сохраняется, перейдем к более радикальным мерам.
Если очистка сеансовых данных не помогла, значит, повреждены сами файлы индекса. Платформа 1С хранит индекс ППД в специальной папке 1Cv8FTxt. Рассмотрим, как правильно выполнить его полную переустановку.
Проанализируем местоположение папки индекса. Для клиент-серверного варианта работы база данных индекса находится на сервере приложений по пути: C:\Program Files\1cv8\srvinfo\reg_1541\ГUID_вашей_базы\1Cv8FTxt. Для файлового варианта папка располагается непосредственно в каталоге с информационной базой.
Выполним процедуру очистки:
1Cv8FTxt. Не бойтесь удалять эти данные — они являются производными от основных данных базы и будут пересозданы автоматически при следующем обновлении.
ПолнотекстовыйПоиск.ОчиститьИндекс();
После этого запустим полное обновление индекса:
ПолнотекстовыйПоиск.ОбновитьИндекс(Истина, Ложь);
Параметр Истина в данном случае означает, что мы запускаем полное перестроение, а не частичное добавление данных.
Иногда ошибка формата потока возникает из-за конфликтов доступа, когда регламентные задания пытаются обновить индекс одновременно с действиями пользователя или другими фоновыми процессами. Разберем алгоритм «чистого» обновления:
В монопольном режиме вероятность возникновения ошибки формата потока значительно снижается, так как исключается влияние промежуточных транзакций и изменений данных в процессе индексации.
Если ни один из вышеперечисленных способов не помог, проанализируем ситуацию глубже. Ошибка может быть вызвана тем, что индексатор натыкается на конкретный «битый» объект (например, файл картинки или PDF в хранилище значений), структура которого нарушена. Посмотрим, как это проверить:
Используем встроенные средства диагностики. Выполним Тестирование и исправление (ТиИ) информационной базы. В настройках ТиИ обязательно выберем пункты:
Особое внимание уделим проверке таблиц, содержащих объекты типа ХранилищеЗначения. Если в процессе тестирования система выдаст ошибки в конкретных объектах, их необходимо будет пересохранить или удалить, так как именно они могут провоцировать «ошибку формата потока» при попытке извлечения текста для индекса.
На крупных информационных базах процесс построения индекса потребляет значительные ресурсы. Если рабочий процесс (rphost) достигает лимита памяти, он может завершиться аварийно, что приведет к повреждению потока данных. Проанализируем настройки кластера:
%TEMP% пользователя, под которым запущена служба 1С. Если на диске С недостаточно места, создание временных файлов индекса прервется с ошибкой формата потока.Чтобы в будущем не сталкиваться с подобными сбоями, рекомендуется придерживаться следующих правил:
DBCC CHECKDB.Таким образом, комбинируя методы очистки серверного кэша snccntx, удаления физических файлов 1Cv8FTxt и проведения логического тестирования базы, можно гарантированно избавиться от ошибки формата потока и восстановить работоспособность полнотекстового поиска.