Ошибка при вызове метода контекста значениеизстрокивнутр ошибка преобразования ошибка формата потока

Ошибка формата потока в ЗначениеИзСтрокиВнутр

Случай простой причины этой ошибки. Функция «ЗначениеИзСтрокиВнутр» в случае ошибочного входного параметра приводит к исключению. Значение не формируется.

В данном случае требуется проверить:

  • как формируется данное значение?
  • не преобразуется ли оно в процессе?
  • не усекается/обрезается?

Также не будет лишним, добавить  конструкцию Попытку <>Исключение <> КонецПопытки.

У меня результат передавался через Web-сервис и при любой ошибке на удаленной стороне код становился неработоспособным.

Полная ошибка:

Ошибка при вызове метода контекста (ЗначениеИзСтрокиВнутр)
ТЗ = ЗначениеИзСтрокиВнутр(Результат);
по причине:
Ошибка преобразования
по причине:
Ошибка формата потока

Реклама духов принесла мне больше известности, чем любой фильм, в котором я снималась.

   zladenuw

01.07.13 — 11:53

Процедура КнопкаВыполнитьНажатие(Кнопка)

   МассивЭл = Новый Массив;

   МассивЭл.Добавить(ЭлементыФормы.ПолеВвода1.Значение);

   МассивЭл.Добавить(ЭлементыФормы.ПолеВвода2.Значение);

   МассивЭл.Добавить(ЭлементыФормы.ПолеВвода3.Значение);

   ЭлементыФормы.ПолеВвода4.Значение = ЗначениеВСтрокуВнутр(МассивЭл);

   ЭлементыФормы.ПолеВвода1.Значение = «» ;

   ЭлементыФормы.ПолеВвода2.Значение = «» ;

   ЭлементыФормы.ПолеВвода3.Значение = «»;

КонецПроцедуры

Процедура ОсновныеДействияФормыДействие(Кнопка)

   
   МассивЭл = ЗначениеИзСтрокиВнутр(ЭлементыФормы.ПолеВвода4.Значение);

   
   ЭлементыФормы.ПолеВвода1.Значение = МассивЭл[0];

   ЭлементыФормы.ПолеВвода2.Значение = МассивЭл[1];

   ЭлементыФормы.ПолеВвода3.Значение = МассивЭл[2];

КонецПроцедуры

{Форма.Форма.Форма(15)}: Ошибка при вызове метода контекста (ЗначениеИзСтрокиВнутр)

   МассивЭл = ЗначениеИзСтрокиВнутр(ЭлементыФормы.ПолеВвода4.Значение);

по причине:

Ошибка преобразования

по причине:

Ошибка формата потока

   mikecool

1 — 01.07.13 — 11:54

все неправильно делаешь…

   zladenuw

2 — 01.07.13 — 11:55

(1) хочу несколько полей хранить в строковом представление. как мне их помещать?

   zladenuw

3 — 01.07.13 — 11:59

и так ошибка

Процедура КнопкаВыполнитьНажатие(Кнопка)

   ТД = Новый ТекстовыйДокумент;

   ТД.ДобавитьСтроку(ЭлементыФормы.ПолеВвода1.Значение);

   ТД.ДобавитьСтроку(ЭлементыФормы.ПолеВвода2.Значение);

   ТД.ДобавитьСтроку(ЭлементыФормы.ПолеВвода3.Значение);

   ЭлементыФормы.ПолеВвода4.Значение = ЗначениеВСтрокуВнутр(ТД);

   ЭлементыФормы.ПолеВвода1.Значение = «» ;

   ЭлементыФормы.ПолеВвода2.Значение = «» ;

   ЭлементыФормы.ПолеВвода3.Значение = «»;

КонецПроцедуры

Процедура ОсновныеДействияФормыДействие(Кнопка)

   
   ТД = ЗначениеИзСтрокиВнутр(ЭлементыФормы.ПолеВвода4.Значение);

   
   ЭлементыФормы.ПолеВвода1.Значение = СтрПолучитьСтроку(ТД,1);

   ЭлементыФормы.ПолеВвода2.Значение = СтрПолучитьСтроку(ТД,2);

   ЭлементыФормы.ПолеВвода3.Значение = СтрПолучитьСтроку(ТД,3);

КонецПроцедуры

   mikecool

4 — 01.07.13 — 12:00

(2) зачем? есть сохраняемые реквизиты форм…

   Maxus43

5 — 01.07.13 — 12:03

зачем так вобще делать непонятно, а вот почему не работает чисто технически… по разному переменные массивов назови например, может в памяти массивЭл лежит…

   lamesnake

6 — 01.07.13 — 12:04

а такое что выдаст?

ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(МассивЭл))

   zladenuw

7 — 01.07.13 — 12:06

(5) да не. даже так не хочет.

(4) хочу в РС запихнуть строку и привязать к объекту. даже так не работает.

   СТ = Новый Структура;

   СТ.Вставить(«a»,ЭлементыФормы.ПолеВвода1.Значение);

   СТ.Вставить(«b»,ЭлементыФормы.ПолеВвода2.Значение);

   СТ.Вставить(«c»,ЭлементыФормы.ПолеВвода3.Значение);

   //ТД.ДобавитьСтроку(ЭлементыФормы.ПолеВвода1.Значение);

   //ТД.ДобавитьСтроку(ЭлементыФормы.ПолеВвода2.Значение);

   //ТД.ДобавитьСтроку(ЭлементыФормы.ПолеВвода3.Значение);

   ЭлементыФормы.ПолеВвода4.Значение = ЗначениеВСтрокуВнутр(СТ);

   ЭлементыФормы.ПолеВвода1.Значение = «» ;

   ЭлементыФормы.ПолеВвода2.Значение = «» ;

   ЭлементыФормы.ПолеВвода3.Значение = «»;

КонецПроцедуры

Процедура ОсновныеДействияФормыДействие(Кнопка)

   
   СТ = ЭлементыФормы.ПолеВвода4.Значение;

   СТ = ЗначениеИзСтрокиВнутр(СТ);

   
   ЭлементыФормы.ПолеВвода1.Значение = СТ[«a»];

   ЭлементыФормы.ПолеВвода2.Значение = СТ[«b»];

   ЭлементыФормы.ПолеВвода3.Значение = СТ[«c»];

КонецПроцедуры

   zladenuw

8 — 01.07.13 — 12:06

платформа 8,2,16,368

   Maxus43

9 — 01.07.13 — 12:07

СТ_2 = ЗначениеИзСтрокиВнутр(ЭлементыФормы.ПолеВвода4.Значение);

   zladenuw

10 — 01.07.13 — 12:13

(9) ошибка формата потока :(. а у тебя работает?

   Maxus43

11 — 01.07.13 — 12:17

у меня работает это:

   Масс = Новый Массив;

   Масс.Добавить(«1»);

   Масс.Добавить(«2»);

   Масс.Добавить(«3»);

   Зн = ЗначениеВСтрокуВнутр(Масс);

   Сообщить(Зн);

   Зн2 = ЗначениеИзСтрокиВнутр(Зн);

   Сообщить(Зн2[0]);

   Сообщить(Зн2[1]);

   Сообщить(Зн2[2]);

дело в другом. Не обращайся к элементам формы, зачем? к переменным самим обращайся

   zladenuw

12 — 01.07.13 — 12:20

да вот так все равно ошибка

   
   СТ_2 = ЭлементыФормы.ПолеВвода4.Значение;

   СТ_2 = ЗначениеИзСтрокиВнутр(СТ_2);

   
   ЭлементыФормы.ПолеВвода1.Значение = СТ_2[«a»];

   ЭлементыФормы.ПолеВвода2.Значение = СТ_2[«b»];

   ЭлементыФормы.ПолеВвода3.Значение = СТ_2[«c»];

   Maxus43

13 — 01.07.13 — 12:21

(12) ты читаешь вобще? не обращайся через Элементы формы к данным, к ним доступ напрямую есть

   Maxus43

14 — 01.07.13 — 12:22

нафиг вобще везде элементы формы натыканы?) переменные же есть, реквизиты формы

   Maxus43

15 — 01.07.13 — 12:22

скопипасти (11). работает? значит ответ в (13)

   zladenuw

16 — 01.07.13 — 12:26

(15) спасиб. да понедельник блин. надо пойти кофе пить. а то тупняк.

   Maxus43

17 — 01.07.13 — 12:27

дак реально из за ЭлементыФориы?

  

zladenuw

18 — 01.07.13 — 12:35

(17) ага

Ошибка при работе в 1С 8 Ошибка при вызове метода контекста (ЗначениеИзСтрокиВнутр) по причине: Ошибка преобразования по причине: Ошибка формата потока

Описание ошибки:
Ошибка в обработке, при загрузке/чтении данных из файла MS Excel:
Ошибка при вызове метода контекста (ЗначениеИзСтрокиВнутр)
ТЗРез = ЗначениеИзСтрокиВнутр(Эксель.ПолучитьЛист(Лист));
по причине:
Ошибка преобразования
по причине:
Ошибка формата потока

Найденные решения:

1C 8 Ошибка формата потока при загрузке из Excel, эксель

При нажатии на кнопку «Подробно…» оказывается удивительным, что ошибка возникает при использовании метода «ПолучитьЛист()» для объекта — Excel.

1C 8 при чтении листа Excel, эксель, Ошибка преобразования по причине: Ошибка формата потока

Опытным путем было определено, что ошибка возникала только под конкретным пользователем базы 1С на нескольких рабочих местах. С другой стороны, под другим пользователем с таким же набором прав ошибка «Ошибка преобразования по причине: Ошибка формата потока» не возникала при попытке получить данные из того же файла Excel что на исходном рабочем месте, что на других. Но все равно была предпринята попытка на исходном рабочем месте очистить кэш базы (временные пользовательские файлы) через удаление базы из списка баз и подключение — но это не изменило ситуацию.

Для базы были выполнены наиболее популярные операции для случая возникновения ошибки «Ошибка формата потока» (в конце статьи будет ссылка на описание всех общих рекомендация для этой ошибки): процедура «Тестирование и исправление…» базы в конфигураторе базы, проверка физической целостности базы. Но ошибка сохранилась для изначального пользователя, при работе которого возникла.

1C 8 ошибка при использовании метода ПолучитьЛист() Ошибка формата потока

Необходимо было быстро устранить ошибку, поэтому было решено создать нового пользователя базы с похожим именем. Под новым пользователем работа по загрузке данных из Excel выполнялась без ошибки формата потока. И для «красоты» учета в базе было запланировано на него с помощью обработки «Поиск и замена дублирующихся элементов справочников» заменить исходного пользователя. Но после объединения пользователей — ошибка снова возникла. Было ощущение, что ошибка возникает только для пользователя с конкретным именем. Поэтому в имени пользователя базы, в конце имени был добавлен символ «_», что отображалось только в списке пользователей базы при запуске сеанса работы с базой. У пользователя справочника «Пользователи» имя осталось прежним — для вывода в печатных формах как и раньше.

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

Если данная приведенная информация не помогла устранить «Ошибку формата потока», то предлагается воспользоваться общей инструкцией по устранению данной ошибки: «Ошибка формата потока» в 1С: Предприятие 8. Общее руководство по устранению.

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

12-11-2020

Журавлев А.С.
(Сайт azhur-c.ru)

Ошибка при работе в 1С 8 Ошибка при вызове метода контекста (ЗначениеИзСтрокиВнутр) по причине: Ошибка преобразования по причине: Ошибка формата потока

Описание ошибки:
Ошибка в обработке, при загрузке/чтении данных из файла MS Excel:
Ошибка при вызове метода контекста (ЗначениеИзСтрокиВнутр)
ТЗРез = ЗначениеИзСтрокиВнутр(Эксель.ПолучитьЛист(Лист));
по причине:
Ошибка преобразования
по причине:
Ошибка формата потока

Найденные решения:

1C 8 Ошибка формата потока при загрузке из Excel, эксель

При нажатии на кнопку «Подробно…» оказывается удивительным, что ошибка возникает при использовании метода «ПолучитьЛист()» для объекта — Excel.

1C 8 при чтении листа Excel, эксель, Ошибка преобразования по причине: Ошибка формата потока

Опытным путем было определено, что ошибка возникала только под конкретным пользователем базы 1С на нескольких рабочих местах. С другой стороны, под другим пользователем с таким же набором прав ошибка «Ошибка преобразования по причине: Ошибка формата потока» не возникала при попытке получить данные из того же файла Excel что на исходном рабочем месте, что на других. Но все равно была предпринята попытка на исходном рабочем месте очистить кэш базы (временные пользовательские файлы) через удаление базы из списка баз и подключение — но это не изменило ситуацию.

Для базы были выполнены наиболее популярные операции для случая возникновения ошибки «Ошибка формата потока» (в конце статьи будет ссылка на описание всех общих рекомендация для этой ошибки): процедура «Тестирование и исправление…» базы в конфигураторе базы, проверка физической целостности базы. Но ошибка сохранилась для изначального пользователя, при работе которого возникла.

1C 8 ошибка при использовании метода ПолучитьЛист() Ошибка формата потока

