Ошибка формата потока. Решение с описанием проблемы

23.07.19

Задачи пользователя - Корректировка данных

Ошибка формата потока. Страшная, но симпатишная своей загадочностью. 1С ничего толком не объясняет и не подсказывает. Ниже решение, которое мне помогает решать данную проблему на 100%. Всё очень просто. Данная ошибка возникает (на моей практике) только у клиент серверного варианта. просто потому что с другим форматом не работаю. Рекомендация: Старайтесь избегать динамического обновления, особенно если у вас возможны кратковременные проблемы с 220 и LAN. Далее описание лечения:

Специально написал методику устранения ошибки в виде программы. Думаю, так проще читать самую суть, не отвлекаясь на лирику и переживания.

// Config - основная конфигурация информационной базы. 
// Эта конфигурация соответствует реальной структуре данных и используется 1С:Предприятием 8.0 в режиме Предприятия.
// ConfigSave - конфигурация, редактируемая Конфигуратором. 
// Конфигурация из ConfigSave переписывается в Config при выполнении "Обновления конфигурации базы данных" в Конфигураторе, 
// а наоборот - при выполнении в Конфигураторе операции "Конфигурация - Конфигурация базы данных - Вернуться к конфигурации БД".
Если ОшибкаФорматаПотокаПриЗапускеПредприятия() Тогда
	СделатьАрхивПоврежденнойБазы(Средствами1С = Истина, СредствамиСУБД = Ложь);
	СделатьАрхивПоврежденнойБазы(Средствами1С = Ложь, СредствамиСУБД = Истина);
	Если СУБД = "MS SQL" Тогда
		// Необходимо развернуть ближайший бэкап базы на том же сервере что и поврежденная. 
		// Со времени публикации статьи поля таблицы могут измениться, поэтому посмотрите состав полей и скорректируйте скрипт
		// Если перевести на русский язык: Скрипт удаляет сбойную таблицу config поврежденной базы и затем создает копию таблицы 
		// из рабочей базы в поврежденной.
		GO
		DROP TABLE [ПОВРЕЖДЕННАЯ_БАЗА].[dbo].[config]
		GO
		SET ANSI_NULLS ON
		GO
		SET QUOTED_IDENTIFIER ON
		GO
		CREATE TABLE [ПОВРЕЖДЕННАЯ_БАЗА].[dbo].[config](
		[FileName] [nvarchar](128) NOT NULL,
		[Creation] [datetime] NOT NULL,
		[Modified] [datetime] NOT NULL,
		[Attributes] [smallint] NOT NULL,
		[DataSize] [int] NOT NULL,
		[BinaryData] [image] NOT NULL,
		PRIMARY KEY CLUSTERED
		(
		[FileName] ASC
		)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
		) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
		GO
		INSERT INTO [ПОВРЕЖДЕННАЯ_БАЗА].[dbo].[config]
		SELECT * FROM [БЭКАПНАЯ_БАЗА].[dbo].[config]
		GO 	
	ИначеЕсли СУБД = "PostgreSQL" Тогда
		copy config to '/home/user/config_err.txt в поврежденной базе
		copy config to '/home/user/config_backup.txt в базе поднятой из последнего бэкапа
		delete from config в поврежденной базе
		copy config from '/home/user/config_backup.txt в поврежденной базе
	КонецЕсли;
ИначеЕсли ОшибкаФорматаПотокаПриЗапускеКонфигуратора() Тогда
	// Ошибка возникает при прерванном сохранении конфигурации в БД.
	СделатьАрхивПоврежденнойБазы(Средствами1С = Ложь, СредствамиСУБД = Истина);
	// Полностью очищаем таблицу
	Если СУБД = "MS SQL" Тогда
		GO
		DELETE FROM [ПОВРЕЖДЕННАЯ_БАЗА].[dbo].[configsave]
	ИначеЕсли СУБД = "PostgreSQL" Тогда
		// Сохраним сбойную таблицу
		copy configsave to '/home/user/configsave_err.txt 
		// Очистим
		delete from configsave	
	КонецЕсли;	
КонецЕсли;

Используемые ресурсы:
Информация по таблицам: https://helpf.pro/faq/view/673.htm
Информация по скриптам: //infostart.ru/public/116123/

В полемику о целесообразности написания сей статьи на данном ресурсе вступать не желаю. Много различной информации по данной теме, посчитал необходимостью для сообщества консолидировать свои наработки в данной теме и преподнести её наиболее читабельно.

Если есть вопросы, то в личку пожалуйста. По возможности отвечу.

Искренне не желаю встречаться Вам с ситуацией, когда данная статья придет на выручку.

Оригинал статьи на моём ресурсе - ЗДЕСЬ >>

