Как более оптимизированно сделать оформление строка на форме списка?

1. Vanch90 28.03.17 15:55 Сейчас в теме
Собственно есть документ всем известный Заказ покупателя, нужно строку выделять зеленым цветом, если этот документ участвует в документе "Сборка". Документ "Сборка" ни в каких движениях не участвует.

Собственно, получается только писать запрос. Работает довольно быстро, но каждый день растет большое количество заказов.
Как стоит оптимизировать или как лучше реализовать?
Процедура СписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Заказ", ДанныеСтроки.Ссылка);
	Запрос.Текст =       "ВЫБРАТЬ
	                |	СборкаДокументыСборки.Ссылка
	                |ИЗ
	                |	Документ.Сборка.ДокументыСборки КАК СборкаДокументыСборки
	                |ГДЕ
	                |	СборкаДокументыСборки.Ссылка.ПометкаУдаления = ЛОЖЬ
	                |	И СборкаДокументыСборки.ЗаказПокупателя = &Заказ";
	Результат = Запрос.Выполнить();
	Если НЕ Результат.Пустой() ИЛИ ДанныеСтроки.Ссылка._Самовывоз Тогда
		ОформлениеСтроки.ЦветФона = WebЦвета.СветлоЗеленый;
	КонецЕсли;
КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. japopov 68 28.03.17 16:08 Сейчас в теме
(1) Значительно быстрее будет делать запрос не к каждому документу Заказ отдельно, а всем скопом получить, и потом только обрабатывать таблицу значений. Конкретная реализация зависит от:
а) управляемые формы или обычные (какая конфигурация?)
б) если управляемые, то динамический список, или?
3. DrBlack 23 28.03.17 16:13 Сейчас в теме
1) используйте процедура СписокПриПолученииДанных, при выводе строки забудьте как страшный сон
2) можно в форме списка объявить переменную формы "пКэш", тип которой указать как "Соответствие", тогда в процедуре "ПриПолученииДанных" при обходе офрмлений, пытаться по ссылке на документ узнать его соответствие (например булево - типа выделять или нет), если ответ неопределено, тогда ссылку в массив, который в запрос
4. Vanch90 29.03.17 08:35 Сейчас в теме
6. ditp 91 29.03.17 09:39 Сейчас в теме
(4) пример через СписокПриПолученииДанных:
http://forum.infostart.ru/forum9/topic169130/ в 7, 16.
7. ditp 91 29.03.17 09:52 Сейчас в теме
(4)(5) ну и запрос я бы переписал для этого как-то так
ВЫБРАТЬ РАЗЛИЧНЫЕ
	СДС.ЗаказПокупателя
ПОМЕСТИТЬ ТЗ
ИЗ
	Документ.Сборка.ДокументыСборки КАК СДС ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Сборка КАК С ПО СДС.Ссылка = С.Ссылка
ГДЕ
	НЕ С.ПометкаУдаления	И СДС.ЗаказПокупателя В(&мЗаказы)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	З.Ссылка
ИЗ
	Документ.ЗаказПокупателя КАК З ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ ПО (З._Самовывоз ИЛИ ТЗ.ЗаказПокупателя = З.Ссылка)
ГДЕ
	З.Ссылка В(&мЗаказы)
Показать
8. kolya_tlt 86 29.03.17 09:55 Сейчас в теме
(7) временная таблица тут не нужна
9. ditp 91 29.03.17 09:58 Сейчас в теме
(8)пожалуй таки да, вложенный запрос будет не хуже.
10. kolya_tlt 86 29.03.17 11:17 Сейчас в теме
(9) вложенный тут тоже не нужен :)
11. ditp 91 29.03.17 11:18 Сейчас в теме
(10) с удовольствием посмотрю на ваш вариант.
12. kolya_tlt 86 29.03.17 11:20 Сейчас в теме
5. kolya_tlt 86 29.03.17 08:41 Сейчас в теме
(3) (4) можно индекс еще добавить к полю ЗаказПокупателя, тогда рост числа документов никак не скажется. также запрос стоит переписать на внутреннее соединение с основной таблицей вместо строки "СборкаДокументыСборки.Ссылка.ПометкаУдаления = ЛОЖЬ"
13. Vanch90 29.03.17 14:23 Сейчас в теме
Вот так сделал, быстро работает гораздо
https://helpf.pro/faq/view/1162.html
Оставьте свое сообщение

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