Описание встроенного языка системы 1С Предприятие


Процедуры работы с транзакциями


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

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

Для начала транзакции используется процедура НачатьТранзацию. Для фиксации сделанных в процессе выполнения изменений применяется процеду­ра ЗафиксироватьТранзакцию. Для отмены изменений, сделанных в процес­се выполнения транзакции — процедура ОтменитьТранзакцию. Таким обра­зом, все действия с базой данных, выполняемые внутри скобок: НачатьТранзакцию — ЗафиксироватьТранзацию собственно и являются транзакцией.

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

Замечание. В Модуле документа (при проведении документов) в предопреде­ленных процедурах ОбработкаПроведения и ОбработкаУдаленияПроведения система сама по умолчанию выполня­ет все действия через транзакцию, поэтому никаких специальных дейст­вий в этих предопределенных процедурах предпринимать не нужно.

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

При обработке транзакции (в том числе в Модуле документа) не следует использовать элементы интерактивного управления (например, операторы Предупреждение, Вопрос, ВвестиЧисло и т. п.), т. к. в этом случае при от­крытой транзакции система ожидает отклика пользователя, а это может препятствовать нормальной работе других пользователей (в результате документы у всех остальных пользователей в этот момент могут не проводиться). Если в конфигурации необходимо при проведении документа выдавать пользователю некоторые сообщения, то следует использовать операторы Сообщить или Состояние.



Содержание раздела