Все о тюнинге авто

1с предприятие выдает ошибку. Наиболее частые ошибки «1С» и методы их исправления. Тестирование и исправление базы через Конфигуратор

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

Первым делом попробуйте подумать над тем, что же всё-таки могло привести к данной неполадке.

Наиболее распространенные причины

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

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

Как исправить ошибку формата потока

  1. Первым делом попробуйте . Если на одном компьютере программа работает нормально, а на другом появляется ошибка формата потока, то, скорее всего этот способ именно для вас.
  2. В том случае, если очистка кэша не помогла, попробуйте открыть информационную базу в режиме конфигуратора и запустите .
  3. Если вам не удалось зайти в конфигуратор, но база файловая – воспользуйтесь ChDBFl.exe. Данная утилита является аналогом тестирования и исправления ошибок в конфигураторе, но более простым.
  4. Убедитесь, что все текущие пользователи данной информационной базы используют одинаковую версию платформы. Если версии различаются, то установите всем актуальные.
  5. Если 1С запускается в режиме «Предприятие», то выгрузите все данные при помощи универсальной выгрузки/загрузки в новую базу.
  6. Отключите, а при необходимости удалите все фаерволы и антивирусы.
  7. Если данная информационная база клиент – серверная, то проверьте, хватает ли дискового пространства на сервере в папке для хранения временных данных.
  8. Удалите платформу 1С (через панель управления) и установите заново.
  9. Если информационная база открывается в конфигураторе, попробуйте выгрузить ее в файл *.dt и загрузить в пустую.
  10. Воспользоваться HEX-редактором, заменив содержимое чистой базы содержимым той, в которой произошла ошибка.

Если все эти способы вам не помогли, что маловероятно, то тут только бубен в помощь или квалифицированный специалист.

В этой статье будут объяснены причины возникновения, разновидности и способы устранения
«Ошибки формата потока» 1С.

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

Данное окно входит в ТОП-3 самых распространенных ошибок 1С:Предприятие. Оно неприятно из-за своей не информативности. Непонятно: где, в чем ошибка? Естественной реакцией будет нажатие кнопки «Перезапустить», но с высокой вероятностью можно утверждать, что перезапуск проблему не устранит, и пользователь снова увидит данное окно.

В этой статье будут объяснены причины возникновения, разновидности и способы устранения «Ошибки формата потока» 1С.

Почему 1С 8 пишет «Ошибки формата потока»?

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

Но что произойдет, если файл “кэша” будет записан с ошибкой/ошибками, в результате неправильного завершения сеанса работы, либо скачка напряжения, либо сбоя сети (для клиент-серверного варианта работы 1С)? При следующей попытке обращения к “кэшу” 1С не сможет прочитать файл и появится окно “Ошибка формата потока”. “Битый кэш” является самой частой причиной возникновения этой ошибки.

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

Виды ошибки формата потока

Условно ошибку формата потока 1С можно поделить на 2 вида:

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

В зависимости от вида ошибки можно выбрать наиболее подходящий вариант ее устранения. Но можно использовать и все способы по очереди, пока один из них не сработает. Способы не нанесут вреда вашей базе 1С 8. Впрочем, если действовать как настоящий профессионал – стоит сначала сделать бэкап, а уже потом бороться с “Ошибкой формата потока”.

Как устранить “Ошибку формата потока”?

Рассмотрим ТОП способов решения:

1. Почистить кэш 1С

Данный способ подробно был рассмотрен в нашей статье “ ”. Вкратце напомним. Для удаления файлов кэша вручную необходимо найти папки, где кэш хранится. Для операционных систем Win7 и выше временные файлы хранятся по адресу C:\Users\Username\AppData\Roaming\1C и C:\Users\Username\AppData\Local\1C в папках, начинающихся с «1cv8». В Windows XP, в папке пользователя по адресу Local Settings\Application Data\1C\. Если папка AppData не видна – настройте видимость скрытых папок. Ниже на рисунке показано, как выглядят файлы кэша – папки с длинными непонятными именами (в нашем случае файл всего один). Для очистки кэша нужно удалить эти папки.

Важно! Удалять папки можно только тогда, когда завершены процессы работы с 1С:Предприятие.

2. Запустить тестирование и исправление 1С

В режиме конфигуратора нужно кликнуть по пункту меню “Администрирование” и затем “Тестирование и исправление”.

Должны быть отмечены первые два пункта “реиндексация таблиц информационной базы” и “проверка логической целостности информационной базы”. Нажмите кнопку “Выполнить”. Система сама проверит базу, найдет ошибки, исправит их и предоставим вам отчет о проделанной работе. При необходимости отметьте также третий пункт “проверка ссылочной целостности информационной базы”.

3. Запуск«chdbfl.exe»

Если нет возможности зайти в конфигуратор, тогда запустите программу «chdbfl.exe», которая находится: «C:\Program Files (x86)\1cv8\8.3……\bin» . Выберите файл Базы Данных, отметьте галочкой “Исправлять обнаруженные ошибки” и нажмите кнопку “Выполнить”. Дальше система все сделает за вас. Система сама проверит базу, найдет ошибки и исправит их. Во время работы программы «chdbfl.exe» не должно быть активных сеансов работы с 1С.

4. Выгрузить и загрузить информационную базу в.dt

В режиме конфигуратора выберите пункт меню “Администрирование” и кликните “Выгрузить информационную базу”. После этого выберите место куда хотите сохранить файл базы (.dt), задайте файлу имя и нажмите “Сохранить”.

После этого создайте новую пустую базу у себя на компьютере (либо на сервере). Зайдите в конфигуратор новой базы, нажмите “Администрирование”, затем “Загрузить информационную базу”. Выберите подготовленный ранее файл и нажмите “Открыть”.


5. Выгрузить и загрузить данные XML.

Данный способ может повлечь потерю данных, поэтому его рекомендуется использовать только опытным пользователям. Способ схож с предыдущим и заключается в том, что сначала база выгружается, (только не в.dt, как в предыдущем способе, а в специальный формат.XML). Затем база загружается обратно. Делается это с помощью встроенной обработки “Выгрузка и загрузка данных XML”.


6.Обновление 1С

Причиной рассматриваемой ошибки может стать наличие активных сеансов пользователей, работающих в разных версиях . Например, в базе есть активный сеанс пользователя с платформой 1С 8.3.5…., а пытается подключиться другой, с версией 8.3.4…. Если на компьютере установлены несколько версий – убедитесь, что в окне редактирования информационной базы выбрана нужная вам “правильная” версия.


7. Другие способы.

В 99% случаев вышеописанные способы борьбы с “Ошибкой формата потока” эффективно сделают свою работу и ошибка “уйдет”. В оставшемся 1% придется применять более сложную диагностику, иногда выходящую за рамки 1С, например: почистить временные файлы компьютера, а не только кэш 1С; проверить жесткий диск на битые сектора при помощи утилиты “chkdsk.exe”; проверить компьютер антивирусом. Можно даже попробовать запустить базу 1С на другом компьютере и таким образом локализовать проблему, убедившись, что ошибка кроется именно в информационной базе, а не в железе и не в Операционной Системе.

Данная статья создана в помощь столкнувшимся с ошибкой 1С “Ошибка формата потока”, здесь были рассмотрены и объяснены причины ее появления, её условные виды и способы устранения. Ошибка выглядит страшно и непонятно из-за своей неопределенности, но, как видим, устранить данную ошибку по силам каждому.

Ошибка формата потока 1С Предприятие — одна из самых распространенных ошибок, возникающих при работе с 1С программами. Из публикации вы узнаете, как исправляется ошибка формата потока 1С Предприятие 8.3 без обращения к администраторам или партнерам 1С, проверенными на практике способами.

Работаешь в программе 1С, все замечательно, а тут неизвестно из-за чего появилась небольшая форма с уведомлением «Ошибка формата потока» и с вариантами «Завершить работу» в программе или «Перезапустить» программу. Перезапуск, естественно, ни к чему не приводит, ошибка появляется снова…

…из публикации вы узнаете:

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

Почему возникает ошибка формата потока 1С Предприятие 8.3

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

  • жесткий диск , на который во время работы платформы 1С сохраняются временные файлы настроек, логи, сервисная и пользовательская информация;
  • сеть (в случае сетевой работы), по средствам которой происходит обмен пакетами данных с другими компьютерами или серверами сети (в случае клиент-серверного варианта работы 1С Предприятие).

Причем, платформа 1С Предприятие использует указанные ресурсы постоянно.

А теперь представьте, что произошел скачек электричества, поэтому часть сетевого пакета исказилась и была записана в некорректной форме или отключили электричество и данные, которые писались в кеш 1С записались частично, что в этом случае произойдет?

Первым делом необходимо сделать копию информационной базы 1С на случай порчи рабочей базы при её исправлении.

Эффективный способ исправить ошибку формата потока 1С Предприятие 8.3 для файловых баз данных 1С

Если вы работая в файловой версии 1С Предприятие , стали жертвой этой напасти, то хочу предложить способ от её избавления, работающий в 78% случаев.

  • Для этого необходимо зайти и удалить все файлы и папки, КРОМЕ ФАЙЛА ДАННЫХ 1Cv8.CD . Операция требует сноровки, поэтому будьте осторожны, не переборщите с удалением! 🙂

Путь до каталога базы данных 1С Предприятие 8.3 вы можете посмотреть при запуске программы — он будет расположен внизу окна запуска 1С Предприятие 8.3.

По поводу удаленных файлов не переживайте — это все служебные файлы, которые будут созданы заново в правильном формате при следующем запуске 1С Предприятие 8.3.

  • Если предложенный способ не помог, то для исправления файловых баз в 1С Предприятие 8.3 предусмотрена утилита chdbfl.exe. Проверьте структуру вашей базы, воспользовавшись этой утилитой.

Ошибка формата потока 1С 8.3 не исчезла? Плохо! Читаем дальше.

Стандартные шаги по исправлению ошибки формата потока 1С Предприятие 8.3

На эти темы были написаны подробные публикации, поэтому тут мне добавить нечего. Читайте статьи и делайте всё в точности по написанному.

Если после проделанных с базой манипуляций «ошибка формата потока» все равно появляется, в этом случае пробуйте ещё один проверенный способ:

  • выгрузите вашу базу с файл *.dt, создайте пустую базу 1С и загрузите в неё выгруженный до этого файл *.dt. В выполнении этой операции вам поможет статья про .

На этом шаге исправить ошибку формата потока 1С Предприятие 8.3 получается в 94% случаев. Но что делать есть не спало???

Нестандартные способы исправить ошибку формата потока 1С Предприятие 8.3

До этого были проделаны все стандартные операции по исправлению данной ошибки, и если до этого момента ошибка не устранена, значит придется заняться «творчеством». Ещё этот процесс называют «танцами с бубнами» или «шаманством»… Поэтому, если до этого вы не «танцевали», то ошибка формата потока 1С Предприятие 8.3 может вам составить отличную пару. Итак, продолжим:

  • Пробуйте загрузить файл *.dt в новой базе данных, созданной на другом компьютере . Этим вы исключите вероятность некорректно работающего железа или программ компьютера, где находится база.
  • Удалите (именно УДАЛИТЕ через Установку и удаление программ) платформу 1С и установите заново, желательно новейшую версию. Исключаем некорректно работающие исполняемые файлы платформы, которые могли быть подпорчены вирусами или «посыпавшимися» секторами жесткого диска или другими способами.
  • Обновите конфигурацию на следующий релиз или загрузите текущую конфигурацию из файла *.cf с полным замещением объектов.
  • Отключите брандмауэр и антивирусы. Существует вероятность, что исполняемый файл был замечен в подозрительной активности антивирусом и помещен в карантин или остался под жестким контролем с блокировкой «опасных» действий. В любом случае — исключаем вариант карантина антивирусов.
  • Удалите временные файлы на компьютере. Они находятся в нескольких местах:
  1. В профиле пользователя, для поиска введите %Temp% в адресной строке проводника.
  2. В папке C:\Windows\Temp
  3. Иногда на диске C:\Temp
  • Ещё один способ был однажды применен, когда ничто не помогало — создали полный начальный образ базы данных и потом отвязали его от РИБ, сделав независимым. Получили ту же базу, пропустив начальную через механизмы РИБ (как через мясорубку 🙂) .

