Поиск Расходного ордера на товары по Распоряжению

1. BARDER 25 01.01.23 13:01 Сейчас в теме
Привет всем.
у меня КА2.4 Включил ордерный склад что бы сделать сборку товаров.
Немного не понимаю почему у меня Запрос не видит Ордер
Запрос формирую так:

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


Он в Выборку не заходит, ордер имеется с распоряжением который передается в СсылкаНаДокумент

СсылкаНаДокумент содержит Заказ клиента в виде ссылки, как положено
Распоряжение имеет тип - Определяемый тип - может в этом проблема, я не правильно запрос составил?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. BARDER 25 01.01.23 13:49 Сейчас в теме
Этот запрос я в Консоль пихал, выбирал этот заказ, он мне ордер показывает, тоесть как то я не правильно параметр передаю походу
3. BARDER 25 01.01.23 14:15 Сейчас в теме
Так тоже не помогает:
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	РасходныйОрдерНаТоварыТоварыПоРаспоряжениям.Распоряжение КАК Распоряжение,
		|	РасходныйОрдерНаТоварыТоварыПоРаспоряжениям.Ссылка КАК Ссылка
		|ИЗ
		|	Документ.РасходныйОрдерНаТовары.ТоварыПоРаспоряжениям КАК РасходныйОрдерНаТоварыТоварыПоРаспоряжениям
		|ГДЕ
		|	ТИПЗНАЧЕНИЯ(РасходныйОрдерНаТоварыТоварыПоРаспоряжениям.Распоряжение) = ТИП(Документ.ЗаказКлиента)
		|	И РасходныйОрдерНаТоварыТоварыПоРаспоряжениям.Распоряжение.Ссылка = &Распоряжение";
	
	Запрос.УстановитьПараметр("Распоряжение", СсылкаНаДокумент);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Док = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
	КонецЦикла;
Показать
4. Verdad 84 01.01.23 16:54 Сейчас в теме
Здравствуйте! Я не крупный специалист, но попробуйте через Сообщить(СсылкаНаДокумент) посмотреть, формируется ли само значение для отбора.
5. BARDER 25 01.01.23 17:10 Сейчас в теме
Сделал запрос без условий, почему то он не видит этих расходных ордеоров:
Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	РасходныйОрдерНаТоварыТоварыПоРаспоряжениям.Ссылка КАК Ссылка
		|ИЗ
		|	Документ.РасходныйОрдерНаТовары.ТоварыПоРаспоряжениям КАК РасходныйОрдерНаТоварыТоварыПоРаспоряжениям";
	
	//Запрос.УстановитьПараметр("Распоряжение", СсылкаНаДокумент);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Док = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
	КонецЦикла;
Показать
6. BARDER 25 01.01.23 17:26 Сейчас в теме
понял такую вещь, у меня в Заказе Клиента программно проставляется Отгрузка по позициям, и ордер не успевает создаваться и уже я лезу в этот ордер.
Нужно какую то задержку делать что ли.
Посоветуйте плз что нибудь.