Ошибка формата потока config configsave не запускается конфигуратор в режиме предприятия

См. также

Корректировка данных Системный администратор Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Незаменимая обработка для сопровождения конфигураций: ERP, УТ, КА. Позволяет вычистить многие ошибки в ключах аналитики, в ключевых справочниках конфигурации.

3600 руб.

10.02.2017    108721    650    173    

690

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    30062    88    151    

63

Корректировка данных Программист Пользователь Платформа 1С v8.3 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Представьте, что есть система QR - кодирования, которая НЕ ТРЕБУЕТ изменения конфигурации, НЕ ТРЕБУЕТ изменения ни одной печатной формы для добавления QR-кода, включая внешние, НЕ ХРАНИТ данные штрихкодов и их связь, от чего база не "пухнет", ИМЕЕТ возможность закодировать в QR-коде произвольные данные параметров для последующей обработки полученных данных, УМЕЕТ прикреплять сканы, УМЕЕТ обработать считанный QR-код как ВЫ захотите. А также ХРАНИТ историю операций в обход базы для каждого пользователя в отдельности и УМЕЕТ работать с 2D - сканерами. А также автоматически распознавать отсканированные печатные формы (картинки или pdf-файлы) и выполнять заданные произвольные алгоритмы, в том числе прикрепление их к документам! Обновление 3.2 от 09.06.2024!

19200 руб.

26.08.2018    51369    14    61    

54

Корректировка данных Зарплата Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ Платные (руб)

Обработка исправляет технические ошибки по НДФЛ, взаиморасчетам с сотрудниками в 1С:ЗУП (1С:ЗКГУ) на начало года. Фактически все ошибки, которые проявляются в ведомостях на выплату, расчетных листках, при заполнении ведомостей на выплату и отчетах 6-НДФЛ и т.д. нужно начинать исправлять с начала расчетного года. Это позволит быть уверенными, что после завершения расчетов предыдущего года, начали работать с «чистого листа» без ошибочных остатков.

4800 руб.

06.10.2023    3519    34    17    

42

Корректировка данных Зарплата Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Внешняя обработка предназначена для исправления самых различных ошибок, возникших по самым разным причинам. Общее проявление этих ошибок видно в различии данных между: проводками и различными отчетами по НДФЛ, заполнении ведомостей на выдачу зарплаты, неверным расчетом НДФЛ при начислении ЗП и т.д.

3600 руб.

09.02.2024    1313    9    5    

12

Закрытие периода Корректировка данных Бухгалтер Пользователь Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Управленческий учет Платные (руб)

Закрытие месяца - важный процесс в современных конфигурациях, таких как УТ 11.4, УТ 11.5, КА 2.4, КА 2.5 ERP 2.4,ERP 2.5, КА 2 Казахстан, УТ 3 Казахстан регламентные операции влияют на расчет себестоимости, и ошибки в данном расчете не дают картины деятельности организации.

2400 руб.

27.10.2021    23463    304    35    

77
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. jusper 06.09.19 13:14 Сейчас в теме
Полезная статья. Спасибо
2. Aspire1C 865 10.06.20 15:28 Сейчас в теме
Спасибо. Помогло. А то уже думал придется снова все писать, что в хранилище не поместил за пару дней)
3. Rashid80 31 26.06.20 10:25 Сейчас в теме
Для последних версий:

Если СУБД = "MS SQL" Тогда
// Необходимо развернуть ближайший бэкап базы на том же сервере что и поврежденная.
// Со времени публикации статьи поля таблицы могут измениться, поэтому посмотрите состав полей и скорректируйте скрипт
// Если перевести на русский язык: Скрипт удаляет сбойную таблицу config поврежденной базы и затем создает копию таблицы
// из рабочей базы в поврежденной.
GO
DROP TABLE [ПОВРЕЖДЕННАЯ_БАЗА].[dbo].[config]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [ПОВРЕЖДЕННАЯ_БАЗА].[dbo].[config](
[FileName] [nvarchar](128) NOT NULL,
[Creation] [datetime] NOT NULL,
[Modified] [datetime] NOT NULL,
[Attributes] [smallint] NOT NULL,
[DataSize] [int] NOT NULL,
[BinaryData] [image] NOT NULL,
[PartNo] [int] NOT NULL,
PRIMARY KEY CLUSTERED
(
[FileName] ASC,
[PartNo] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
INSERT INTO [ПОВРЕЖДЕННАЯ_БАЗА].[dbo].[config]
SELECT * FROM [БЭКАПНАЯ_БАЗА].[dbo].[config]
GO
Юрий3; +1 Ответить
4. arvin 01.10.20 10:53 Сейчас в теме
Спасибо. Помогла очистка configsave.
5. John_Dow 15.10.20 13:23 Сейчас в теме
Столкнулся тут хитрой ситуацией.

Грубо говоря: начали утром обновлять с добавлением метаданных, вроде обновили, но вылетели в ошибку... ок развернули ночной бакап, сделали по изложенному методу выше.. вроде работает. Но неспокойной душе (душа была выявлена, расскаялась, но была приговорена к 3х недельному эцику с гвоздями ) приспичило динамический обновиться....и все приплыли.

Как итог база работает, в конфигуратор заходит, конфигурацию выгрузить можно, но сохранить любые изменения конфигурации не дает, хоть монопольно хоть динамический вываливается с ошибкой "Нарушена целостность структуры конфигурации".
Реструктуризация и проверка логической целостности не помогало - вываливалось с ошибками.
Загрузка рабочей конфигурации из ночного бакапа тоже не помогала.

Как итог выяснилось что в базе поля от первого обновления остались, таблица добавилась, но в структуре метаданных о них информации нет. ПолучитьСтруктуруХраненияБазыДанных возвращает наличие таблиц и полей, но с пустыми описаниями.


Сравнил что же у нас добавилось

use WorkBase

SEL ECT     sc.TABLE_NAME, sc.COLUMN_NAME, 'Deleted columns' AS EXPR1
FR OM          INFORMATION_SCHEMA.COLUMNS sc
WHERE     (NOT EXISTS
          (SELECT     sc2.TABLE_NAME, sc2.COLUMN_NAME
           FR OM       BackupBase.INFORMATION_SCHEMA.COLUMNS sc2
           WH ERE     sc2.TABLE_NAME = sc.TABLE_NAME AND sc2.COLUMN_NAME = sc.COLUMN_NAME))
ORDER BY LOWER(sc.TABLE_NAME), LOWER(sc.COLUMN_NAME)
Показать


лучше проверить в обе стороны, ну или делать через джойн двух таблиц


Определили какая таблица добавилась и какие поля. Проверили что они пустые.
Удалили эти объекты
   -  убираем реигстр полностью ошибочный
	DR OP   TABLE [WorkBase].[dbo].[_InfoRg36682]
	-- убираем поля из справочника1
	ALT ER   TABLE [WorkBase].[dbo].[_Reference86] DROP COLUMN _Fld36690; 
	-- убираем поля из справочника2
	ALT ER   TABLE [WorkBase].[dbo].[_Reference229] DROP COLUMN _Fld36691; 
	ALT ER   TABLE [WorkBase].[dbo].[_Reference229] DROP COLUMN _Fld36692;  
	ALT ER   TABLE [WorkBase].[dbo].[_Reference229] DROP COLUMN _Fld36693RRef; 

Показать

Далее на всякий случай почистил серверный кэш данной базы (не знаю играло роль или нет но факт есть факт)
И затем описанным в статье способом подменил не только таблицу config, но и таблицы Files и Params. В остальных служебных таблицах разницы в содержимом не было.

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

Может кому то поможет.
P.S. Позднее возникло предположение что возможно помогла бы не чистая загрузка конфигурации, а сравнение и объединение с бакапной конфигураций, но проверять не было возможности.
6. websamson 307 20.11.20 05:57 Сейчас в теме
Вылетала ошибка формата потока при печати внешней печатной формы. Сохранил ее на диск, добавил произвольный реквизит, сохранил. Ошибка ушла
7. enzito 08.12.20 09:35 Сейчас в теме
Зачем городить. Делаю в таком порядке. Все действия делаются в sql:

1.DELETE FROM [ИмяБазы].[dbo].[ConfigSave]

Если бага не ушла, разворачиваю РАБОЧУЮ копию. И перехожу к пункту 2

2.
use ИмяБазы
go

truncate table [dbo].[Config]
truncate table [dbo].[ConfigSave]
truncate table [dbo].[DBSchema]
truncate table [dbo].[Params]
--truncate table [dbo].[Files]
go

ins ert into [dbo].[Config] sel ect * from [КопияБазы].[dbo].[Config]
ins ert in to [dbo].[DBSchema] sel ect * fr om [КопияБазы].[dbo].[DBSchema]
ins ert in to [dbo].[Params] sele ct * fr om [КопияБазы].[dbo].[Params]
go
garik79; Nicholas; cleaner_it; Slypower; dammit666; гвость; Sergafan10; +7 Ответить
8. user681872_kuleshov.av 19.01.21 12:49 Сейчас в теме
(7)
use ИмяБазы
go

truncate table [dbo].[Config]
truncate table [dbo].[ConfigSave]
truncate table [dbo].[DBSchema]
truncate table [dbo].[Params]
--truncate table [dbo].[Files]
go

ins ert into [dbo].[Config] sel ect * from [КопияБазы].[dbo].[Config]
ins ert in to [dbo].[DBSchema] sel ect * fr om [КопияБазы].[dbo].[DBSchema]
ins ert in to [dbo].[Params] sele ct * fr om [КопияБазы].[dbo].[Params]
Показать


Механизм рабочий.
НО, рабочая копия базы имеется со старой версией конфигуратара, а при выполнеии этого запроса версия конфигуратора откатывается назад.
На счёт данных проверяю, всё ли работает должным образом
13. sas95 09.04.22 20:54 Сейчас в теме
При выполнения.

ins ert into [dbo].[Config] sel ect * from [КопияБазы].[dbo].[Config]
ins ert in to [dbo].[DBSchema] sel ect * fr om [КопияБазы].[dbo].[DBSchema]
ins ert in to [dbo].[Params] sel ect * fr om [КопияБазы].[dbo].[Params]

Конфигуратор запускался но сама база уже не запускалась.
А при переносе чисто Config

ins ert in to [dbo].[Config] sel ect * fr om [КопияБазы].[dbo].[Config]

завелась база, так как на тот момент от резерва конфа не сильно была доработана из резерва перенес Config и только после база ожила.
9. nature2002 14 25.01.21 16:00 Сейчас в теме
ИначеЕсли ОшибкаФорматаПотокаПриЗапускеКонфигуратора() Тогда
// Ошибка возникает при прерванном сохранении конфигурации в БД.
СделатьАрхивПоврежденнойБазы(Средствами1С = Ложь, СредствамиСУБД = Истина);
// Полностью очищаем таблицу
Если СУБД = "MS SQL" Тогда
GO
DELETE FROM [ПОВРЕЖДЕННАЯ_БАЗА].[dbo].[configsave]

не помогло. написал что в configsave 0 строк изменено (таблица пустая)
10. hzhz 13 10.02.21 14:48 Сейчас в теме
Есть более простой способ. Просто загрузить файл конфигурации cf предварительно выгрузив его из рабочей конфигурации.
12. buzzzard 51 11.10.21 23:12 Сейчас в теме
(10) Как загрузить CF если конфигуратор не запускается?
11. vl-sher1 43 25.07.21 21:56 Сейчас в теме
Серверная БД, EDT 2021.1.5, платформа 8.3.18.1289. "Ошибка формата потока" после очередного обновления конфы при ее запуске из EDT. Расширений нет, меняли объекты конфы. Помогло
truncate table configsave
После этого поднял EDT и все заработало.
14. juker 253 10.04.22 14:00 Сейчас в теме
(11)Вы динамическое обновление делали?
15. vl-sher1 43 26.05.22 14:55 Сейчас в теме
16. ValeriyZ 19 28.09.22 10:10 Сейчас в теме
Стрельнула проблема с потоком на скуль базе. Причем очень странно стрельнула. Все работает, но если очистить кэш - конфигуратор открывается, а конфигурация в нем нет - ошибка формата потока. Помогла такая последовательность действий.
1) В чистой базе восстановил дт из рабочей копии. Заходим в конфигуратор, открываем конфигурацию.
2) Выгружаем конфигурацию.
3) В эту же базу восстановил дт битой текущей базы, конфигурация при этом осталась открытой.
4) Загрузил в нее выгруженную ранее на п.3 конфигурацию.
19. user1424302 21.01.23 13:36 Сейчас в теме
(16)
осстановил дт из рабочей копии. Заходим в конфигуратор, открываем конфигурацию.
2) Выгружаем конфигурацию.
3) В эту же базу восстановил дт


Было так же, чистил кэш, платформу сносил не помогло, зашел под другим user , все работает )
17. Nicholas 897 21.11.22 14:08 Сейчас в теме
(7) Второй способ помог. Не запускался конфигуратор вообще.
18. Nicholas 897 21.11.22 15:17 Сейчас в теме
Мой метод решения.

Не запускался конфигуратор, но пользователи в базе могли работать.

Рабочей резервной копии не оказалось. Поэтому сделал CF ровно того же релиза, что и рабочая база. Развернул пустую базу на том же SQL сервере, загрузил в нее получившийся CF.

Затем на SQL выполнил скрипт как в (7), но только для таблицы Config:

use ИмяБазы

truncate table [dbo].[Config]
truncate table [dbo].[ConfigSave]

ins ert in to [dbo].[Config] sel ect * fr om [ПустаяБаза].[dbo].[Config]
go


Параметры, в этом случае, копировать нельзя, т.к. копия базы пустая.
Оставьте свое сообщение