Необходимо было быстро устранить ошибку, поэтому было решено создать нового пользователя базы с похожим именем. Под новым пользователем работа по загрузке данных из Excel выполнялась без ошибки формата потока. И для «красоты» учета в базе было запланировано на него с помощью обработки «Поиск и замена дублирующихся элементов справочников» заменить исходного пользователя. Но после объединения пользователей — ошибка снова возникла. Было ощущение, что ошибка возникает только для пользователя с конкретным именем. Поэтому в имени пользователя базы, в конце имени был добавлен символ «_», что отображалось только в списке пользователей базы при запуске сеанса работы с базой. У пользователя справочника «Пользователи» имя осталось прежним — для вывода в печатных формах как и раньше.

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

Если данная приведенная информация не помогла устранить «Ошибку формата потока», то предлагается воспользоваться общей инструкцией по устранению данной ошибки: «Ошибка формата потока» в 1С: Предприятие 8. Общее руководство по устранению.

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

12-11-2020

Журавлев А.С.
(Сайт azhur-c.ru)

  

zladenuw

01.07.13 — 11:53

Процедура КнопкаВыполнитьНажатие(Кнопка)

   МассивЭл = Новый Массив;

   МассивЭл.Добавить(ЭлементыФормы.ПолеВвода1.Значение);

   МассивЭл.Добавить(ЭлементыФормы.ПолеВвода2.Значение);

   МассивЭл.Добавить(ЭлементыФормы.ПолеВвода3.Значение);

   ЭлементыФормы.ПолеВвода4.Значение = ЗначениеВСтрокуВнутр(МассивЭл);

   ЭлементыФормы.ПолеВвода1.Значение = «» ;

   ЭлементыФормы.ПолеВвода2.Значение = «» ;

   ЭлементыФормы.ПолеВвода3.Значение = «»;

КонецПроцедуры

Процедура ОсновныеДействияФормыДействие(Кнопка)

   
   МассивЭл = ЗначениеИзСтрокиВнутр(ЭлементыФормы.ПолеВвода4.Значение);

   

   ЭлементыФормы.ПолеВвода1.Значение = МассивЭл[0];

   ЭлементыФормы.ПолеВвода2.Значение = МассивЭл[1];

   ЭлементыФормы.ПолеВвода3.Значение = МассивЭл[2];

КонецПроцедуры

{Форма.Форма.Форма(15)}: Ошибка при вызове метода контекста (ЗначениеИзСтрокиВнутр)

   МассивЭл = ЗначениеИзСтрокиВнутр(ЭлементыФормы.ПолеВвода4.Значение);

по причине:

Ошибка преобразования

по причине:

Ошибка формата потока

  

mikecool

1 — 01.07.13 — 11:54

все неправильно делаешь…

  

zladenuw

2 — 01.07.13 — 11:55

(1) хочу несколько полей хранить в строковом представление. как мне их помещать?

  

zladenuw

3 — 01.07.13 — 11:59

и так ошибка

Процедура КнопкаВыполнитьНажатие(Кнопка)

   ТД = Новый ТекстовыйДокумент;

   ТД.ДобавитьСтроку(ЭлементыФормы.ПолеВвода1.Значение);

   ТД.ДобавитьСтроку(ЭлементыФормы.ПолеВвода2.Значение);

   ТД.ДобавитьСтроку(ЭлементыФормы.ПолеВвода3.Значение);

   ЭлементыФормы.ПолеВвода4.Значение = ЗначениеВСтрокуВнутр(ТД);

   ЭлементыФормы.ПолеВвода1.Значение = «» ;

   ЭлементыФормы.ПолеВвода2.Значение = «» ;

   ЭлементыФормы.ПолеВвода3.Значение = «»;

КонецПроцедуры

Процедура ОсновныеДействияФормыДействие(Кнопка)

   
   ТД = ЗначениеИзСтрокиВнутр(ЭлементыФормы.ПолеВвода4.Значение);

   

   ЭлементыФормы.ПолеВвода1.Значение = СтрПолучитьСтроку(ТД,1);

   ЭлементыФормы.ПолеВвода2.Значение = СтрПолучитьСтроку(ТД,2);

   ЭлементыФормы.ПолеВвода3.Значение = СтрПолучитьСтроку(ТД,3);

КонецПроцедуры

  

mikecool

4 — 01.07.13 — 12:00

(2) зачем? есть сохраняемые реквизиты форм…

  

Maxus43

5 — 01.07.13 — 12:03

зачем так вобще делать непонятно, а вот почему не работает чисто технически… по разному переменные массивов назови например, может в памяти массивЭл лежит…

  

lamesnake

6 — 01.07.13 — 12:04

а такое что выдаст?

ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(МассивЭл))

  

zladenuw

7 — 01.07.13 — 12:06

(5) да не. даже так не хочет.

(4) хочу в РС запихнуть строку и привязать к объекту. даже так не работает.

   СТ = Новый Структура;

   СТ.Вставить(«a»,ЭлементыФормы.ПолеВвода1.Значение);

   СТ.Вставить(«b»,ЭлементыФормы.ПолеВвода2.Значение);

   СТ.Вставить(«c»,ЭлементыФормы.ПолеВвода3.Значение);

   //ТД.ДобавитьСтроку(ЭлементыФормы.ПолеВвода1.Значение);

   //ТД.ДобавитьСтроку(ЭлементыФормы.ПолеВвода2.Значение);

   //ТД.ДобавитьСтроку(ЭлементыФормы.ПолеВвода3.Значение);

   ЭлементыФормы.ПолеВвода4.Значение = ЗначениеВСтрокуВнутр(СТ);

   ЭлементыФормы.ПолеВвода1.Значение = «» ;

   ЭлементыФормы.ПолеВвода2.Значение = «» ;

   ЭлементыФормы.ПолеВвода3.Значение = «»;

КонецПроцедуры

Процедура ОсновныеДействияФормыДействие(Кнопка)

   

   СТ = ЭлементыФормы.ПолеВвода4.Значение;

   СТ = ЗначениеИзСтрокиВнутр(СТ);

   

   ЭлементыФормы.ПолеВвода1.Значение = СТ[«a»];

   ЭлементыФормы.ПолеВвода2.Значение = СТ[«b»];

   ЭлементыФормы.ПолеВвода3.Значение = СТ[«c»];

КонецПроцедуры

  

zladenuw

8 — 01.07.13 — 12:06

платформа 8,2,16,368

  

Maxus43

9 — 01.07.13 — 12:07

СТ_2 = ЗначениеИзСтрокиВнутр(ЭлементыФормы.ПолеВвода4.Значение);

  

zladenuw

10 — 01.07.13 — 12:13

(9) ошибка формата потока :(. а у тебя работает?

  

Maxus43

11 — 01.07.13 — 12:17

у меня работает это:

   Масс = Новый Массив;

   Масс.Добавить(«1»);

   Масс.Добавить(«2»);

   Масс.Добавить(«3»);

   Зн = ЗначениеВСтрокуВнутр(Масс);

   Сообщить(Зн);

   Зн2 = ЗначениеИзСтрокиВнутр(Зн);

   Сообщить(Зн2[0]);

   Сообщить(Зн2[1]);

   Сообщить(Зн2[2]);

дело в другом. Не обращайся к элементам формы, зачем? к переменным самим обращайся

  

zladenuw

12 — 01.07.13 — 12:20

да вот так все равно ошибка

   

   СТ_2 = ЭлементыФормы.ПолеВвода4.Значение;

   СТ_2 = ЗначениеИзСтрокиВнутр(СТ_2);

   

   ЭлементыФормы.ПолеВвода1.Значение = СТ_2[«a»];

   ЭлементыФормы.ПолеВвода2.Значение = СТ_2[«b»];

   ЭлементыФормы.ПолеВвода3.Значение = СТ_2[«c»];

  

Maxus43

13 — 01.07.13 — 12:21

(12) ты читаешь вобще? не обращайся через Элементы формы к данным, к ним доступ напрямую есть

  

Maxus43

14 — 01.07.13 — 12:22

нафиг вобще везде элементы формы натыканы?) переменные же есть, реквизиты формы

  

Maxus43

15 — 01.07.13 — 12:22

скопипасти (11). работает? значит ответ в (13)

  

zladenuw

16 — 01.07.13 — 12:26

(15) спасиб. да понедельник блин. надо пойти кофе пить. а то тупняк.

  

Maxus43

17 — 01.07.13 — 12:27

дак реально из за ЭлементыФориы?

  

zladenuw

18 — 01.07.13 — 12:35

(17) ага

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

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

{Форма.Форма.Форма}: Ошибка при вызове метода контекста (ЗначениеИзСтрокиВнутр) по причине: Ошибка преобразования по причине: Ошибка формата потока

все неправильно делаешь…

хочу несколько полей хранить в строковом представление. как мне их помещать?

зачем? есть сохраняемые реквизиты форм…

зачем так вобще делать непонятно, а вот почему не работает чисто технически… по разному переменные массивов назови например, может в памяти массивЭл лежит…

а такое что выдаст? ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(МассивЭл))

да не. даже так не хочет. хочу в РС запихнуть строку и привязать к объекту. даже так не работает.

СТ_2 = ЗначениеИзСтрокиВнутр(ЭлементыФормы.ПолеВвода4.Значение);

ошибка формата потока :(. а у тебя работает?

у меня работает это: дело в другом. Не обращайся к элементам формы, зачем? к переменным самим обращайся

да вот так все равно ошибка

ты читаешь вобще? не обращайся через Элементы формы к данным, к ним доступ напрямую есть

нафиг вобще везде элементы формы натыканы?) переменные же есть, реквизиты формы

скопипасти . работает? значит ответ в

спасиб. да понедельник блин. надо пойти кофе пить. а то тупняк.

дак реально из за ЭлементыФориы?

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Практически любой пользователь 1С предприятия сталкивался с ошибкой следующего вида:

Рис.1 Ошибка

Рис.1 Ошибка

Эта ошибка является одной из самых распространенных и очень пугает пользователей своей неинформативностью: не понятно, что случилось и где конкретно произошла ошибка. Первым решением в такой ситуации зачастую становится нажатие кнопки «Перезапустить». Это не помогает, как не помогает и следующий шаг большинства пользователей – перезагрузка компьютера. Как можно исправить данную ошибку, мы расскажем в этой статье, но сразу хотелось бы уточнить, что описанные ниже действия требуют определенных знаний, поэтому, если вы не уверены в своих силах, обращайтесь за помощью по 1С к профессионалам.

Причины появления ошибки формата потока

«1С:Предприятие» постоянно пытается оптимизировать свои действия, создавая на пользовательских ПК кэш-папки, в которых отображается часто используемая информация: пользовательские настройки, размер и размещение окон, данные о наиболее часто запускаемых операциях и т.д. Обращение программы к кэшу сокращает число обращений к серверу, ускоряя работу программы.

А если кэш-файлы будут повреждены или некорректно записаны?

Это может произойти при «зависании» программы, некорректном завершении работы, перебоях напряжения или обновлении конфигурации. Если в момент сбоя программа обращалась к файлам кэша для записи или чтения, то они, скорее всего, будут повреждены, и при следующем запуске пользователь увидит окно ошибки, которое мы видели выше.

Ошибка может возникать также из-за некорректно записанных данных в самой программе (документы, справочники, регистры и т.д.).

Виды ошибки

  • Ошибка, возникающая при запуске программы. Как правило, возникает при некорректном завершении работы и других причинах, описанных выше. В этом случае искать ошибку следует в кэше.
  • Ошибка возникает при работе в программе (запуск программы проходит без проблем), при обращении к определенным метаданным или при совершении определенных операций. В данном случае ошибку будем искать в самой программе.
  • В пользовательском режиме программа работает совершенно нормально, ошибок нет. Но при входе в конфигуратор или, реже, при совершении определенных действий, возникает ошибка формата потока*. В случае такой ошибки опять же ищем причину в кэше.

*Такая ошибка была характерна для времени появления платформы 8.3, а в последнее время она почти не встречается, так что есть вероятность, что разработчик ошибку исправил.

В зависимости от вида ошибки мы можем подобрать вариант «лечения», хотя можно просто использовать все способы по порядку. Вреда базе ни один из этих способов не нанесет и доработки конфигурации 1С не потребует, но всегда, перед любыми действиями, для базы необходимо сделать архивную копию.

Способы устранения ошибки

Очистка кэша 1С. Подробно этот способ рассмотрен в отдельной статье на нашем сайте. Но если сказать вкратце, самым надежным способом является удаление файлов кэша вручную из папок на компьютере. Для этого нужно установить их месторасположение. В системах, начиная с Win 7 и выше, папки кэша находятся здесь:


  • C:UsersUsernameAppDataRoaming1C1cv8

  • C:UsersUsernameAppDataLocal1C1cv8

В Win XP они расположены в папке локального пользователя по адресу:


  • Local SettingsApplication Data1C

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

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

Рис.2 Нужные нам папки

Рис.2 Нужные нам папки

Рис.3 Утилита ClearCache

Рис.3 Утилита ClearCache

Либо воспользуйтесь данным скриптом

Запуск утилиты «Тестирование и исправление в конфигураторе». Для тестирования и исправления ошибок нам нужно зайти в конфигуратор и «Администрировании» выбрать соответствующий пункт.

Рис.4 Тестирование и исправление в конфигураторе

Рис.4 Тестирование и исправление в конфигураторе

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

Рис.5 Настройки

Рис.5 Настройки

Во время проверки база недоступна для любых действий. Для медленных машин внизу стоит установить время, через которое тестирование будет приостановлено. Результаты проверки система покажет в окне служебных сообщений.

Запуск утилиты «chdbfl.exe». Когда зайти в конфигуратор не представляется возможным (ошибка появляется сразу при запуске базы данных), стоит воспользоваться утилитой chdbfl.exe. Она расположена в папке с установленной платформой 1С. Путь следующий:

Рис.6 Запуск утилиты «chdbfl.exe»

Рис.6 Запуск утилиты «chdbfl.exe»

Запускаем утилиту от имени администратора. В появившемся окне указываем путь к файлу базы данных 1cv8.1CD, ставим галочку «Исправлять выявленные ошибки», затем – «Выполнить». В процессе проверки программа автоматом исправит все найденные ошибки и выдаст информацию о них.

Иногда в процессе проверки программа не находит ошибок. На практике бывают случаи, когда ошибки находятся при второй или даже третьей проверке подряд. Поэтому стоит делать не менее трех проверок.

Но это не все! Бывает, что с 3-х попыток ошибки не были найдены, но после проверки, во время работы программы, не появились. Возможно, что часть ошибок была найдена и исправлена в разновидности фонового режима, без выдачи сообщений об этом. Поэтому, даже если после нескольких проверок ошибки не были найдены, все равно стоит запустить и проверить базу 1С. Возможно, они все-таки были исправлены.

Выгрузка-загрузка базы 1С через конфигуратор. Суть способа заключается в банальном создании архивной копии в режиме конфигуратора и ее загрузке в пустую базу.

В конфигураторе, в разделе «Администрирование» выберем «Выгрузить информационную базу». После этого укажем, где мы хотим создать архивную копию.

Рис.7 Выгрузить информационную базу

Рис.7 Выгрузить информационную базу

Когда выгрузка будет закончена, создадим новую пустую базу без конфигурации и загрузим туда полученный файл.

Рис.8 Создадим новую пустую базу без конфигурации и загрузим туда полученный файл

Рис.8 Создадим новую пустую базу без конфигурации и загрузим туда полученный файл

По сути, это является своего рода чисткой кэша, так как при создании новой базы данных файлы для нее также создаются новые.

Выгрузка – загрузка данных через xml. Когда повреждена сама конфигурация и нет возможности ее восстановить, поможет перенос ваших данных в новую чистую конфигурацию. Очень важно понимать, что этим методом не стоит пользоваться новичкам, так как он может привести к частичной потере данных. Данный вариант следует реализовывать силами программистов 1С.

Использование обработки похоже на предыдущий вариант действий, а отличает его то, что мы не делаем копию всей базы, а выгружаем только данные из нее, но загружаем их так же в новую пустую базу. Все это делается с помощью стандартной обработки «ВыгрузкаЗагрузкаДанныхXML», которую можно найти на диске ИТС. Запускается она просто: Главное меню – Файл – Открыть. Далее указываем, где лежит обработка.

Рис.9 Указываем путь к обработке

Рис.9 Указываем путь к обработке

Эта обработка используется для переноса определенных данных из одной базы в другую, но в нашей ситуации вполне может помочь. Отмечаем галочками все типы данных и жмем «Выгрузить данные».

Рис.10 Выгрузить данные

Рис.10 Выгрузить данные

Точно так же происходит загрузка данных из сформированного файла xml.

Этим методом не стоит пользоваться новичкам, так как он может привести к частичной потере данных.

Обновление базы данных и платформы. Существует возможность появления рассматриваемой нами ошибки, связанная с наличием активных сеансов работы с базой данных под разными платформами на разных компьютерах. В принципе, это не очень актуально, так как в версиях платформы, начиная с 8.3.5, существует блокировка таких сеансов. То есть, если на одном рабочем месте база данных запущена с платформы версии 8.3.10, на другом при запуске той же базы под другой платформой отобразится ошибка следующего вида:

Рис.11 Обновление базы данных и платформы

Рис.11 Обновление базы данных и платформы

База просто не запустится, и в этом случае прямо укажет почему.

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

В большинстве случаев один из вышеперечисленных способов помогает устранить ошибку формата потока. Если ни один из них не помог, стоит прибегнуть к более сложной диагностике – проверке жесткого диска на битые сектора с помощью утилиты chkdsk.exe, очистке временных файлов компьютера, а не только кэша 1С, проверке компьютера антивирусом и проверке настроек антивируса и фаервола. Также стоит запустить базу данных на другом компьютере, чтобы убедиться, что проблема в самой базе, а не в железе или операционной системе.

