Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
15 дек 2024, 22:57

ОШИБКА ФОРМАТА ПОТОКА: Технология борьбы

Автор mohock, 05 фев 2012, 18:42

0 Пользователей и 1 гость просматривают эту тему.

mohock

     Недавно мне попалась жутким образом измененная конфигурация УТП для Украины, версии 1.2.2 Я, как не любитель последовательного обновления (до 1.2.6), быстренько стал сравнивать конфу с файлом поставки 1.2.6. Но - облом. Получил ОШИБКУ ФОРМАТА ПОТОКА и вылет 1С. И это при том, что я 5 часов внимательно сравнивал конфу с файлом поставщика 1.2.2 и подробно записывал в *.txt, что там народ поменял. Т,е. если обновлять такое чудо с одного номера на другой - это день не меньше.
     Полез по инету. Весьма уважаемые люди описывали всякие танцы с бубнами... Начитавшись, я кое-что применил. Протестил. Снял с базы файл поставки и залил на пустую БД, чтоб быстрее все проходило. И о чудо ПОСЛЕДОВАТЕЛЬНО дополз до версии 1.2.4 И вот после этого возникла лажа. При последовательном сравнении с 1.2.5: уже кошмарная -"Ошибка формата потока" и вылет. Я уперся в стену. Горят все сроки.
:(
     Потом начал размышлять - что происходит при сравнении конфигураций? А происходит последовательное ОТКРЫТИЕ объектов БД и сравнение с другой конфой. Причем здесь уже под объектами понимается то-же что и влюбом другом обычном объектно-ориентированном языке программирования (типа С++). Т.е, к примеру, справочник - объект, содержит в себе объекты - реквизиты, формы, макеты. Сами формы содержат объекты - кнопки, поля и т.п. А если имеем встроенный html объект, например в справку, он может в себе содержать объекты - картинки и т.п.
     Интересно что если найти такой объект в дереве конфигурации можно получить ошибку формата потока без вылета 1С. Хотя, если это html, он может открыться, но при сравнении, при отрытии его объектов, 1С все равно вылетит.
      Т.е. достаточно последовательным открытием всех объектов БД ч/з конфигуратор можно найти такой объект, снять его с поддержки и удалить. Но, это ж надо так любить 1С, чтоб тупо сидеть и открывать каждый объект, клацая мышкой. Увы, я не так трепетно отношусь к 1С :). Я полез в меню конфигуратора и попытался там найти, что-то, что будет открывать объекты, типа как при обновлении или сравнении конфигураций. И нашел!!! Это меню Конфигурация -> Выгрузить файлы конфигурации. Причем там есть форма в которой можно отметить не все а те объекты и разделы, которые тебе надо выгрузить.
      Т.о. выгружая конфу получая ошибку и сужая диапазон отмеченного, я нашел эти злосчастные поврежденные объекты и удалил их. После этого все прошло как по маслу. Все сравнивалось и объединялось. Теперь по поводу танцев с бубнами описываемых на форумах. Из этих описаний следует одно: Ошибка формата потока - это когда объект базы (объект, здесь более широкое понятие, чем в 1С) поврежден, по различным причинам. И если 1С в режиме работы или конфигурации пытается его открыть мы получаем эту ошибку. Причем бывает так, что и конфигуратор невозможно открыть (Т.е. не откравается объекты необходимые при запуске).
      Тогда и спасает внешний файл для тестирования и исправления БД chdbfl.exe, находящийся в папке bin. Бывают повреждаются файлы настроек пользователя 1С в Doc.endSett. Тогда их просто надо удалить с диска. Если повреждены объекты самой конфы, иногда помогает тестирование и исправление ч/з конфигуратор. Но эти два метода тестирования открывают для тестирования не все объекты БД! Важно об этом помнить. Так, уважаемый файл chdbfl.exe, я так понимаю, в основном, позволяет исправить БД, т.о. чтобы ее затем в первую очередь запустить.
   У меня-же был самый тяжелый случай. Но зато он позволил мне докопаться до истины. Ошибка формата потока - это повреженные объекты БД (включяа внешние файлы, к которым обращается 1С) Ихнадо найти и удалить. Вот и все.  :befhbt: 

Nez_333

ОГРОМНОЕ СПАСИБО ЗА СТАТЬЮ !!!!!!!!!!!!!!!!!!!!

Barsik

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

zhelnovachs

Ситуация часто возникает при обновлении технологической платформы.Откройте базу в предыдущем релизе либо пропишите для базы номер версии 1с в которой она открывалась без проблем: Выбрать базу и нажать "изменить" затем "далее" "далее" И в версии программы 1с укажите вместо 8.3 - 8.2 если не получится, вместо 8.3.5 - 8.3.4, какие версии 1с у вс установлены можно посмотреть C:\Program Files\1cv8 или C:\Program Files (x86)\1cv8 Там будут папки с номерами релизов. Используйте первые 3 цифры с точками (например 8.3.4)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск