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С имеют несколько уровней – во первых сообщения об ошибках 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С.

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

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

Обязательно сделайте резервную копию вашей базы данных перед тем, как проводить описанные ниже работы!

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

Итак, давайте рассмотрим поэтапно исправление внутренней ошибки компонента dbeng8:

1. Тестируем и исправляем систему средствами конфигуратора

Чтобы сделать эту операцию, нужно войти в систему через режим «конфигуратор». Сделать это очень просто. Нужно выбрать строчку «Администрирование» и найти там «Тестирование и исправление».

Вам откроется новое окно, в нем устанавливаем галочки как на фото снизу и подтверждаем действие, нажимая кнопку «Выполнить».

У вас есть вопрос, нужна помощь консультанта?

По завершению операции, программа уведомит вас о проведенной работе.

2. Исправляем ошибку с помощью chdbfl.exe

Эта программа также помогает справиться с внутренней ошибкой компонента dbeng8, и по своему принципу схожа с указанным выше вариантом. Запускается она очень просто. Нужно найти в программной папке файл chdbfl.exe и запустить его.

Такая проблема, как Ошибка формата потока, в 1С 8.3 встречается достаточно часто. Рассмотрим, как исправить данную ошибку.

Что же такое ошибка формата потока в 1с 8.3?

Такое происходит в следующих ситуациях:

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

Получите 267 видеоуроков по 1С бесплатно:

Исправление

  1. Как правило, для решения данной проблемы достаточно почистить временные файлы в системе. .
  2. Если не помогло, но есть возможность попасть в конфигуратор, запустите .
  3. Если доступа в конфигуратор нет, и база тестовая — воспользуйтесь , которая располагается в папке программы.
  4. Если вышеперечисленные методы не помогают, но запускается режим 1С предприятие, выгрузите данные в новую базу с помощью обработки « «. Однако при этом возможны потери данных.
  5. Обновление . Еще одной причиной может стать наличие активных сеансов пользователей с разной версией клиентской части платформы 1С. То есть, например, в базе работает пользователь с платформой 1С 8.3.5.1517, а пытается подключиться другой, с версией 8.3.5.1444.

Если это не помогло — есть более изощренные способы решения данной проблемы. Например, с помощью HEX-редактора. Если Вам необходима квалифицированная помощь программистов 1С, обратитесь к нам! Подробности на странице

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

Из-за чего возникают ошибки в базе 1с?

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

Виды ошибок в базе 1с

Ошибок в 1с может быть великое множество и происходить они могут по самым разным причинам. В данной статье мы не будем рассматривать все возможные ошибки 1с, мы постараемся выделить так называемые основные "виды" встречающихся ошибок. Мы условно называем их "виды" так как содержание ошибки которое показывает Вам программа как правило всегда различное, а суть часто бывает одинаковая. Итак выделим самые часто встречающиеся ошибки в базе 1с :

  1. Ошибка формата потока
  2. Поле объекта не обнаружено
  3. Метод объекта не обнаружен
  4. Недостаточно памяти
  5. Ошибки связанные с таблицами SQL (актуальны для серверов 1с которые работают на реляционных базах данных, например MySQL)
  6. Ошибка доступа 1с

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

ошибка формата потока 1с

Поле объекта не обнаружено

Поле объекта не обнаружено

Индекс находится за границами массива

Ошибка 1с

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

Данная ошибка очень часто проявляется при ошибочном чтении последовательности команд из байт-кода в потоке, поэтому она и называется ошибка формата потока 1с . Любая транзакция будет прервана если в следствии ее исполнения возникает данная ошибка. Подобные ошибки требуют немедленного исправления так как они могут навредить работе системы 1С Предприятие. Данные ошибки могут исправить только квалифицированные программисты 1с.

Поле объекта не обнаружено

Если система 1с выдает вам сообщение об ошибке с текстом "Поле объекта не обнаружено ", то это означает следующее, что ошибка возникает в ситуации когда программа пытается обратится к реквизиту (полю) объекта которого просто не существует. Данная ошибка носит характер "ошибки времени выполнения" если она возникает в 1С Предприятии. Ошибки этого рода также исправить могут только программисты.

Индекс находится за границами массива

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

Метод объекта не обнаружен

Подобная ошибка происходит тогда когда система пытается обратится к методу (функции) объекта, описание которого (которой) не существует в коде. Ошибки такого типа могут исправляются программистами.

Недостаточно памяти в 1с

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

Возможное исправление ошибки 1с «Недостаточно памяти»

Ошибка кроется в ограниченном выделении адресной памяти операционной системой под ПО (программное обеспечение).
Ограничения для адресной памяти по умолчанию составляют:

  • для 32 битной системы – 2гб
  • для 64 битной – 4 гб

Для того, что бы увеличить размер адресной памяти Вам необходимо сделать следующие действия:

  1. Запустите командную строку: “Пуск – Выполнить” – введите CMD и нажмите клавишу enter
  2. Теперь в командной строке введите текст без кавычек “bcdedit /set increaseuserva 3072″, где 3072 – размер желаемой адресной памяти
  3. Перезагрузите Вашу операционную систему (компьютер)
  4. Попробуйте выполнить то действие в 1С, которое не получалось ранее и приводило к ошибке.
  5. Если всё получилось и операция повторяется не так часто – рекомендуется вернуть размер адресной памяти к значению по умолчанию с помощью команды “bcdedit /deletevalue increaseuserva”

Ошибки связанные с таблицами SQL

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

Ошибка доступа в 1с

Данная ошибка происходит тогда когда пользователь пытается выполнить какое-либо действие которое запрещено правами доступа (роли). Именно поэтому система выдает ошибку доступа в 1с. Роли настраиваются в конфигураторе программистом.

Не получилось исправить ошибку в 1с?

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