День добрый.

Если мы находясь в форме документа через внешнюю обработку проводим этот же документ, то почему документ становится модифицированным?

Я внешнюю обработку открываю в модальном режиме и после этого модифицированность возвращаю обратно (до этого флаг модифицированности сохраняю в переменной), даже если я ставлю ЭтаФорма.Модифицированность = Ложь ничего не меняется, что-то потом сбрасывает ее.
Я полагаю, что движения документа уже изменены и платформа помечает форму как модифицированную, только непонятно как с этим бороться.

Я уж и делал после: ЭтотОбъект.Прочитать() и ЭтаФорма.Обновить()

Программа: УПП 1.3
---
ПроведениеУдалось = Ложь; надо перед попыткой поместить.
---
Добрый день

Скорее всего при проведении документа записи или обновлении отображения программно изменяются реквизиты документа или формы

причем если например реквизит1 содержит значение1 и программно в реквизит1 записывается тоже самое значение1 то модифицированность будет истина
---
Это я знаю, но у меня объект записан и я провожу его в транзакции, потом считываю нужные мне движения, потом откатываю транзакцию обратно и перезаписываю нужные мне наборы записей. Т.е у документа получаются измененные движения, но в чистом виде он не проводится.
---
При отмене транзакции "ВерсияДанных" не должна меняться, это верно... можете весь код транзакции показать?
---
```1c
    НачатьТранзакцию();

    Попытка
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
    ПроведениеУдалось = Истина;
    Исключение
    Сообщить(ОписаниеОшибки());
    ОтменитьТранзакцию();
    КонецПопытки;

    ПроведениеУдалось = Ложь;
    Если ПроведениеУдалось Тогда

    ДокументОбъект.Движения["Закупки"].Прочитать();
    ТЗЗакупки = ДокументОбъект.Движения["закупки"].Выгрузить();

    ДокументОбъект.Движения["Затраты"].Прочитать();
    ТЗЗатраты = ДокументОбъект.Движения["Затраты"].Выгрузить();

    ДокументОбъект.Движения["ЗаказыПоставщикам"].Прочитать();
    ТЗЗаказыПоставщикам = ДокументОбъект.Движения["ЗаказыПоставщикам"].Выгрузить();

    ОтменитьТранзакцию();

    НаборЗаписей = РегистрыНакопления["Закупки"].СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(ДокументОбъект.Ссылка);
    НаборЗаписей.Загрузить(ТЗЗакупки);
    НаборЗаписей.Записать();

    НаборЗаписей = РегистрыНакопления["Затраты"].СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(ДокументОбъект.Ссылка);
    НаборЗаписей.Загрузить(ТЗЗатраты);
    НаборЗаписей.Записать();

    НаборЗаписей = РегистрыНакопления["ЗаказыПоставщикам"].СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(ДокументОбъект.Ссылка);
    НаборЗаписей.Загрузить(ТЗЗаказыПоставщикам);
    НаборЗаписей.Записать();

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

И вот код - это точно рабочая версия? Или с какими-то правками для отладки?

```1c
    ПроведениеУдалось = Ложь;
    Если ПроведениеУдалось Тогда
```

это что?
---
это ошибка, исправил
---
Убрал эту ошибку и все заработало. УРА!
Спасибо.
---
Ага, получалось, что в попытке проведение проходило, а транзакция не отменялась.