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

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

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

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

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

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

1 Comment

  1. jusper

    Полезная статья. Спасибо

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *