Имя: Пароль:
1C
1С v8
Управление торговлей 11.1.10 - Ошибка формата потока данных
,
0 Soldat38
 
10.12.15
06:57
После обновления Управления торговли с версии 11.1.9.70 на версию 11.1.10.86 документы "Реализация товаров" и "Поступление товаров" перестают открываться, вылазит такая ошибка:

{ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль(3520)}: Ошибка при вызове метода контекста (Следующий)
        Пока Выборка.Следующий() Цикл
по причине:
Ошибка формата объекта настроек
по причине:
Ошибка формата потока

Все стандартные методы борьбы с ошибкой формата потока испробованы. Тестирование и исправление ошибок не находит, chdbfl тоже. Конфигурация типовая, обновляю четко по инструкции через конфигуратор. Дальнейшие обновления конфигурации тоже не помогают избавиться от проблемы.

Что еще можно попробовать для исправления?
1 Soldat38
 
10.12.15
06:59
Если вдруг это важно - платформа 8.3.7.1776.
2 ИС-2
 
naïve
10.12.15
07:04
(0) почистить кэш, выгрузка загрузка dt, перенос данных через XML в новую базу.
Может, кто-то работает на разных релизах платформы?
3 Soldat38
 
10.12.15
07:06
(2) почистить кэш, выгрузка загрузка dt - испробовано, не помогло.

XML еще не пробовала.
4 Мэс33
 
10.12.15
07:12
(1) Был случай - смена платформы помогла.
То есть у клиента был релиз 8.2.18.хх, у меня 8.2.19.хх
У клиента перестала открываться форма элемента справочника из-за добавленных реквизитов.
Пришлось повторить процедуру на версии 8.2.18
5 cw014
 
10.12.15
07:13
Девушка - солдат. Возможно где то нарушение данных
6 Мэс33
 
10.12.15
07:16
(0)
- поднять бэкап до обновления
- почистить кэш, сделать ТИИ
- обновить
- почистить кэш, сделать ТИИ
- проверить
7 Soldat38
 
10.12.15
07:19
(4) Не совсем понимаю историю с "клиентами" - я единственный юзер, запускаю на своем компе. В инфе к обновлению указано, что версия платформы не ниже 8.3.5.1443, у меня сейчас 8.3.7 - вы рекомендуете сделать установку "даунгрейд" версии и повторить обновление конфигурации?

(5) Так получилось.

(6) Уже пробовала, не помогло.
8 Мэс33
 
10.12.15
07:22
(7) Ну я же не знал, что все делается у вас, все на одной машине. Поэтому предположил, что где-то вдруг закралась ошибка из-за разных платформ.
9 cw014
 
10.12.15
07:29
Выборка.Следующи() - это что за выборка? Из результата запроса или из документвыборка?
10 Soldat38
 
