В форме документа Производство прописала следующий код:

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

    &НаСервере
    Функция ПроверкаСтатуса(Ингредиенты)
    Статус = Перечисления.СтатусыПроизводства.Ожидает;
    Просмотр = Ложь;

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

    Стр = Новый Структура("Статус, Просмотр", Статус, Просмотр);
    Возврат Стр;
    КонецФункции
```

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

Интересный моментик: код работает на помеченных на удаление объектах, а на остальных нет
---
если нет далее логики изменения статуса, то долно отрабатывать в случае "двойной" записи из формы не закрывая форму документа.
Не тот обработчик использовали. В запись пойдет то, что указано в ТекущийОбъект. А правите только Объект формы.
Если этот код должен срабатывать не только из формы, то вносить его надо в обработчик ПередЗаписью в модуле объекта.
---
&НаСервере
Функция ПроверкаСтатуса(СтарСтатус, Ингредиенты)
 Статус = СтарСтатус;
 Просмотр = Ложь;

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

 Стр = Новый Структура("Статус, Просмотр", Статус, Просмотр);
 Возврат Стр;
КонецФункции

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
 Структура = ПроверкаСтатуса(Объект.Статус, Объект.Ингредиенты);
 ТекущийОбъект.Статус = Структура.Статус;

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

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

 Стр = Новый Структура("Статус, Просмотр", Статус, Просмотр);
 Возврат Стр;
КонецФункции

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
 Структура = ПроверкаСтатуса(Объект.Статус, Объект.Ингредиенты);
 ТекущийОбъект.Статус = Структура.Статус;

 Если Структура.Просмотр = "Да" Тогда
  Элементы.Статус.ТолькоПросмотр = Истина;
 Иначе
  Элементы.Статус.ТолькоПросмотр = Ложь;
 КонецЕсли;
КонецПроцедуры
---
Вторая строчка второго метода ни о чем не говорит?
---
ну так если выполняется условие, то я меняю это значение в блоке ЕСЛИ. и итоговое значение уже передаю обратно в первый метод

Ради проверки даже удалила эту строку. Ничего не изменилось
---
А вот нельзя исправлять исходный код. Теперь никому непонятно, что же там было. А было там примерно следующее:
А = 1;
Если Б=2 И А=1 Тогда
...
---
нет, я убрала условие из ЕСЛИ, но логика осталась абсолютно такой же. ваш комментарий не решает проблему
---
А разве я собирался решать твою проблему? Я говорил о том, что в коде заранее избыточная фигня написана.
---
я с вами на "ты" не переходила, не грубите
---
Сообщение было скрыто модератором.