Транзакции. База
Первое, с чего хотелось бы начать и следовало бы заучить начинающим программистам - это связка транзакций и обработки исключений:
#std783
1.2. Начало транзакции и ее фиксация (отмена) должны происходить в контексте одного метода
Правильно
Процедура ЗаписатьДанныеВИБ()
НачатьТранзакцию();
Попытка
... // чтение или запись данных
ДокументОбъект.Записать()
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
... // дополнительные действия по обработке исключения
КонецПопытки;
КонецПроцедуры
И ещё несколько важных пунктов, нарушение которых встречал на практике от менее опытных коллег:
1.4.1. Не стоит усложнять код, явно используя метод НачатьТранзакцию, когда кроме записи объекта другие действия c базой данных не делаются
1.4.4. При обработке исключения, если транзакция все еще активна, например, исключение возникло во вложенной транзакции, нельзя обращаться к базе данных, так как это приведет к исключению «В этой транзакции уже происходили ошибки». При этом нужно учитывать, что обращение к базе данных может быть неявным, например, для получения представления ссылки.
2.1.1. Если с точки зрения бизнес-логики действия могут быть выполнены по отдельности, то их в общем случае не следует объединять в одну транзакцию.
2.1.2. Исключением из п.2.1.1 могут быть случаи, когда с целью оптимизации несколько несвязанных объектов обрабатываются в рамках одной транзакции.
2.3. В рамках транзакции нужно стремиться выполнять минимум действий
P.S. Полное описание стандарта по ссылке в начале поста
#ЧёПоСтандартам #std783