10.12.15
07:31
(9) я нуб, вообще не знаю что это и где смотреть. :(
11 Мэс33
 
10.12.15
07:32
(10) Найти этот модуль
ОбщийМодуль.СтандартныеПодсистемыСервер.Модуль

И посмотреть
12 Soldat38
 
10.12.15
07:54
(11) нашла:

#Область СлужебныйПрограммныйИнтерфейс

////////////////////////////////////////////////////////////////////////////////
// Обработка результата выполнения.

// Формирует шаблон результата выполнения.
//
// Возвращаемое значение:
//   Результат - Структура - См. СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения().
//
Функция НовыйРезультатВыполнения(Результат = Неопределено) Экспорт
    Если Результат = Неопределено Тогда
        Результат = Новый Структура;
    КонецЕсли;
    
    Результат.Вставить("ВыводОповещения",     Новый Структура("Использование, Заголовок, Ссылка, Текст, Картинка", Ложь));
    Результат.Вставить("ВыводСообщения",      Новый Структура("Использование, Текст, ПутьКРеквизитуФормы", Ложь));
    Результат.Вставить("ВыводПредупреждения", Новый Структура("Использование, Заголовок, Текст, ПутьКРеквизитуФормы, ТекстОшибок", Ложь));
    Результат.Вставить("ОповещениеФорм",                Новый Структура("Использование, ИмяСобытия, Параметр, Источник", Ложь));
    Результат.Вставить("ОповещениеДинамическихСписков", Новый Структура("Использование, СсылкаИлиТип", Ложь));
    
    Возврат Результат;
КонецФункции

// Добавляет в структуру информацию о типах, которые необходимо обновить в динамических списках.
//   Действие выполняется на клиенте после вызова СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(Результат).
//
// Параметры:
//   Результат - Структура - См. СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения().
//   ИзмененныеОбъекты - Массив - Ссылки измененных объектов.
//
Процедура ОповеститьДинамическиеСписки(Результат, ИзмененныеОбъекты) Экспорт
    Если ТипЗнч(ИзмененныеОбъекты) <> Тип("Массив") Или ИзмененныеОбъекты.Количество() = 0 Тогда
        Возврат;
    КонецЕсли;
    
    Если Не Результат.Свойство("ОповещениеДинамическихСписков") Тогда
        Результат.Вставить("ОповещениеДинамическихСписков", Новый Структура("Использование, СсылкаИлиТип", Ложь));
    КонецЕсли;
    Оповещение = Результат.ОповещениеДинамическихСписков;
    Оповещение.Использование = Истина;
    
    Значение = Оповещение.СсылкаИлиТип;
    ЗначениеЗаполнено = ЗначениеЗаполнено(Значение);
    
    Если ИзмененныеОбъекты.Количество() = 1 И НЕ ЗначениеЗаполнено Тогда
        Оповещение.СсылкаИлиТип = ИзмененныеОбъекты[0];
    Иначе
        // Преобразование оповещения в массив.
        ТипЗначения = ТипЗнч(Значение);
        Если ТипЗначения <> Тип("Массив") Тогда
            Оповещение.СсылкаИлиТип = Новый Массив;
            Если ЗначениеЗаполнено Тогда
                Оповещение.СсылкаИлиТип.Добавить(?(ТипЗначения = Тип("Тип"), Значение, ТипЗначения));
            КонецЕсли;
        КонецЕсли;
        
        // Добавление типов измененных объектов.
        Для Каждого ИзмененныйОбъект Из ИзмененныеОбъекты Цикл
            ТипИзмененногоОбъекта = ТипЗнч(ИзмененныйОбъект);
            Если Оповещение.СсылкаИлиТип.Найти(ТипИзмененногоОбъекта) = Неопределено Тогда
                Оповещение.СсылкаИлиТип.Добавить(ТипИзмененногоОбъекта);
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры

// Добавляет в структуру информацию о событии, о котором надо оповестить все открытые формы.
//   Действие выполняется на клиенте после вызова СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(Результат).
//
// Параметры:
//   Результат  - Структура - См. СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения().
//   ИмяСобытия - Строка - Имя события, которое используется для первичной идентификации сообщений принимающими формами.
//   Параметр   - Произвольный - Набор данных, которые используются принимающей формой для обновления состава.
//   Источник   - Произвольный - Источник оповещения, например форма-источником.
//
Процедура РезультатВыполненияДобавитьОповещениеОткрытыхФорм(Результат, ИмяСобытия, Параметр = Неопределено, Источник = Неопределено) Экспорт
    Если Не Результат.Свойство("ОповещениеФорм") Тогда
        Результат.Вставить("ОповещениеФорм", Новый Массив);
    ИначеЕсли ТипЗнч(Результат.ОповещениеФорм) = Тип("Структура") Тогда // Структуру в массив структур.
        ОповещениеФорм = Результат.ОповещениеФорм;
        Результат.ОповещениеФорм = Новый Массив;
        Результат.ОповещениеФорм.Добавить(ОповещениеФорм);
    КонецЕсли;
    ОповещениеФорм = Новый Структура("Использование, ИмяСобытия, Параметр, Источник", Истина, ИмяСобытия, Параметр, Источник);
    Результат.ОповещениеФорм.Добавить(ОповещениеФорм);
КонецПроцедуры

// Добавляет в структуру информацию об узлах дерева, которые необходимо "развернуть".
//   Действие выполняется на клиенте после вызова СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(Результат).
//
// Параметры:
//   Результат - Структура - См. СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения().
//   ИмяТаблицы - Строка - Имя таблицы формы (дерева значений), в которой требуется развернуть узел.
//   Идентификатор - Произвольный - Необязательный. Идентификатор строки дерева, которую требуется развернуть.
//       Если указано "*", то будут развернуты все узлы верхнего уровня.
//       Если указано Неопределено, то строки дерева развернуты не будут.
//       Значение по умолчанию: "*".
//   СПодчиненными - Булево - Необязательный. Раскрывать ли подчиненные узлы.
//       Значение по умолчанию: Ложь (не раскрывать подчиненные узлы).
//
Процедура РазвернутьУзлыДерева(Результат, ИмяТаблицы, Идентификатор = "*", СПодчиненными = Ложь) Экспорт
    Если Идентификатор = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    Если Не Результат.Свойство("РазворачиваемыеУзлы") Тогда
        Результат.Вставить("РазворачиваемыеУзлы", Новый Массив);
    КонецЕсли;
    
    РазворачиваемыйУзел = Новый Структура("ИмяТаблицы, Идентификатор, СПодчиненными");
    РазворачиваемыйУзел.ИмяТаблицы = ИмяТаблицы;
    РазворачиваемыйУзел.Идентификатор = Идентификатор;
    РазворачиваемыйУзел.СПодчиненными = СПодчиненными;
    
    Результат.РазворачиваемыеУзлы.Добавить(РазворачиваемыйУзел);
КонецПроцедуры

// Добавляет в структуру информацию, необходимую для вывода предупреждения или текста ошибки.
//   Действие выполняется на клиенте после вызова СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(Результат).
//
// Параметры:
//   Результат - Структура - См. СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения().
//   Текст               - Строка - Текст предупреждения.
//   ТекстОшибок         - Строка - Необязательный. Тексты ошибок, которые при желании может просмотреть пользователь.
//   Заголовок           - Строка - Необязательный. Заголовок окна.
//   ПутьКРеквизитуФормы - Строка - Необязательный. Путь к реквизиту формы, значение которого вызывало ошибку.
//
Процедура ВывестиПредупреждение(Результат, Текст, ТекстОшибок = "", Заголовок = "", ПутьКРеквизитуФормы = "") Экспорт
    ВыводПредупреждения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Результат, "ВыводПредупреждения");
    Если ВыводПредупреждения = Неопределено Тогда
        ВыводПредупреждения = Новый Структура("Использование, Заголовок, Текст, ПутьКРеквизитуФормы, ТекстОшибок", Ложь);
        Результат.Вставить("ВыводПредупреждения", ВыводПредупреждения);
    КонецЕсли;
    ВыводПредупреждения.Использование = Истина;
    ВыводПредупреждения.Заголовок = Заголовок;
    ВыводПредупреждения.Текст = Текст;
    ВыводПредупреждения.ТекстОшибок = ТекстОшибок;
    ВыводПредупреждения.ПутьКРеквизитуФормы = ПутьКРеквизитуФормы;
