|

Ведение базы данных известных ошибок для предупреждения возникновения проблем в программе 1С


Содержание:

1. Работа с ошибками в программе 1С

2. Обработка ошибок транзакций в 1С

Работа с ошибками в программе 1С

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

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

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

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

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

Обработка ошибок транзакций в 1С

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

«Записано = Ложь;

Пока Не Записано Цикл

    НачатьТранзакцию();

    Попытка

        Данные.Записать();

        ЗафиксироватьТранзакцию();

        Записано = Истина;

    Исключение

        ОтменитьТранзакцию();

    КонецПопытки;

КонецЦикла;»

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

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

Чтобы использовать, всё же, метод «НачатьТранзакцию()» – следует проверить, что транзакционный счётчик стоит в положении нуля.

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

Ниже представлены программные коды 1С для всех методов, описанных выше:

«НачатьТранзакцию();        // Начало транзакции – счетчик становится равным 1

НачатьТранзакцию();        // Счетчик увеличивается на 1 и становится равным 2

ЗафиксироватьТранзакцию(); // Счетчик уменьшается на 1 и становится равным 1

ЗафиксироватьТранзакцию(); // Фиксация транзакции»

В случае, когда значение транзакционного счётчика превышает единицу и произошло обращение к методу «ОтменитьТранзакцию()», тогда счётчик и станет на единицу меньше, и сработает признак, запрещающий фиксацию результатов на всю данную транзакцию. После чего, при крайнем обращении к методу по фиксации, при значении транзакционного счётчика, которое равно единице, – выполнится отмена транзакции. Это отображено здесь:

«НачатьТранзакцию();        // Начало транзакции – счетчик становится равным 1

НачатьТранзакцию();        // Счетчик увеличивается на 1 и становится равным 2

ОтменитьТранзакцию();      // Счетчик уменьшается на 1 и становится равным 1, устанавливается признак отмены транзакции.

ЗафиксироватьТранзакцию(); // Фактическая отмена транзакции»

При такой же ошибке, однако, когда транзакционный счётчик имеет значение более единицы – вся транзакция зафиксируется.

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

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

Выводы:

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

Специалист компании ООО “Кодерлайн”,

Туренко Лев


Помогла ли вам статья? Оставьте свой комментарий:

Добавить комментарий

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

Блог про 1С:Предприятие

Copyright © 2024 TopKoder

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