Нередко системные администраторы и разработчики сталкиваются с неприятной ситуацией: после аварийной перезагрузки или зависания сервера информационная база в режиме «1С:Предприятие» запускается и работает штатно, а при попытке открыть режим «Конфигуратор» появляется сообщение «Ошибка формата потока». Выясним причину такого поведения платформы и разберем по шагам действенные методы восстановления работоспособности среды разработки.
Проанализируем ситуацию: почему пользовательский режим функционирует, а режим разработчика аварийно завершается? Дело в архитектурном разделении структур хранения метаданных в платформе 1С. Пользовательский сеанс обращается к уже зафиксированной рабочей конфигурации базы данных (в СУБД это таблица Config). Конфигуратор же при старте обязательно обращается к таблице редактируемой конфигурации (ConfigSave), временным файлам кэша и служебным параметрам в таблице Params. Если внезапный сбой сервера произошел в момент работы специалиста в конфигураторе, динамического обновления или сохранения изменений, повреждается кэш или бинарные потоки незафиксированной конфигурации.
Рассмотрим самый частый и эффективный шаг первичной диагностики. При сбое сеанса повреждаются временные файлы метаданных, хранящиеся в локальном профиле операционной системы Windows. Разберем по шагам, как корректно выполнить очистку локального кэша:
1cv8.exe, 1cv8c.exe и 1cv8s.exe через диспетчер задач.%APPDATA%\1C\1cv8 и нажмем Enter. В открывшемся каталоге выделим все папки с буквенно-цифровыми идентификаторами (GUID) и удалим их. Каталог шаблонов конфигураций tmplts удалять не нужно.%LOCALAPPDATA%\1C\1cv8 и нажмем Enter. В этой папке выделим все каталоги временных файлов и удалим их.Также альтернативным быстрым вариантом сброса привязки локального кэша для конкретной базы является удаление строки информационной базы из списка запуска и повторное ее добавление с новым произвольным наименованием.
Если локальная очистка на клиентской машине не принесла результата, а база данных работает в клиент-серверном варианте, повреждение могло затронуть кэшированные данные на стороне самого сервера приложений 1С. Рассмотрим подробнее процедуру очистки серверного контекста:
srvinfo, расположенный по пути C:\Program Files\1cv8\srvinfo).snccntx.Если очистка кэшей на клиенте и сервере не устранила ошибку формата потока, это означает, что повреждены бинарные данные непосредственно в таблицах базы данных. Важно: перед выполнением любых прямых манипуляций на уровне СУБД обязательно создадим полную резервную копию базы данных средствами системы управления базами данных (Microsoft SQL Server или PostgreSQL).
Разберем по шагам сброс поврежденной редактируемой конфигурации:
ConfigSave. Поскольку рабочая версия конфигурации хранится отдельно в таблице Config, Конфигуратор при открытии обнаружит отсутствие незафиксированных изменений и просто заново вычитает рабочую конфигурацию:
DELETE FROM ConfigSave
Params остается блокирующий маркер:
DELETE FROM Params WHERE FileName = 'commitMarker'
DELETE FROM Params WHERE FileName = 'saveConfigInfo'
Следует помнить о главном риске: очистка таблицы ConfigSave полностью сотрет те доработки, которые программист успел внести в конфигурацию, но еще не успел зафиксировать обновлением конфигурации базы данных (по нажатию клавиши F7).
Иногда графический интерфейс Конфигуратора завершается сбоем на стадии построения дерева метаданных или форм, однако командная строка сохраняет доступ к служебным функциям. Попробуем инициировать обновление конфигурации базы данных через пакетный режим запуска:
1cv8.exe DESIGNER /S "ИмяСервера\ИмяБазы" /UpdateDBCfg
1cv8.exe DESIGNER /S "ИмяСервера\ИмяБазы" /DumpCfg "C:\backup_metadata.cf"
DBCC CHECKDB (ИмяБазы) WITH NO_INFOMSGS. В случае работы на PostgreSQL проанализируем системный журнал СУБД на наличие ошибок контрольных сумм страниц (checksum failure).