КонецПроцедуры

// Добавляет в структуру информацию, необходимую для вывода сообщения о неверно заполненных полях формы.
//   Действие выполняется на клиенте после вызова СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(Результат).
//
// Параметры:
//   Результат - Структура - См. СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения().
//   Текст               - Строка - Текст сообщения.
//   ПутьКРеквизитуФормы - Строка - Необязательный. Путь к реквизиту формы, значение которого вызывало ошибку.
//
Процедура ВывестиСообщение(Результат, Текст, ПутьКРеквизитуФормы = "") Экспорт
    ВыводСообщения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Результат, "ВыводСообщения");
    Если ВыводСообщения = Неопределено Тогда
        ВыводСообщения = Новый Структура("Использование, Текст, ПутьКРеквизитуФормы", Ложь);
        Результат.Вставить("ВыводСообщения", ВыводСообщения);
    КонецЕсли;
    ВыводСообщения.Использование = Истина;
    ВыводСообщения.Текст = Текст;
    ВыводСообщения.ПутьКРеквизитуФормы = ПутьКРеквизитуФормы;
КонецПроцедуры

// Добавляет в структуру информацию, необходимую для вывода всплывающего оповещения.
//   Действие выполняется на клиенте после вызова СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(Результат).
//
// Параметры:
//   Результат - Структура - См. СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения().
//   Заголовок - Строка    - Заголовок оповещения.
//   Текст     - Строка    - Текст оповещения.
//   Ссылка    - Строка    - Навигационная ссылка для перехода к объекту конфигурации.
//   Картинка  - Картинка  - Картинка оповещения.
//
Процедура ВывестиОповещение(Результат, Заголовок, Текст = "", Картинка = Неопределено, Ссылка = "") Экспорт
    ВыводОповещения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Результат, "ВыводОповещения");
    Если ВыводОповещения = Неопределено Тогда
        ВыводОповещения = Новый Структура("Использование, Заголовок, Ссылка, Текст, Картинка", Ложь);
        Результат.Вставить("ВыводОповещения", ВыводОповещения);
    КонецЕсли;
    ВыводОповещения.Использование = Истина;
    ВыводОповещения.Заголовок     = Заголовок;
    ВыводОповещения.Ссылка        = Ссылка;
    ВыводОповещения.Текст         = Текст;
    ВыводОповещения.Картинка      = Картинка;
КонецПроцедуры

////////////////////////////////////////////////////////////////////////////////
// Табличный документ

// Вычисляет сумму выделенных ячеек и возвращает ее представление.
//
// Параметры:
//   ТабличныйДокумент - ТабличныйДокумент - Таблица, для которой вычисляет сумма ячеек.
//   ВыделенныеОбласти
//       - Неопределено - При вызове с клиента этот параметр будет определен автоматически.
//       - Массив - При вызове с сервера в этот параметр следует передавать области,
//           предварительно вычисленные на клиенте
//           при помощи функции ОтчетыКлиент.ВыделенныеОбласти(ТабличныйДокумент).
//
// Возвращаемое значение:
//   Строка - Представление суммы выделенных ячеек.
//
// См. также:
//   ОтчетыКлиент.ВыделенныеОбласти().
//
Функция СуммаЯчеек(ТабличныйДокумент, ВыделенныеОбласти) Экспорт
    
    Если ВыделенныеОбласти = Неопределено Тогда
        #Если Клиент Тогда
            ВыделенныеОбласти = ТабличныйДокумент.ВыделенныеОбласти;
        #Иначе
            Возврат НСтр("ru = 'Не указано значение параметра ""ВыделенныеОбласти"".'");
        #КонецЕсли
    КонецЕсли;
    
    #Если Клиент И Не ТолстыйКлиентОбычноеПриложение Тогда
        КоличествоВыделенныхОбластей = ВыделенныеОбласти.Количество();
        Если КоличествоВыделенныхОбластей = 0 Тогда
            Возврат ""; // Нет ни одного числа.
        ИначеЕсли КоличествоВыделенныхОбластей >= 100 Тогда
            Возврат "<"; // Нужен вызов сервера.
        КонецЕсли;
        КоличествоВыделенныхЯчеек = 0;
    #КонецЕсли
    
    Сумма = Неопределено;
    ПроверенныеЯчейки = Новый Соответствие;
    
    Для Каждого ВыделеннаяОбласть Из ВыделенныеОбласти Цикл
        #Если Клиент Тогда
            Если ТипЗнч(ВыделеннаяОбласть) <> Тип("ОбластьЯчеекТабличногоДокумента") Тогда
                Продолжить;
            КонецЕсли;
        #КонецЕсли
        
        ВыделеннаяОбластьВерх = ВыделеннаяОбласть.Верх;
        ВыделеннаяОбластьНиз = ВыделеннаяОбласть.Низ;
        ВыделеннаяОбластьЛево = ВыделеннаяОбласть.Лево;
        ВыделеннаяОбластьПраво = ВыделеннаяОбласть.Право;
        
        Если ВыделеннаяОбластьВерх = 0 Тогда
            ВыделеннаяОбластьВерх = 1;
        КонецЕсли;
        
        Если ВыделеннаяОбластьНиз = 0 Тогда
            ВыделеннаяОбластьНиз = ТабличныйДокумент.ВысотаТаблицы;
        КонецЕсли;
        
        Если ВыделеннаяОбластьЛево = 0 Тогда
            ВыделеннаяОбластьЛево = 1;
        КонецЕсли;
        
        Если ВыделеннаяОбластьПраво = 0 Тогда
            ВыделеннаяОбластьПраво = ТабличныйДокумент.ШиринаТаблицы;
        КонецЕсли;
        
        Если ВыделеннаяОбласть.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Колонки Тогда
            ВыделеннаяОбластьВерх = ВыделеннаяОбласть.Низ;
            ВыделеннаяОбластьНиз = ТабличныйДокумент.ВысотаТаблицы;
        КонецЕсли;
        
        ВыделеннаяОбластьВысота = ВыделеннаяОбластьНиз   - ВыделеннаяОбластьВерх;
        ВыделеннаяОбластьШирина = ВыделеннаяОбластьПраво - ВыделеннаяОбластьЛево;
        
        #Если Клиент И Не ТолстыйКлиентОбычноеПриложение Тогда
            КоличествоВыделенныхЯчеек = КоличествоВыделенныхЯчеек + ВыделеннаяОбластьШирина * ВыделеннаяОбластьВысота;
            Если КоличествоВыделенныхЯчеек >= 1000 Тогда
                Возврат "<"; // Нужен вызов сервера.
            КонецЕсли;
        #КонецЕсли
        
        Для НомерКолонки = ВыделеннаяОбластьЛево По ВыделеннаяОбластьПраво Цикл
            Для НомерСтроки = ВыделеннаяОбластьВерх По ВыделеннаяОбластьНиз Цикл
                Ячейка = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
                Если ПроверенныеЯчейки.Получить(Ячейка.Имя) = Неопределено Тогда
                    ПроверенныеЯчейки.Вставить(Ячейка.Имя, Истина);
                Иначе
                    Продолжить;
                КонецЕсли;
                
                Если Ячейка.Видимость = Истина Тогда
                    Если Ячейка.ТипОбласти <> ТипОбластиЯчеекТабличногоДокумента.Колонки
                        И Ячейка.СодержитЗначение И ТипЗнч(Ячейка.Значение) = Тип("Число") Тогда
                        Число = Ячейка.Значение;
                    ИначеЕсли ЗначениеЗаполнено(Ячейка.Текст) Тогда
                        Число = СтроковыеФункцииКлиентСервер.СтрокаВЧисло(Ячейка.Текст);
                    Иначе
                        Продолжить;
                    КонецЕсли;
                    Если ТипЗнч(Число) = Тип("Число") Тогда
                        Если Сумма = Неопределено Тогда
                            Сумма = Число;
                        Иначе
                            Сумма = Сумма + Число;
                        КонецЕсли;
                    КонецЕсли;
                КонецЕсли;
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;
    
    Если Сумма = Неопределено Тогда
        Возврат ""; // Нет ни одного числа.
    КонецЕсли;
    
    Возврат Формат(Сумма, "ЧН=0");
    
КонецФункции

#КонецОбласти
13 Мэс33
 
10.12.15
07:58
(12) Не вижу этого куска

    Пока Выборка.Следующий() Цикл

на 3520 строке.
14 Soldat38
 
10.12.15
08:04
(13) Сорри, не тот модуль, промахнулась немного :(
Почему-то не удается скопировать в сообщение форума текст того самого модуля (наверное, слишком много текста), скопировала здесь:

https://yadi.sk/i/DafZmUArm7qpn
15 Мэс33
 
10.12.15
08:07
16 Soldat38
 
10.12.15
08:12
(15) У меня в 1Ске нет справочника "Сохраненные настройки", в Регистрах сведений есть "Настройки вариантов отчетов" - там чисто, ни одной настройки нету.
17 Мэс33
 
10.12.15
08:19
(16) Засада.. на яндекс диск доступа нет.
18 Soldat38
 
10.12.15
08:21
(17) А куда есть? Дропбокс?
19 Мэс33
 
10.12.15
08:28
Попробуй посмотреть содержимое хранилища настроек, вот код:

Выборка = ХранилищеСистемныхНастроек.Выбрать();

Пока Выборка.Следующий() Цикл
    
    ТекстСообщения = "КлючНастроек " + Выборка.КлючНастроек
                        + "; КлючОбъекта " + Выборка.КлючОбъекта
                        + "; Пользователь " + Выборка.Пользователь
                        + "; Представление" + Выборка.Представление
    
    ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
    
КонецЦикла;
20 Soldat38
 
10.12.15
08:37
(19) Я очень извиняюсь за свою необразованность, но куда нужно вводить этот код / команду?
21 Мэс33
 
10.12.15
08:40
(20) Ааа.
В общем есть ХранилищеСистемныхНастроек, там хранятся настройки различных представлений форм документов, справочников, отчетов и т.д. для пользователей. Судя по сообщению в (0) - сохраненное значение не может быть прочитано и 1С валится с ошибкой. Ну я так думаю.

Чтобы посмотреть и/или удалить ошибочные записи - надо написать небольшую обработку. Если не умеете - зовите спеца.

Но вдруг тут у форумчан рецепт другой найдется. У меня на большее фантазии не хватает.
22 Мимохожий Однако
 
10.12.15
08:41
Восстанови архив, убедись, что всё работает. И начинай заново. Вариант 2 - нанять спеца.
23 Soldat38
 
10.12.15
08:43
(21) Спасибо вам огромное за помощь в любом случае!

(22) Спеца позвала, но он сможет прийти только на следующей неделе, а нужно было прям щас. Видимо, придется как-то выкручиваться, работать на старой версии и ждать помощь.
24 Soldat38
 
13.12.15
11:01
Если вдруг кому будет нужно: как удалось решить проблему без привлечения программистов 1С. Дело действительно было в хранилище настроек. Создала нового юзера-админа, под логином которого все документы стали открываться без ошибки формата потока.
25 Мэс33
 
13.12.15
13:31
(24) Кстати, да. Тоже вариант решения проблемы.
Но те данные в  базе останутся.