Всем доброго времени года
Помогите начинающему

есть потребность завершать этапы производства в ERP программно, то есть автоматически.

Вот таким не сложным кодом устанавливаю статус документа ЭтапПроизводства2_2 в состояние "Завершен".

ЭтапОбъект = Этап.ПолучитьОбъект();
 ЗавершениеЭтапаВозможно = ЭтапОбъект.УстановитьСтатус("Завершен", Неопределено);

 Если ЗавершениеЭтапаВозможно Тогда

  Попытка

   ЭтапОбъект.Записать(РежимЗаписиДокумента.Проведение);

  Исключение

  КонецПопытки;

 КонецЕсли;

По отладке видно, что нужный статус устанавливается. Объект перечитывал, статус установлен.

Но если потом войти в документ этапа, там будет прежний статус

Подскажите куда копать?
---
Решил проблему.
Нужно немного доработать процедуру ОбработатьДокументОтложенно

Она находится в модуле менеджера документ ЭтпПроизводства2_2
В ней есть участок кода ограниченный НачатьТранзакцию() и ЗавершитьТранзакцию()
ближе к концу вставил вот такой код

```1c
    Если ДокументОбъект.УстановитьСтатус("Завершен", Неопределено) Тогда
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
    КонецЕсли;
```

И все, если этап производства можно закрывать, он закроется

ниже вес код процедуры:

```1c
    Процедура TW_ДоработкиОбработатьДокументОтложенно(Задание, ПропуститьЗадание, ДополнительныеДанные)

    УстановитьПривилегированныйРежим(Истина);

    Ссылка = Задание.ЭтапПроизводства;
    ДанныеОпераций = Документы.ПроизводственнаяОперация2_2.ДанныеВыполненныхОпераций(Ссылка);

    ОшибкаУстановкиБлокировки = Ложь;
    ТребуетсяЗаполнитьПоОперациям = Ложь;
    НачатьТранзакцию();
    Попытка

    ДанныеЭтапа = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "Распоряжение,ПартияПроизводства");

    ОшибкаУстановкиБлокировки = Истина;
    Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("Документ.ЭтапПроизводства2_2");
    ЭлементБлокировки.УстановитьЗначение("Распоряжение", ДанныеЭтапа.Распоряжение);
    ЭлементБлокировки.УстановитьЗначение("ПартияПроизводства", ДанныеЭтапа.ПартияПроизводства);
    ЭлементБлокировки.УстановитьЗначение("Ссылка", Ссылка);
    Блокировка.Заблокировать();
    ОшибкаУстановкиБлокировки = Ложь;

    Если Задание.ЗаполнитьПоОперациям И ТребуетсяОтразитьВыполнениеОпераций(Ссылка) Тогда

    ОшибкаУстановкиБлокировки = Истина;
    ЗаблокироватьДанныеДляРедактирования(Ссылка);
    ОшибкаУстановкиБлокировки = Ложь;

    ТребуетсяЗаполнитьПоОперациям = Истина;

    ДокументОбъект = Ссылка.ПолучитьОбъект();
    ДокументОбъект.ЗаполнитьПоОперациям(ДанныеОпераций);

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

    Если ДокументОбъект.УстановитьСтатус("Завершен", Неопределено) Тогда
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
    КонецЕсли;

    КонецЕсли;

    ЗафиксироватьТранзакцию();

    Исключение

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

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

    ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());

    КонецПопытки;

    Если Задание.ОбновитьСостояние Тогда
    РегистрыСведений.СостоянияЭтаповПроизводства.ОбновитьСостояниеОпераций(Ссылка);
    КонецЕсли;

    ПродолжитьВызов(Задание, ПропуститьЗадание, ДополнительныеДанные);
    КонецПроцедуры
```
---
```1c
    Попытка

    ЭтапОбъект.Записать(РежимЗаписиДокумента.Проведение);

    Исключение

    КонецПопытки;

    КонецЕсли
```
;

видимо попытка в исключение падает
---
Решил проблему.
Нужно немного доработать процедуру ОбработатьДокументОтложенно

Она находится в модуле менеджера документ ЭтпПроизводства2_2
В ней есть участок кода ограниченный НачатьТранзакцию() и ЗавершитьТранзакцию()
ближе к концу вставил вот такой код

```1c
    Если ДокументОбъект.УстановитьСтатус("Завершен", Неопределено) Тогда
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
    КонецЕсли;
```

И все, если этап производства можно закрывать, он закроется

ниже вес код процедуры:

```1c
    Процедура TW_ДоработкиОбработатьДокументОтложенно(Задание, ПропуститьЗадание, ДополнительныеДанные)

    УстановитьПривилегированныйРежим(Истина);

    Ссылка = Задание.ЭтапПроизводства;
    ДанныеОпераций = Документы.ПроизводственнаяОперация2_2.ДанныеВыполненныхОпераций(Ссылка);

    ОшибкаУстановкиБлокировки = Ложь;
    ТребуетсяЗаполнитьПоОперациям = Ложь;
    НачатьТранзакцию();
    Попытка

    ДанныеЭтапа = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "Распоряжение,ПартияПроизводства");

    ОшибкаУстановкиБлокировки = Истина;
    Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить("Документ.ЭтапПроизводства2_2");
    ЭлементБлокировки.УстановитьЗначение("Распоряжение", ДанныеЭтапа.Распоряжение);
    ЭлементБлокировки.УстановитьЗначение("ПартияПроизводства", ДанныеЭтапа.ПартияПроизводства);
    ЭлементБлокировки.УстановитьЗначение("Ссылка", Ссылка);
    Блокировка.Заблокировать();
    ОшибкаУстановкиБлокировки = Ложь;

    Если Задание.ЗаполнитьПоОперациям И ТребуетсяОтразитьВыполнениеОпераций(Ссылка) Тогда

    ОшибкаУстановкиБлокировки = Истина;
    ЗаблокироватьДанныеДляРедактирования(Ссылка);
    ОшибкаУстановкиБлокировки = Ложь;

    ТребуетсяЗаполнитьПоОперациям = Истина;

    ДокументОбъект = Ссылка.ПолучитьОбъект();
    ДокументОбъект.ЗаполнитьПоОперациям(ДанныеОпераций);

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

    Если ДокументОбъект.УстановитьСтатус("Завершен", Неопределено) Тогда
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
    КонецЕсли;

    КонецЕсли;

    ЗафиксироватьТранзакцию();

    Исключение

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

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

    ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());

    КонецПопытки;

    Если Задание.ОбновитьСостояние Тогда
    РегистрыСведений.СостоянияЭтаповПроизводства.ОбновитьСостояниеОпераций(Ссылка);
    КонецЕсли;

    ПродолжитьВызов(Задание, ПропуститьЗадание, ДополнительныеДанные);
    КонецПроцедуры
```