Транзакция подразумевает выполнение группы операций с условием, что либо выполнение всех операций завершается успешно, либо в случае завершения хотя бы одной из них с ошибкой выполнение всех операций отменяется. В контексте 1С:Предприятия транзакции как правило используются с операциями, которые изменяют состояние базы данных. Например, в одной транзакции может выполняться запись элемента справочника и запись информации в регистр сведений, со ссылкой на этот элемент справочника. В языке программирования 1С для работы с транзакциями используются следующие методы: НачатьТранзакцию(), ЗафиксироватьТранзакцию() и ОтменитьТранзакцию() Рассмотрим конкретный пример. Пусть у нас есть справочник Товары и регистр сведений Цена с измерением Товар, в котором хранятся цены товаров. И мы хотим создать новый товар в справочнике и сразу записать его цену в рамках одной транзакции. То есть если при записи товара или цены произойдет ошибка, ни товар ни цена записаны не будут. Сделать это можно при помощи следующего кода: &НаСервереБезКонтекста Процедура ВыполнитьТранзакциюНаСервере ( ) НачатьТранзакцию ( ) ; //записываем новый товар Товар = Справочники . Товары . СоздатьЭлемент ( ) ; Товар . Наименование = "Дырокол" ; Товар . Записать ( ) ; //записываем цену НаборЗаписей = РегистрыСведений . Цена . СоздатьНаборЗаписей ( ) ; НоваяЗапись = НаборЗаписей . Добавить ( ) ; НоваяЗапись . Период = ТекущаяДата ( ) ; НоваяЗапись . Товар = Товар . Ссылка ; НоваяЗапись . Сумма = 100 ; НаборЗаписей . Записать ( ) ; ЗафиксироватьТранзакцию ( ) ; КонецПроцедуры После выполнения этого кода мы увидим, что у нас в справочнике товаров появился дырокол, а в регистр сведений с ценами записалась его цена на текущую дату. А теперь давайте умышленно воспроизведем ошибку внутри транзакции. Для этого продублируем запись регистра сведений с тем же набором измерений (Товар) и периодом. Как известно платформа не даст записать в регистр сведений две записи с одинаковым набором измерений. &НаСервереБезКонтекста Процедура ВыполнитьТранзакциюНаСервере ( ) НачатьТранзакцию ( ) ; //записываем новый товар Товар = Справочники . Товары . СоздатьЭлемент ( ) ; Товар . Наименование = "Дырокол" ; Товар . Записать ( ) ; //записываем цену НаборЗаписей = РегистрыСведений . Цена . СоздатьНаборЗаписей ( ) ; НоваяЗапись = НаборЗаписей . Добавить ( ) ; НоваяЗапись . Период = ТекущаяДата ( ) ; НоваяЗапись . Товар = Товар . Ссылка ; НоваяЗапись . Сумма = 100 ; ЗаписьДубль = НаборЗаписей . Добавить ( ) ; ЗаписьДубль . Период = ТекущаяДата ( ) ; ЗаписьДубль . Товар = Товар . Ссылка ; ЗаписьДубль . Сумма = 100 ; НаборЗаписей . Записать ( ) ; ЗафиксироватьТранзакцию ( ) ; КонецПроцедуры при попытке выполнить этот код возникает ошибка Естественно, что ни нового товара ни записи с ценой мы после этого не обнаружим. Если нам надо в зависимости от каких-то условий отменить транзакцию, необходимо воспользоваться методом ОтменитьТранзакцию() . &НаСервереБезКонтекста Процедура ВыполнитьТранзакциюНаСервере ( ) НачатьТранзакцию ( ) ; //записываем новый товар Товар = Справочники . Товары . СоздатьЭлемент ( ) ; Товар . Наименование = "Дырокол" ; Товар . Записать ( ) ; //записываем цену НаборЗаписей = РегистрыСведений . Цена . СоздатьНаборЗаписей ( ) ; НоваяЗапись = НаборЗаписей . Добавить ( ) ; НоваяЗапись . Период = ТекущаяДата ( ) ; НоваяЗапись . Товар = Товар . Ссылка ; НоваяЗапись . Сумма = 100 ; НаборЗаписей . Записать ( ) ; Отказ = Истина ; Если Отказ Тогда ОтменитьТранзакцию ( ) ; Иначе ЗафиксироватьТранзакцию ( ) ; КонецЕсли ; КонецПроцедуры Вот таким образом, можно организовывать транзакции средствами встроенного языка 1С. Это самый примитивный вариант, который на практике используется очень редко, т.к. не очень красиво, когда выполнение кода завершается с показом системного сообщения об ошибке, которое далеко не всегда понятно пользователю. Как правило транзакции организуются совместно с конструкцией Попытка — Исключение , которая позволяет обработать ошибку и вывести понятное для пользователя сообщение. Смотрите также: Электронный учебник по программированию в 1С Рекомендации по изучению программирования 1С с нуля Игра "Кто хочет стать миллионером?" с вопросами на определенную тематику (язык программирования JavaScript, английские, немецкие, французские, испанские, португальские, нидерландские, итальянские слова, электробезопасность, промышленная безопасность, бокс и т.п.), написанная на 1С Программирование в 1С 8.3 с нуля — краткий самоучитель Комплексная подготовка программистов 1С:Предприятие 8.2 Сайты с уроками программирования и со справочниками Youtube-каналы с уроками программирования Сайты для обучения программированию Лекции и уроки