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

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

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


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

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

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

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

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)