Здравствуйте уважаемые программисты. Такой вопрос, мне нужно взять в условие ("Если") статус заказа клиента. К примеру: если статус заказа клиента на согласовании тогда....
Поэтому написал такой запрос в подписках на событие, чтобы получить этот статус: но он мне почему-то выдаёт пустое значение. Прошу помочь. Кстати статусы берут данные из перечисления

```1c
    Запрос2= Новый Запрос;
    Запрос2.Текст =
    "ВЫБРАТЬ
    | ЗаказКлиента.Статус как Статусы
    | ИЗ
    | Документ.ЗаказКлиента КАК ЗаказКлиента
    | ГДЕ
    | ЗаказКлиента.Ссылка = &ТекущийДокумент";
    Запрос2.УстановитьПараметр("ТекущийДокумент",Источник.Ссылка);

    Результат2 = Запрос2.Выполнить();
    Выборка=Результат2.Выбрать();
    Сообщить (Результат2);
```

А так выглядит сама процедура. Всё работает, кроме этой "радости"

```1c
    Процедура ПродажаТовараОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
    Запрос2= Новый Запрос;

    Запрос2.Текст =
    "ВЫБРАТЬ
    | ЗаказКлиента.Статус как Статусы
    |ИЗ
    | Документ.ЗаказКлиента КАК ЗаказКлиента
    |ГДЕ
    | ЗаказКлиента.Ссылка = &ТекущийДокумент";
    Запрос2.УстановитьПараметр("ТекущийДокумент",Источник.Ссылка);

    Результат2 = Запрос2.Выполнить();
    Выборка=Результат2.Выбрать();
    Сообщить (Результат2);

    Запрос= Новый Запрос;

    Запрос.Текст =
    "ВЫБРАТЬ
    | ПродажаТоваров.Номенклатура КАК Ном,
    | ПродажаТоваров.Количество КАК Кол
    |ИЗ
    | Документ.ЗаказКлиента.Товары КАК ПродажаТоваров
    |ГДЕ
    | ПродажаТоваров.Ссылка = &ТекущийДокумент";
    Запрос.УстановитьПараметр("ТекущийДокумент",Источник.Ссылка);

    Результат = Запрос.Выполнить();
    Выборка=Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
    ИмяТовара=Выборка.Ном;

    Запрос1= Новый Запрос;

    Запрос1.Текст ="
    | ВЫБРАТЬ
    | ЕСТЬNULL(СвободныеОстатки.ВНаличииОстаток, 0)- ЕСТЬNULL(СвободныеОстатки.ВРезервеСоСкладаОстаток, 0) КАК Колич,
    | Ном.Ссылка КАК Имя
    | ИЗ

    | Справочник.Номенклатура КАК Ном
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(, Номенклатура = &ТекущийТовар) КАК СвободныеОстатки
    | ПО Ном.Ссылка = СвободныеОстатки.Номенклатура
    | ГДЕ
    | Ном.Ссылка В(&ТекущийТовар)";

    Запрос1.УстановитьПараметр("ТекущийТовар",ИмяТовара);
    Результат1=Запрос1.Выполнить();

    Отбор= Результат1.Выбрать();
    Пока Отбор.Следующий() Цикл
    //Сообщить( Отбор.Имя) ;
    //Сообщить( Отбор.Колич) ;

    /////////////////////////////////////////////////////
    Товар=Справочники.Номенклатура.НайтиПоНаименованию(ИмяТовара).ПолучитьОбъект();///Нахожу тот товар в справочнике
    ИмяСвойства=ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("КоличествоТоваров"); ///Нахожу нужный доп реквизит в ПВХ
    Товар.Заблокировать();
    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("Свойство",ИмяСвойства);
    Массив = Товар.ДополнительныеРеквизиты.НайтиСтроки(ПараметрыОтбора);

    Если Массив.Количество() = 0 Тогда
    НовоеСвойство = Товар.ДополнительныеРеквизиты.Добавить();
    НовоеСвойство.Свойство = ИмяСвойства;
    НовоеСвойство.Значение = Отбор.Колич;
    ИначеЕсли Отбор.Колич=0 тогда Массив[0].Значение = ("0");
    иначе Массив[0].Значение = Отбор.Колич;
    КонецЕсли;
    Товар.Записать();

    КонецЦикла;
    КонецЦикла;

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

А сам код для этого: (отмечено на картинке). *Конечно подобный код подключен к другим событиям тоже.
---
```1c
    Запрос2= Новый Запрос;
    Запрос2.Текст =
    "ВЫБРАТЬ
    | ЗаказКлиента.Статус как Статусы
    | ИЗ
    | Документ.ЗаказКлиента КАК ЗаказКлиента
    | ГДЕ
    | ЗаказКлиента.Статус = &СтатусЗаказа
    ";
    Запрос2.УстановитьПараметр("СтатусЗаказа","Нужный статус");

    Результат2 = Запрос2.Выполнить();
    Выборка=Результат2.Выбрать();
    Сообщить (Результат2);
```
---
А если нужно перебрать все статусы, но с условием, то можно так :
Код
Запрос2= Новый Запрос;
 Запрос2.Текст =
    "ВЫБРАТЬ
    |  ЗаказКлиента.Статус как Статус
    |ЗаказКлиента.Ссылка как ссылка
    |  ИЗ
    |  Документ.ЗаказКлиента  КАК ЗаказКлиента
";
     Запрос2.УстановитьПараметр("СтатусЗаказа","Нужный статус");

   Результат2 = Запрос2.Выполнить();
   Выборка=Результат2.Выбрать();
    Пока Выборка.Следующий() Цикл
Если Выборка.Статус = "Нужны тебе статус" тогда
          ///выполняешь свое действие
           Иначе
           Если Выборка.Статус = "Нужный тебе статус2" тогда
                    ///выполняешь свое действие
                    Иначе
                    Если Выборка.Статус = "Нужный тебе статус3" тогда
                             ///выполняешь свое действие
                     конецЕсли;
            конецЕсли;
конецЕсли;
Показать полностью

[/code]
---
В консоли запросов какой результат получается у первого запроса?

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

в какой нибудь обработке просмотра реквизитов откройте нужный документ,
сделайте скрин и выложите его здесь.
---
а на самом деле он не пустой?
Сам реквизит: Документ.ЗаказКлиента.Статус
Вот этот реквизит ссылается(берет данные) из Перечисления.СтатусыЗаказовКлиентов
и там в значении 4 значения: не согласован, к обеспечению, к отгрузке и закрыт
---
Такой обработки у меня нет
---
народ вы чего тупите? у вас Источник это сам объект, со всеми реквизитами !!!!

 какие запросы, вот вам статус,

Источник.Статус --- !!!!
---
Скажите пожалуйста, как мне обратиться к этим статусам и взять эти данные? Допустим, мне нужно, чтобы если у документа статус в резерве, то (фунция). Как взять статус в условие?
---
```1c
    Запрос2= Новый Запрос;
    Запрос2.Текст =
    "ВЫБРАТЬ
    | ЗаказКлиента.Статус как Статусы
    | ИЗ
    | Документ.ЗаказКлиента КАК ЗаказКлиента
    | ГДЕ
    | ЗаказКлиента.Статус = &СтатусЗаказа
    ";
    Запрос2.УстановитьПараметр("СтатусЗаказа","Нужный статус");

    Результат2 = Запрос2.Выполнить();
    Выборка=Результат2.Выбрать();
    Сообщить (Результат2);
```
---
А если нужно перебрать все статусы, но с условием, то можно так :
Код
Запрос2= Новый Запрос;
 Запрос2.Текст =
    "ВЫБРАТЬ
    |  ЗаказКлиента.Статус как Статус
    |ЗаказКлиента.Ссылка как ссылка
    |  ИЗ
    |  Документ.ЗаказКлиента  КАК ЗаказКлиента
";
     Запрос2.УстановитьПараметр("СтатусЗаказа","Нужный статус");

   Результат2 = Запрос2.Выполнить();
   Выборка=Результат2.Выбрать();
    Пока Выборка.Следующий() Цикл
Если Выборка.Статус = "Нужны тебе статус" тогда
          ///выполняешь свое действие
           Иначе
           Если Выборка.Статус = "Нужный тебе статус2" тогда
                    ///выполняешь свое действие
                    Иначе
                    Если Выборка.Статус = "Нужный тебе статус3" тогда
                             ///выполняешь свое действие
                     конецЕсли;
            конецЕсли;
конецЕсли;
Показать полностью

[/code]