Поиск документов без структуры подчиненности

1. den_vrn 13 30.10.19 09:18 Сейчас в теме
Подскажите более оптимальное решение, пока что решил вопрос таким образом:


	СписокДокументов.Очистить();   // ТЧ Формы

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

Показать



Получается запрос в цикле, а это не по феншую 1С ))))))))
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. alex-l19041 8 30.10.19 09:52 Сейчас в теме
(1) как вариант: можно в цикле сформировать текст запроса с использованием "ОБЪЕДИНИТЬ" с параметрами &Заказ1, &Заказ2, и т.д.
2. VmvLer 30.10.19 09:20 Сейчас в теме
если синтаксис ок, то ,вроде, кроме удаления пустых строк в коде оптимизировать нечего.

пс: станут бить за запрос в цикле - терпи и давай сдачи
3. Smartpk 9 30.10.19 09:26 Сейчас в теме
Это легкий запрос, от того, что он в цикле ничего страшного не случится. Но можно закинуть всё в таблицу, эту таблицу установить в качестве виртуальной в запросе и соединится с полем заказ.
Pavel Rodinchenko; +1 Ответить
4. SlavaKron 30.10.19 09:27 Сейчас в теме
НайтиПоСсылкам как альтернатива.
6. lmnlmn 69 30.10.19 11:18 Сейчас в теме
Норм. Можно еще объявление запроса до цикла сделать, а в цикле только параметр устанавливать.
7. lmnlmn 69 30.10.19 12:02 Сейчас в теме
P.S. во втором запросе еще можно "ВЫБРАТЬ ПЕРВЫЕ 1" использовать
8. den_vrn 13 30.10.19 14:34 Сейчас в теме
Обрабатывается 1100 заказов
1 замер - код из 1 версии: 11 секунд

2 замер - добавил "ВЫБРАТЬ ПЕРВЫЕ 1" и сделал объявление запроса до цикла: 8 секунд

3 замер - ради интереса вернул объявление запроса в цикл: 8 секунд
Оставьте свое сообщение

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