Шаманы IT - кто они?

За что мне нравиться 1С:Предприятие 8.1 - с ним не соскучишься. Итак, сегодня мы будем учиться пляскам с бубном. Есть мнение, что бубны сисадминов в этом случаи не годятся. Это не правда, тоже подойдут.
Когда нужен бубен?

При работе с 1С:Предприятие 8.1 по некоторым независящим от нас с Вами причинам вы можете с толкнуться с сообщением об ошибке «Ошибка формата потока».
Например это может произойти так: После запуска chdbfl.exe выдал ошибки во внутреннем файле превышена длина кода, потом показал что ошибки исправлены. После этого запустить конфигурацию не удалось, стала выходить ошибка "ошибка формата потока......".
Самый распространенный ответ-рекомендация: Попробовать перенести базу на другой компьютер и там запустить.

Звучит загадочно, не правда ли? ))

Постарайтесь ответить на вопросы: После выполнения каких действий стала появляться эта ошибка?
Эта ошибка появляется при запуске с любого компьютера или только с одного? Например может быть характерна такая ситуация: у клиента при попытке запуска конфигурации в режиме предприятия в клиент-серверном режиме под некоторыми пользователями приложение падает с сообщением "Ошибка формата потока", под остальными пользователями все работает нормально.



Частными случаями этой рекомендации можно считать например такие решения:

* удаление из списка баз и повторное добавление
* очищение данных из каталога "C:\Documents and Settings\пользователь\Application Data\1C\1Cv81"
* простое копирование содержимого каталога bin в новый каталог

Общей причиной возникновения такой ситуации можно считать сбои железа (в одном случае пропала сеть, отключилось электричество), софта и т.д. (и не обязательно 1С).

* Отключите файрволы и антивирусы
o Например, известны примеры, когда помогало только УДАЛЕНИЕ Eset Smart Security. Просто отключение его ничего не давало. (Примечание. Коллеги предлагают в настройках снять флаг"Включить фильтрацию содержимого протоколов уровня приложений". Если фильтрация всё же нужна и отключать ее не хочется, здесь же можно указать, чтобы файрвол фильтровал только "Порты HTTP и POP3". )

Скриншот настройки

* Скопировать базу с исходного источника другой флешкой

В случаи, если есть возможность зайти в режиме конфигуратора, то также есть смысл проверить целостность данных:

* для файловой версии использовать проверку целостности chdbfl.exe
* тестирование и исправление средствами конфигуратора
* выгрузка/загрузка конфигурации

Для ранних версий платформы были характерны механизмы, не контролирующие некорректное хранение данных, поэтому обратите внимание на такие решения как:

* обновили платформу до последней версии (но не просто обновлением, а удалением старой версии, и затем установкой новой)
* очистка журнала регистрации
* в клиент-серверном варианте сообщение "Ошибка формата потока" может возникнуть у клиента, когда одно из приложений из набора 1С:Предприятия, выполняющихся на сервере, не имеет достаточно дискового пространства в разделе /tmp для размещения временных файлов
* проверить обработкой все метаданным все строковые реквизиты (проверяем наличие и удаляем сивмолы 0x1a & 0xFFFF )

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

Или в такой ситуации: Если через COMConnector происходит обращение к клиент-серверной базе данных, то возможной причиной ошибки является передача от клиента (COMConnector-а в клиентском приложении) серверу 1С:Предприятия или наоборот значения типа "Строка", содержащего символы с кодами 0x1F или 0xFFFF. Передача может выполняться как через параметры и результат процедур и функций, исполняемых на сервере, так и в том случае, если такие символы содержатся, например, в строковом значении константы.



Можно также использовать РИБ, если есть возможность создавать планы или они уже есть:

* выгружать данные с помощью XML

Или еще бывает так:

При попытке открыть форму документа "Поступление товаров услуг" происходит ошибка "Ошибка формата потока". Ошибка возникает как в Конфигураторе так и в Предприятии.
Система работает в файловом режиме. Решение может быть таким: Удалить данную проблемную форму и вставить другую (объединением) и назначить ее основной.



В некоторых случаях можно исследовать проблему с помощью технологического журнала:

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<dump create="true" location="C:\Program Files\1cv81\bin\dumps" prntscrn="false" type="2"/>
<log history="96" location="C:\Program Files\1cv81\bin\logs">
<event>
<eq property="name" value="EXCP"/>
</event>
<event>
<eq property="name" value="EXCPCNTX"/>
</event>
<event>
<eq property="name" value="PROC"/>
</event>
<property name="all"/>
</log>
</config>

Примечание. Для 64х-разрядного сервера приложений каталог отличается от размещения клиента 1С. В этом случаи logcfg.xml нужно размещать в обоих подкаталогах /conf, корректирую пути размещения логов.

В этом случаи будут формировать логи для клиента 1С в подкаталоге 1cv8_ХХХХ:

30:02.8131-0,EXCP,1,process=1cv8,Usr=Гилев В.В.,Exception=Exception,Descr=Ошибка формата потока



* удалить все записи с таблице configsave

Если ошибка возникает у всех пользователей сразу, то сделайте резервную копию и почистите таблицу delete from configsave

Помогает для различных субд (и MS SQL Server, и Oracle)

.

Я думаю, убедил Вас делать резервные копии как можно чаще