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

```1c
    Процедура ПриЗаписи(Источник, Отказ) Экспорт
    Отказ = ПроверкаНекоторыхУсловий(Источник.Ссылка);
    ЗаписатьВРегистрСведений(Источник.Ссылка, Отказ, "Проверка некоторых условий");
    КонецПроцедуры

    Процедура ЗаписатьВРегистрСведений(Ссылка, Отказ, Комментарий=")
    МенеджерЗаписи = РегистрыСведений.Результаты.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.Период = ТекущаяДата();
    МенеджерЗаписи.Объект = Ссылка;
    МенеджерЗаписи.Отказ = Отказ;
    МенеджерЗаписи.Комментарий = Комментарий;
    МенеджерЗаписи.Записать();
    КонецПроцедуры
```

Вопрос: почему если Отказ=Истина, то в регистре сведений Результаты ничего не сохраняется?

Может быть, при Отказ=Истина происходит что-то вроде отмены транзакции и то, что было записано процедурой ЗаписатьВРегистрСведений, на самом деле не сохраняется? Если да, то как это обойти и, всё-таки, сохранить информацию о неуспешном результате проверки?
---
Опыт "старших" товарищей -- Фоновые задания:

```1c
    Процедура ПриЗаписи(Источник, Отказ) Экспорт
    Отказ = ПроверкаНекоторыхУсловий(Источник.Ссылка);

    Параметры = новый Массив;
    Параметры.Добавить(Источник.Ссылка);
    Параметры.Добавить(Отказ);
    Параметры.Добавить("Проверка некоторых условий");
    ФоновыеЗадания.Выполнить("ИмяОбщегоМодуля.ЗаписатьВРегистрСведений", Параметры);
    КонецПроцедуры

    Процедура ЗаписатьВРегистрСведений(Ссылка, Отказ, Комментарий=") Экспорт
    МенеджерЗаписи = РегистрыСведений.Результаты.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.Период = ТекущаяДата();
    МенеджерЗаписи.Объект = Ссылка;
    МенеджерЗаписи.Отказ = Отказ;
    МенеджерЗаписи.Комментарий = Комментарий;
    МенеджерЗаписи.Записать();
    КонецПроцедуры
```
---
Думаю надо не отказ использовать, а реквизит ЕстьОшибка и если он в истине то и заполнить реквизит комментарий или реквизит описание ошибки, заодно и послать уведомление о факте ошибки пользователю. Но тогда запись состоится.
---
Но тогда запись состоится. -- Это, как раз, не подходит.
---
Запись в регистр "Результаты" происходит в транзакции, которую вы отменяете. Поэтому ничего не сохраняется. Чтобы сохранить результат, нужно написать

```1c
    Процедура ПриЗаписи(Источник, Отказ) Экспорт
    Отказ = ПроверкаНекоторыхУсловий(Источник.Ссылка);
    КонецПроцедуры

    /// В том месте, где вызываете запись в регистр
    Отказ = Ложь;
    ОписаниеОшибки = ";
    Попытка
    НаборЗаписей.Записать();
    Исключение
    Отказ = Истина;
    ОписаниеОшибки = ОписаниеОшибки();
    КонецПопытки;

    МенеджерЗаписи = РегистрыСведений.Результаты.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.Период = ТекущаяДата();
    МенеджерЗаписи.Объект = Ссылка;
    МенеджерЗаписи.Отказ = Отказ;
    МенеджерЗаписи.Комментарий = ОписаниеОшибки;
    МенеджерЗаписи.Записать();
```
---
Обработчики событий вызываются внутри транзакции. Вместо вашего регистра "Результаты" используйте ЗаписьЖурналаРегистрации() для сохранения дополнительной информации.
---
используйте ЗаписьЖурналаРегистрации() -- Это единственный способ? Очень не хочется "захламлять" журнал.
---
```1c
    /// В том месте, где вызываете запись в регистр
    Отказ = Ложь;
    ОписаниеОшибки = ";
    Попытка
    НаборЗаписей.Записать();
    Исключение
    Отказ = Истина;
    ОписаниеОшибки = ";
    КонецПопытки;

    МенеджерЗаписи = РегистрыСведений.Результаты.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.Период = ТекущаяДата();
    МенеджерЗаписи.Объект = Ссылка;
    МенеджерЗаписи.Отказ = Отказ;
    МенеджерЗаписи.Комментарий = ОписаниеОшибки;
    МенеджерЗаписи.Записать();
```

Вот это вот не понятно.
---
Опыт "старших" товарищей -- Фоновые задания:

```1c
    Процедура ПриЗаписи(Источник, Отказ) Экспорт
    Отказ = ПроверкаНекоторыхУсловий(Источник.Ссылка);

    Параметры = новый Массив;
    Параметры.Добавить(Источник.Ссылка);
    Параметры.Добавить(Отказ);
    Параметры.Добавить("Проверка некоторых условий");
    ФоновыеЗадания.Выполнить("ИмяОбщегоМодуля.ЗаписатьВРегистрСведений", Параметры);
    КонецПроцедуры

    Процедура ЗаписатьВРегистрСведений(Ссылка, Отказ, Комментарий=") Экспорт
    МенеджерЗаписи = РегистрыСведений.Результаты.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.Период = ТекущаяДата();
    МенеджерЗаписи.Объект = Ссылка;
    МенеджерЗаписи.Отказ = Отказ;
    МенеджерЗаписи.Комментарий = Комментарий;
    МенеджерЗаписи.Записать();
    КонецПроцедуры
```
---
А регистр случаем не подчинен регистратору?
---
Регистр сведений независимый