Ещё пара способов исправить ошибку формата потока 1С Предприятие 8.3

Есть ещё пара способов с хакерским подходом:

  • загрузить файл *.dt в клиент-серверную базу данных (если база с ошибкой формата потока клиент-серверная, то делаем на ней, предварительно сделав копию) и очистить файл от всех записей в таблице «configsave » через программную консоль.
  • в утилите Tool_1CD есть проверка формата потока. Скачайте эту утилиту и проверяйте поток.

Описанные в публикации способы исправления ошибки формата потока были проверены на практике — работают!

Надеюсь, что ничего не забыл. Если вдруг всплывет в памяти что-то ещё, то обязательно дополню публикацию.

Всем читателям отличного настроения! Пусть ошибка формата потока вас обходит стороной!!! 😉

Если вам что-то не понятно в вопросе как исправляется ошибка формата потока 1С:Предприятие 8.3, то вы можете задать вопрос в комментариях к статье или на .
Что бы не потерять статью в просторах интернета — сохраните её к себе в социальные сети или в закладки.


Ошибка формата потока 1С — методика исправления

В этой небольшой статье я попытаюсь собрать воедино типичные ошибки, которые совершают начинающие пользователи 1С Бухгалтерии 8. Большинство этих ошибок к самой бухгалтерии отношения не имеют и, в основном, связаны с невнимательностью или плохим знанием Windows. Впрочем, бывают и другие. Ниже приводится список наиболее распространённых "граблей", на которые не устают наступать пользователи на моих курсах по 1С Бухгалтерии, несмотря на многократные повторения.

"Кривая" дата документа

Эта ошибка настолько распространена, что она обсуждается в отдельной статье . Ставьте правильную дату в документах!

Закрывание окон крестиком по поводу и без

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

Попытка писать там, где нужно выбирать

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

сайт_

Кнопка со стрелкой вниз предназначена для выбора из выпадающего списка . Кнопка с троеточием в большинстве случаев открывает для выбора отдельное окно, где требуется выбрать объект. Кнопка с буквой Т открывает окно, в котором требуется выбрать тип объекта .

Тут была важная часть статьи, но без JavaScript её не видно!

Если поле снабжено кнопкой выбора, то следует выбирать , а не печатать. Ниже приводится окно, которое появляется при попытке писать там, где нужно выбирать .

сайт_

Из этого правила есть исключения, которые мы рассматриваем на моих курсах по 1С Бухгалтерии 8 . Но в целом могу порекомендовать следовать правилу: видите поле с элементом для выбора — выбирайте!

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

Если вам требуется ввести данные в ячейку строки табличной части, то проследите чтобы данная ячейка была активна (как в Excel), иначе при попытке ввода текста сработает быстрый поиск ! Пример приведён ниже.

сайт_

Это была попытка напечатать текст в выделенной ячейке без её активации. Следовало сделать вот так.

сайт_

сайт_

Табличные части могут быть длинными!

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

сайт_

Ошибка эта из той же серии, что и пропуск полей. Про скрытую часть таблицы очень часто забывают. Обратите внимание на стрелку на рисунке — она показывает, что требуется прокрутить окно и дозаполнить то, что скрыто (в приведённом примере скрыта чуть ли не половина(!) таблицы)

Двойной щелчок для редактирования элемента

... не работает в том случае, когда окно открыто для выбора! Если окно открыто для выбора (легко определяется по наличию кнопки Выбрать), то используйте F2 или кнопку редактирования на панели инструментов!

сайт_

Нажимание кнопки, принадлежащей другому окну.

Ниже приведён пример того, как НЕ НАДО делать .

сайт_

Зелёным подчеркнута нужная кнопка, а красным — кнопка, принадлежащая СОВСЕМ ДРУГОМУ ОКНУ!

Это исключительно проблема с интерфейсом Windows (проблемы с умением определять границы окон и других объектов) и 1С Бухгалтерия ("я ведь только учусь!!!" ) тут ни при чём! Конечно, иногда можно случайно промазать мышкой, задумавшись о чем-то. Но когда это происходит раз за разом, то не пора ли изучить интерфейс операционной системы?

Для большей убедительности привожу ту же самую картинку, на которой ГРАНИЦЫ нужного окна обведены зелёной линией. Стрелочка-указатель на правильную кнопку прилагается.

сайт_

В 1С Бухгалтерии 8.3 окна открываются в отдельных вкладках, так что эта проблема там менее распространена (в фирме 1С тоже заметили проблему?), но полностью не исчезла.

В полях с числами нули после запятой — дробная часть

Это, как правило, копейки в суммах. Могут быть и другие дробные числа. Ниже приведен пример, в котором зарплата сотрудника получилась слишком маленькой:)

сайт_

В приведённом примере это не двадцать тысяч, а двадцать рублей!

В начале юридического договора, особенно в ИТ области, обычно есть раздел под названием Термины. В нем объясняется — что значит или включает в себя то или иное ИТ слово.

Но кроме действительно сложных слов как сервер или сайт также и обычные, всем известные слова у программистов могут значить совсем другое. Например ошибки. В общечеловеческом смысле это слово означает неправильное действие. Такое, за которое его автору может быть даже стыдно.

В программистом смысле слово ошибки имеет, наверное, два уточнения..

Что означает термин «ошибка» в программировании и в 1С

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

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

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

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

Например, программист задумывал, что сначала пользователь откроет файл, а потом программа сделает то-то и то-то. Однако когда программа была скопирована пользователю на компьютер и пользователь забыл открыть файл. Или пытался открыть, но файл оказался некорректный или винчестер «битый».
И программа сообщает пользователю: Эй, тут ошибка! Я не могу сделать то, что должна.

Ошибки 1С имеют несколько уровней – во первых сообщения об ошибках 1С могут принадлежать , которая сообщает о невозможности выполнить какие-то действия, которые она должна была выполнить из-за сложившихся обстоятельств.

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

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

Сообщение об ошибке 1С

1С сообщает об ошибке выполнения программы на языке 1С с помощью типового окошка с текстом ошибки 1С и кнопками ОК и Подробнее.

Причем секрет тут в том, что в этом окошке отображается только краткое сообщение об ошибке 1С, которое зачастую программисту ни о чем не говорит.

Чтобы увидеть полное – нужно нажать на кнопку Подробно. Уже там будет отображена даже строка программы, в которой произошла ошибка 1С. Также можно перейти прямо в конфигуратор к этой строке.

Но пользователи об этом не знают.. И всегда присылают скриншот того первого окошка. Если присылают 🙂

Генерация исключения

Итак, мы рассматриваем ошибку 1С в программировании как способ/возможность программе сообщить пользователю о том, что она не может что-то сделать.

Пример. Нужно открыть файл. Но при открытии возможны ошибки 1С – например у пользователя нет доступа на чтение файла. Мы можем написать так:


Если Файл = Ложь Тогда
Сообщить(«Не удалось открыть файл»);
Иначе
//программа идет дальше, делаем что-то с файлом
КонецЕсли;

В данном примере мы учли, что файл может быть не открыт с помощью конструкции «Если».

Однако у данного примера есть очевидные минусы:

  • Таких вариантов может быть много (не откроется файл, не прочитается файл до конца, пользователь пьян, выключили электричество..)
  • Могут быть неучтенные варианты, про которые программист не подумал.

Поэтому в программировании принято использовать прием под названием «генерировать исключение» — то есть позволить ошибке 1С произойти.

Программа делает вид, что файл в любом случае откроется. Никаких «Если» не пишется. Если же что-то пойдет не так, то программа собственно и сообщит об ошибке 1С – ее выполнение прервется.

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

  • Язык 1С – команда открыть файл
  • Платформа 1С – команда открыть файл
  • Windows API – команда открыть файл
  • Программа на ассемблере – команда открыть файл
  • Опа! Файл не открывается!
  • Программа на ассемблере прервана!
  • Функция Windows API прервана!
  • Платформа 1С выполнение программы прервано!
  • Программа на языке 1С прервана!
  • Пользователь видит сообщение.

Вопрос: кто выводит тогда сообщение об ошибке 1С? Откуда оно берется?

Перехват и обработка исключения

Так мы подходим к следующему приему: перехват исключений, сгенерированных во время выполнения этой цепочки.

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

Пример. Обработаем исключение в языке 1С:
Попытка
Файл = ОткрытьФайл(ИмяФайла);
Строка = Файл.Прочитать();
Исключение
Сообщить(«Файл не удалось открыть: не существует или нет прав доступа»);
КонецПопытки;

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

Когда мы делаем это самостоятельно – мы можем и не сообщать пользователю ничего, а просто пойти по другому варианту выполнения программы.

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

Что будет, если не перехватить и не обработать ошибку 1С на нашем «верхнем» уровне? Тогда о ней сообщит следующий уровень ниже — платформа 1С. Как она это делает, мы только что говорили и смотрели на скриншоте.

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

Что будет, если Windows не отработает это? Вы наверняка это видели – компьютер зависнет или перезагрузится.

Вложенный перехват и транзакции

Как Вы думаете, какие сообщения увидит пользователь при выполнении данного примера?

Попытка
Попытка
ф = 1/0;
Исключение
Сообщить("Конкретная ошибка");
КонецПопытки;
Исключение
Сообщить("Общая ошибка");
КонецПопытки;

Верно! Сработает внутренний обработчик и сообщит «Конкретная ошибка», а внешний не сработает.

Однако с точки зрения программы здесь произошла ошибка 1С, хотя она и была отработана. Где-то там у себя в мозгах платформа запомнила – здесь была ошибка 1С.

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

НачатьТранзакцию();
//создали справочник 1, но на самом деле он не записался в базу данных
Спр1.Записать();
//создали справочник 2, но на самом деле он не записался в базу данных
Спр2.Записать();
ЗафиксироватьТранзакцию();
//эта команда записала в базу данных все, что было сделано начиная с ‘НачатьТранзакцию’

Функция ЗафиксироватьТранзакцию() может быть выполнена только в случае, если с момента вызова НачатьТранзакцию() не произошло ни одной ошибки 1С.

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

Непреднамеренные ошибки 1С

Итак, в программе 1С программистом может быть допущена ошибка 1С. В этом случае платформа 1С сообщит о ней.

В случае, если не удается понять, почему и когда такая ошибка 1С возникает, Вы можете использовать Попытка/Исключение, чтобы обработать ошибку 1С.

Также Попытка/Исключение можно использовать в случае, когда Вы хотели бы создать гарантированно безошибочный участок программы. Вы сможете быть уверены, что если даже ошибка 1С произойдет, то Вы ее отлавливаете и отрабатываете специальным образом.

Преднамеренные ошибки 1С

Вы можете в тексте программы делать вид что файл всегда откроется и число всегда поделится. Но использовать Попытка/Исключение как способ переключить программу на другой вариант исправления в случае, если такое произойдет. Или просто сообщить пользователю об ошибке 1С.

Собственный вызов ошибки 1С

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

Это можно сделать вот так:

Функция СделатьЧтото(Параметр)
Если Параметр = Неопределено Тогда
ВызватьИсключение «Ошибка в функции СделатьЧтото. Не указан параметр»;
КонецЕсли;
КонецФункции

Для чего это требуется? В случае, когда Вы создаете функцию, которой будете пользоваться во многих местах, а может будут пользоваться и другие – это красивый способ одновременно убить нескольких зайцев:

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

Более корректные способы сообщения об ошибке 1С

Обычно когда требуется сообщить что-то пользователю, используются .

Однако в типовых конфигурациях, таких как Бухгалтерия, Управление торговлей, УПП – есть специальная функция:
ОбщегоНазначения.СообщитьОбОшибке(«Текст»);

Ее плюсы:

  • Форма сообщения зависит от запущенного клиента
  • Записывает сведения в журнал регистрации
  • В некоторых конфигурациях реализована более красивая форма сообщения об ошибке 1С.

Анализ ошибок

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

В конфигураторе выберите пункт меню Администрирование/Журнал регистрации.

Нажмите кнопку Отбор (как на картинке). Установите отбор событий только по ошибкам 1С.

Журнал отобразит список происходивших ошибок. Кликните на строчку, чтобы рассмотреть конкретное сообщение подробнее.