Если проблемы с возникновением ошибок не удалось решить, обратитесь к нашим специалистам: мы проконсультируем и подберем для вас оптимальную стоимость сопровождения 1С, исходя из ваших конкретных задач и потребностей.

1cv82-stream-format-error-2-000.jpgПродолжая тему ошибки формата потока 1С разберем еще одну типичную ситуацию.  В данном случае одноименную ошибку мы получили при попытке вызвать отчет, при этом ни тестирование и исправление базы в Конфигураторе, ни проверка утилитой chdbfl результатов не принесли. Все проверки утверждали, что база исправна, также мы без проблем выгрузили — загрузили базу через DT-файл и спокойно смогли обновить. Самое время проанализировать ситуацию.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Начнем с начала, ничто не предвещало беды — никаких аварийных состояний или сбоев. Просто в один день при попытке вызвать отчет Оборотно сальдовая-ведомость мы получили ошибку формата потока.

1cv82-stream-format-error-2-001.jpgОбычно в таких случаях сразу возникают подозрения на повреждение базы, однако все проверки утверждали, что с базой все в порядке. Кроме того, под другим пользователем отчет открывался и формировался нормально.

1cv82-stream-format-error-2-002.jpgСтало ясно, что ошибка кроется где-то в настройках конкретного пользователя, однако очистка профайлов не дала никакого результата. Поэтому было решено изучить информацию об ошибке более подробно (что и надо было сделать в самом начале).

1cv82-stream-format-error-2-003.jpgСразу обращает на себя внимание сообщение:

Ошибка при вызове метода контекста (Получить)
СтруктураПараметров = СохраненнаяНастройка.ХранилищеНастроек.Получить();
по причине:
Ошибка формата потока

Дальше становится понятнее. Идем в хранилище настроек отчетов: Операции — Справочники — Сохраненные настройки.

1cv82-stream-format-error-2-004.jpgОткрываем справочник, отключаем отбор и находим настройку сбойного отчета для интересующего нас пользователя и ставим пометку на удаление:

1cv82-stream-format-error-2-005.jpgЗатем переходим к Удалению помеченных объектов и удаляем настройку.

1cv82-stream-format-error-2-006.jpgПосле чего проверяем отчет — Оборотно-сальдовая ведомость нормально открывается и формируется. Подобная ситуация может возникнуть с любым иным отчетом, но несмотря на пугающее сообщение об ошибке формата потока, решение предельно просто и доступно самим пользователям. Главное не паниковать и не теряться, а внимательно изучить всю доступную информацию об ошибке, как правило она содержит сведения, позволяющие быстро отыскать пути решения.

Дополнительные материалы:

  1. 1С Предприятие 8.2 Ошибка при запуске программы.
  2. 1С:Предприятие 8. Ошибка формата потока при обновлении.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

{Форма.Форма.Форма}: Ошибка при вызове метода контекста (ЗначениеИзСтрокиВнутр) по причине: Ошибка преобразования по причине: Ошибка формата потока

все неправильно делаешь…

хочу несколько полей хранить в строковом представление. как мне их помещать?

зачем? есть сохраняемые реквизиты форм…

зачем так вобще делать непонятно, а вот почему не работает чисто технически… по разному переменные массивов назови например, может в памяти массивЭл лежит…

а такое что выдаст? ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(МассивЭл))

да не. даже так не хочет. хочу в РС запихнуть строку и привязать к объекту. даже так не работает.

СТ_2 = ЗначениеИзСтрокиВнутр(ЭлементыФормы.ПолеВвода4.Значение);

ошибка формата потока :(. а у тебя работает?

у меня работает это: дело в другом. Не обращайся к элементам формы, зачем? к переменным самим обращайся

да вот так все равно ошибка

ты читаешь вобще? не обращайся через Элементы формы к данным, к ним доступ напрямую есть

нафиг вобще везде элементы формы натыканы?) переменные же есть, реквизиты формы

скопипасти . работает? значит ответ в

спасиб. да понедельник блин. надо пойти кофе пить. а то тупняк.

дак реально из за ЭлементыФориы?

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

  • Ошибка при вызове метода контекста значениевреквизитформы параметр 2
  • Ошибка при вызове метода контекста значениевреквизитформы дерево значений
  • Ошибка при вызове метода контекста значениевданныеформы
  • Ошибка при вызове метода контекста зафиксироватьтранзакцию транзакция не активна
  • Ошибка при вызове метода контекста зарегистрироватьизменения