Добрый день! Подскажите пожалуйста, почему если выношу код в общий модуль, то не происходит записи в регистр сведений?

Часть кода - вызываю общую процедуру

```1c
    //Запись в Регистр об изменении документа
    Если ЭтотОбъект.Проведен Тогда
    Проверка = Истина;
    ПроверкаНаИзменинеДокументов.ЗаписьОбИзменении(Проверка, ЭтотОбъект, Движения, Дата);
    КонецЕсли;
```

Сама процедура:

```1c
    Процедура ЗаписьОбИзменении(Проверка, ЭтотОбъект, Движения, Дата) Экспорт
    Если Проверка = Истина Тогда

    Движения.ИзменениеДокументов.Записывать = Истина;
    Движение = Движения.ИзменениеДокументов.Добавить();
    Движение.Период = Дата;
    Движение.СсылкаНаРедактируемыйДокумент = ЭтотОбъект.Ссылка;
    Движение.ДатаРедактирования = ТекущаяДата();
    Движение.КтоРедактировал = Справочники.Пользователи.НайтиПоНаименованию(ПользователиИнформационнойБазы.ТекущийПользователь());
    КонецЕсли;
    КонецПроцедуры
```

Никакой ошибки не выдаёт, однако записи в регистре не появляются. Если вставить тот же самый код, но в обработку проведения документа - все работает великолепно, в чём дело?
---
и вообще это делается не так. Не то место ПередЗаписью, чтобы добавлять движения.
Это решается так:

```1c
    Процедура ПередЗаписью(Отказ)
    ДополнительныеСвойства.Вставить("БылПроведен", ЭтотОбъект.Проведен);
    КонецПроцедуры

    Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    Перем БылПроведен;

    ДополнительныеСвойства.Свойство("БылПроведен", БылПроведен);
    Если БылПроведен = Истина Тогда
    // тут вполняем добавление движения. Можно и через общий модуль.
    КонецЕсли;

    КонецПроцедуры
```

Но это будет работать только при повторном проведении. При отмене проведения не сработает.
---
Часть кода - вызываю общую процедуру
А собственно, откуда эта процедура вызывается? Что то я сомневаюсь, что из обработчика проведения.
---
Процедура вызывается из "ПередЗаписью", так как производится проверка, был проведён документ или нет.
---
ПередЗаписью этот код работать не будет
---
Почему? Если создать процедуру в самом модуле документа и вызвать её в том же месте (ПередЗаписью) - всё работает, регистр заполняется..
---
во время первого проведення в ПередЗаписью ЭтотОбъект.Проведен будет Ложь.
---
Да, в этом то и соль, чтобы во время первого проведения запись в регистре не появлялась, а при последующих проведениях - появлялась. Однако запись в регистре ни при первом проведении, ни при третьем не появляется.
---
именно последующие перепроведения? А не отмена проведения и проведение. И у документа не установлено свойство "УдалениеДвижений" как "УдалятьАвтоматически".
Ну и соответственно в обработчике ОбработкаПроведения так же движения не очищаются.
---
Да это вообще должен быть регистр не подчиненный регистратору. Тут изначально не верный подход.
---
это уже не ко мне )
---
и вообще это делается не так. Не то место ПередЗаписью, чтобы добавлять движения.
Это решается так:

```1c
    Процедура ПередЗаписью(Отказ)
    ДополнительныеСвойства.Вставить("БылПроведен", ЭтотОбъект.Проведен);
    КонецПроцедуры

    Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    Перем БылПроведен;

    ДополнительныеСвойства.Свойство("БылПроведен", БылПроведен);
    Если БылПроведен = Истина Тогда
    // тут вполняем добавление движения. Можно и через общий модуль.
    КонецЕсли;

    КонецПроцедуры
```

Но это будет работать только при повторном проведении. При отмене проведения не сработает.
---
попробуйте добавить строку
```1c
    Движение.Записать();
```
 перед
```1c
    КонецЕсли;
```
---
Движение.Записать();
---
Метод Объекта не обнаружен (Записать) - ошибку выдаёт.
---
Я тоже попробую предложить вариант.

```1c
    Движения.ИзменениеДокументов.Записать();
```

Какой-то да сработает (мой)
---
К сожалению, не работает, выдаёт ошибку Поле Объектов (ИзменениеДокументов) не обнаружено.
---
Тогда у тебя вся процедура не работает))
---
Да, вся процедура не работает, если вписать ваш код.
---
Значит вписываете не туда

Если вдруг не понятно, то строку из (4) надо вставлять внутрь условия.