Код:
Процедура ОбработатьДокументИзТЗ(Докс)
    х=1;
	Док = СсылкаНаДокумент.ПолучитьОбъект(); 
	Если Докс = Неопределено Тогда
	    ДокПродажи = Документы.РеализацияТоваровУслуг.СоздатьДокумент(); 
		ДокПродажи.Дата = Док.ДатаОтгрузки; 
		ДокПродажи.Склад = Док.Склад;            
		ДокПродажи.ХозяйственнаяОперация = Док.ХозяйственнаяОперация;            
		ДокПродажи.РеализацияПоЗаказам = Истина;
		ДокПродажи.ЗаказКлиента = СсылкаНаДокумент; 
		ДокПродажи.Организация = Док.Организация; 
		ДокПродажи.Партнер = Док.Партнер; 
		ДокПродажи.Контрагент = Док.Контрагент; 
		ДокПродажи.Соглашение = Док.Соглашение; 
		ДокПродажи.Договор = Док.Договор; 
		ДокПродажи.Валюта = Док.Валюта; 
		ДокПродажи.ВалютаВзаиморасчетов = Док.Соглашение.ВалютаВзаиморасчетов;	
		ДокПродажи.ФормаОплаты = Док.ФормаОплаты; 
		ДокПродажи.НалогообложениеНДС = Док.НалогообложениеНДС; 
		ДокПродажи.ПорядокОплаты = Док.ПорядокОплаты; 
		ДокПродажи.Комментарий = "Создан обработкой Сбор заказов"; 
		ДокПродажи.Статус = Перечисления.СтатусыРеализацийТоваровУслуг.Отгружено;
		ДокПродажи.СпособДоставки = Перечисления.СпособыДоставки.ДоКлиента;
	Иначе   
		ДокПродажи = Докс.ПолучитьОбъект();  
		Если ДокПродажи.ПометкаУдаления Тогда
		   ДокПродажи.ПометкаУдаления = Ложь;
		КонецЕсли;
	   	ДокПродажи.Товары.Очистить();
	КонецЕсли;
		
	Для каждого Товар Из Док.Товары Цикл
		Попытка
		Если ТЗ[Товар.НомерСтроки - 1].План = ТЗ[Товар.НомерСтроки - 1].Количество Тогда
			ТоварРеал = ДокПродажи.Товары.Добавить();
			ТоварРеал.Номенклатура = Товар.Номенклатура;
		    ТоварРеал.КоличествоУпаковок = Товар.КоличествоУпаковок;
		   	ТоварРеал.Количество = Товар.Количество;
		   	ТоварРеал.Цена = Товар.Цена;
		   	ТоварРеал.Сумма = Товар.Сумма;
		   	ТоварРеал.СтавкаНДС = Товар.СтавкаНДС;
		   	ТоварРеал.СуммаНДС = Товар.СуммаНДС;
		   	ТоварРеал.ВидЦены = Товар.ВидЦены;
		   	ТоварРеал.Упаковка = Товар.Упаковка;
		   	ТоварРеал.Склад = Товар.Склад;  
		   	ТоварРеал.КодСтроки = Товар.КодСтроки;  
		   	ТоварРеал.КлючСвязи = Товар.КлючСвязи;  
			ТоварРеал.ЗаказКлиента = СсылкаНаДокумент; 
		    Товар.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.Отгрузить;
		ИначеЕсли ТЗ[Товар.НомерСтроки - 1].План > ТЗ[Товар.НомерСтроки - 1].Количество И ТЗ[Товар.НомерСтроки - 1].Количество > 0 Тогда
			ТоварРеал = ДокПродажи.Товары.Добавить();
			ТоварРеал.Номенклатура = Товар.Номенклатура;
		    ТоварРеал.КоличествоУпаковок = ТЗ[Товар.НомерСтроки - 1].Количество;
		   	ТоварРеал.Количество = ТЗ[Товар.НомерСтроки - 1].Количество;
		   	ТоварРеал.Цена = Товар.Цена;
		   	ТоварРеал.Сумма = Товар.Цена * ТЗ[Товар.НомерСтроки - 1].Количество;
		   	ТоварРеал.СтавкаНДС = Товар.СтавкаНДС;
		   	ТоварРеал.СуммаНДС = Товар.СуммаНДС;
		   	ТоварРеал.ВидЦены = Товар.ВидЦены;
		   	ТоварРеал.Упаковка = Товар.Упаковка;
		   	ТоварРеал.Склад = Товар.Склад;  
		   	ТоварРеал.КодСтроки = Товар.КодСтроки;  
		   	ТоварРеал.КлючСвязи = Товар.КлючСвязи;  
			ТоварРеал.ЗаказКлиента = СсылкаНаДокумент; 
		    Товар.Количество = ТЗ[Товар.НомерСтроки - 1].Количество;
			Товар.КоличествоУпаковок = ТЗ[Товар.НомерСтроки - 1].Количество; 
			Товар.Сумма = Товар.Количество * Товар.Цена;
			НоваяСтрока = Док.Товары.Добавить();
            ЗаполнитьЗначенияСвойств(НоваяСтрока,Товар);
            НоваяСтрока.Количество = ТЗ[Товар.НомерСтроки - 1].План - ТЗ[Товар.НомерСтроки - 1].Количество;
		    НоваяСтрока.КоличествоУпаковок = ТЗ[Товар.НомерСтроки - 1].План - ТЗ[Товар.НомерСтроки - 1].Количество;
			Товар.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.Отгрузить;    
			НоваяСтрока.Сумма = НоваяСтрока.Количество * НоваяСтрока.Цена;
		    
		КонецЕсли;
		Исключение	
	    КонецПопытки;
	КонецЦикла;  
	ДокПродажи.СуммаДокумента       = ДокПродажи.Товары.Итог("СуммаСНДС");
	ДокПродажи.СуммаВзаиморасчетов  = ДокПродажи.Товары.Итог("СуммаВзаиморасчетов");
	
	Док.Записать(РежимЗаписиДокумента.Проведение);
        // После проведения Док так как там позиции со статусом "Отгрузить" создается автоматически Расходный ордер на товары
        //Тут бы вставить таймер.
	ДокПродажи.Записать();     
	НайтиИОбработатьРасходныйОрдерНаТовары(СсылкаНаДокумент);
КонецПроцедуры

Процедура НайтиИОбработатьРасходныйОрдерНаТовары(СсылкаНаДокумент)
	
   Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	РасходныйОрдерНаТоварыТоварыПоРаспоряжениям.Ссылка КАК Ссылка
		|ИЗ
		|	Документ.РасходныйОрдерНаТовары.ТоварыПоРаспоряжениям КАК РасходныйОрдерНаТоварыТоварыПоРаспоряжениям
		|ГДЕ
		|	РасходныйОрдерНаТоварыТоварыПоРаспоряжениям.Распоряжение = &Распоряжение";
	
	Запрос.УстановитьПараметр("Распоряжение", СсылкаНаДокумент);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Док = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
	КонецЦикла;
	      
	Док.Статус = Перечисления.СтатусыРасходныхОрдеров.Отгружен;
	Док.Записать(РежимЗаписиДокумента.Проведение);
КонецПроцедуры
Показать
8. user856012 14 01.01.23 17:57 Сейчас в теме
(6)
Нужно какую то задержку делать что ли.
Посоветуйте плз что нибудь.
Выбрать наиболее подходящий из вариантов: https://infostart.ru/public/706204/
7. Verdad 84 01.01.23 17:40 Сейчас в теме
9. user613191_olgargor 19.01.23 16:59 Сейчас в теме
а почему нельзя подождать полного исполнения кода? Чтобы все везде записалось? А потом выполнять ваш запрос? Задержки делать - это некрасиво. И не факт что вам поможет. Надо просто создавать ордер прежде, чем читать его. Как это сделать - вам надо копать свой код, т.к. логику того , что вы делаете знаете только Вы. Ваши слова: "Этот запрос я в Консоль пихал, выбирал этот заказ, он мне ордер показывает" - так вот после чего вы пихали это в консоль? После каких действий в базе? Вот те же самые действия надо завершить и программно и только после этого читать записи.
10. user613191_olgargor 19.01.23 18:46 Сейчас в теме
Начнем с началаЖ СсылкаНаДокумент - это какой тип данных?
Оставьте свое сообщение

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