Здравствуйте. В процедуре ПриЗаписи() документа в модуле объекта нужно записать еще один второй документ. Если во втором документе возникает Отказ, то и первый не запишется.
Попытка Исключение тут не работает . Кстати почему не работает ? Может быть из-за того, что при записи второго устанавливается "Отказ" ?
Как сделать так, чтобы первый документ всегда записался, в независимости от того, был ли отказ при записи второго документа ?
Попытка Исключение тут не работает . Кстати почему не работает ? Может быть из-за того, что при записи второго устанавливается "Отказ" ?
Как сделать так, чтобы первый документ всегда записался, в независимости от того, был ли отказ при записи второго документа ?
По теме из базы знаний
Найденные решения
(1)
Как сделать так, чтобы первый документ всегда записался, в независимости от того, был ли отказ при записи второго документа ?
Не создавать второй документ при проведении первого, а создавать его с помощью регламентного задания, например, чуть попозжа. Ну или просто запускать фоновое задание на создание документа при проведении первого - отдельный сеанс.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Как сделать так, чтобы первый документ всегда записался, в независимости от того, был ли отказ при записи второго документа ?
Не создавать второй документ при проведении первого, а создавать его с помощью регламентного задания, например, чуть попозжа. Ну или просто запускать фоновое задание на создание документа при проведении первого - отдельный сеанс.
(2) Не совсем так, думаю.
Если во втором случае произошло Исключение - тогда да, транзакция поломана, и первый документ тоже не сохранится.
А вот программный Отказ записи второго документа никак не должен отразиться на записи первого. Если грамотно построить вызовы.
Если во втором случае произошло Исключение - тогда да, транзакция поломана, и первый документ тоже не сохранится.
А вот программный Отказ записи второго документа никак не должен отразиться на записи первого. Если грамотно построить вызовы.
видимо транзакция срабатывает-с.
если надо записать первый в любом случае, то делайте не в событии ПриЗаписи(), а в событии ПослеЗаписи()
ПриЗаписи() идет проверка, и если надо, вложенные проверки записи множества объектов, и если хотя бы одна не прошла, вся транзакция откатывается.
видимо так...
----------------------------------
если очень хочется ПриЗаписи(), то надо возможность записи второго объекта проверить ДО вызова метода Записать() второго объекта.
если надо записать первый в любом случае, то делайте не в событии ПриЗаписи(), а в событии ПослеЗаписи()
ПриЗаписи() идет проверка, и если надо, вложенные проверки записи множества объектов, и если хотя бы одна не прошла, вся транзакция откатывается.
видимо так...
----------------------------------
если очень хочется ПриЗаписи(), то надо возможность записи второго объекта проверить ДО вызова метода Записать() второго объекта.
(9)
PS в любом случае, надо копать талмуд на тему транзакций...
когда она "открывается" и когда "закрывается"
вот например:
надо понять что будет если последняя строчка не сработает....
кстати, есть встроенная команда ТранзакцияАктивна()
надо проверить что она говорит во время события ПриЗаписи()
но это всё завтра, ща надо спать...
ПослеЗаписи()
что-то я перегнул... отдыхать видимо надо больше....
PS в любом случае, надо копать талмуд на тему транзакций...
когда она "открывается" и когда "закрывается"
вот например:
Модуль объекта ПриЗаписи(Отказ)
Вызывается после записи объекта в базу данных, но до окончания транзакции записи.
Ссылка уже есть и можно записать в базу данных дополнительные данные на основании текущего объекта, используя эту ссылку.
Например, при записи создавать другой документ, содержащий реквизит ссылку на записываемый.
Вызывается после записи объекта в базу данных, но до окончания транзакции записи.
Ссылка уже есть и можно записать в базу данных дополнительные данные на основании текущего объекта, используя эту ссылку.
Например, при записи создавать другой документ, содержащий реквизит ссылку на записываемый.
надо понять что будет если последняя строчка не сработает....
кстати, есть встроенная команда ТранзакцияАктивна()
надо проверить что она говорит во время события ПриЗаписи()
но это всё завтра, ща надо спать...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот