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

Администрирование - Тестирование и исправление

Ошибка формата потока. Страшная, но симпатишная своей загадочностью. 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
Информация по скриптам: //1cnsk.ru/public/116123/

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

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

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

Оригинал статьи на моём ресурсе - http://forum.salincorp.com/viewtopic.php?f=45&t=199&p=362#p362

См. также

Автор запретил комментарии