Статусы заказов в УТ 11.4 (Проблема с получением из запроса)

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

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

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


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

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

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

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

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


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

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

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

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


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

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

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

КонецПроцедуры
Показать



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

   Результат2 = Запрос2.Выполнить();     
   Выборка=Результат2.Выбрать();
   Сообщить (Результат2);
Показать
Nefilimus; +1 Ответить
10. ranis888 104 25.03.19 08:27 Сейчас в теме
А если нужно перебрать все статусы, но с условием, то можно так :
Код
Запрос2= Новый Запрос;
 Запрос2.Текст = 
    "ВЫБРАТЬ
    |  ЗаказКлиента.Статус как Статус
    |ЗаказКлиента.Ссылка как ссылка
    |  ИЗ                                                                
    |  Документ.ЗаказКлиента  КАК ЗаказКлиента 
";
     Запрос2.УстановитьПараметр("СтатусЗаказа","Нужный статус");

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


[/code]
Nefilimus; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. m_gin 46 22.03.19 09:48 Сейчас в теме
В консоли запросов какой результат получается у первого запроса?

а вообще
три запроса явный перебор
одним можно сделать
3. Nefilimus 75 22.03.19 16:37 Сейчас в теме
(2)
В консоли запросов какой результат получается у первого запроса?

Пустой статус выдает
4. m_gin 46 22.03.19 16:53 Сейчас в теме
(3) а на самом деле он не пустой?
может быть наименование реквизита не то?
и есть еще какой-то реквизит, где хранится нужный вам статус.

в какой нибудь обработке просмотра реквизитов откройте нужный документ,
сделайте скрин и выложите его здесь.
5. Nefilimus 75 22.03.19 18:50 Сейчас в теме
(4)
а на самом деле он не пустой?

Сам реквизит: Документ.ЗаказКлиента.Статус
Вот этот реквизит ссылается(берет данные) из Перечисления.СтатусыЗаказовКлиентов
и там в значении 4 значения: не согласован, к обеспечению, к отгрузке и закрыт
6. Nefilimus 75 22.03.19 18:51 Сейчас в теме
Такой обработки у меня нет
7. soft_wind 22.03.19 19:18 Сейчас в теме
народ вы чего тупите? у вас Источник это сам объект, со всеми реквизитами !!!!

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

Источник.Статус --- !!!!
ranis888; +1 Ответить
8. Nefilimus 75 22.03.19 23:41 Сейчас в теме
(7) Скажите пожалуйста, как мне обратиться к этим статусам и взять эти данные? Допустим, мне нужно, чтобы если у документа статус в резерве, то (фунция). Как взять статус в условие?
9. ranis888 104 25.03.19 08:20 Сейчас в теме
Запрос2= Новый Запрос;
 Запрос2.Текст = 
    "ВЫБРАТЬ
    |  ЗаказКлиента.Статус как Статусы
    |  ИЗ                                                                
    |  Документ.ЗаказКлиента  КАК ЗаказКлиента 
    |  ГДЕ
    |     ЗаказКлиента.Статус = &СтатусЗаказа
";
     Запрос2.УстановитьПараметр("СтатусЗаказа","Нужный статус");

   Результат2 = Запрос2.Выполнить();     
   Выборка=Результат2.Выбрать();
   Сообщить (Результат2);
Показать
Nefilimus; +1 Ответить
10. ranis888 104 25.03.19 08:27 Сейчас в теме
А если нужно перебрать все статусы, но с условием, то можно так :
Код
Запрос2= Новый Запрос;
 Запрос2.Текст = 
    "ВЫБРАТЬ
    |  ЗаказКлиента.Статус как Статус
    |ЗаказКлиента.Ссылка как ссылка
    |  ИЗ                                                                
    |  Документ.ЗаказКлиента  КАК ЗаказКлиента 
";
     Запрос2.УстановитьПараметр("СтатусЗаказа","Нужный статус");

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


[/code]
Nefilimus; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот