Имя: Пароль:
1C
1С v8
Запрос тормозит при выводе
0 RINCH
 
26.04.17
17:50
Здравствуйте, Товарищи программисты)

Зада: Раскрасить контрагентов на форме списка при определенном условии (Контрагентов очень много) так что бы не тормозила система... запрос рабочий , но тормозит.

Проблемы: не УПР формы,  "Оформление Строк" есть только при событие Получении данных, сделать через запрос так как в дальнейшем условие в запросе усложнится..

Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
    
    Запрос = Новый Запрос();
    Запрос.Текст =
            "ВЫБРАТЬ
            |    Контрагенты.Ссылка
            |ИЗ
            |    Справочник.Контрагенты КАК Контрагенты
            |ГДЕ
            |    Контрагенты.ЗапретОбслуживания = ИСТИНА";
            
            РезультатЗапроса = Запрос.Выполнить();          
            Выборка = РезультатЗапроса.Выбрать();
          
      
    Для каждого ОформлениеСтроки из ОформленияСтрок цикл
        спСписокПриВыводеСтроки(ЭтаФорма, Элемент, ОформлениеСтроки, ОформлениеСтроки.ДанныеСтроки);
        
               
     Выборка.Следующий();
        Если ОформлениеСтроки.ДанныеСтроки.Ссылка=Выборка.Ссылка  Тогда
    ОформлениеСтроки.ЦветФона= WebЦвета.Красный ;
      КонецЕсли;
                        
                        
    КонецЦикла;
КонецПроцедуры
1 Волшебник
 
модератор
26.04.17
17:51
а-ха-ха...
2 RINCH
 
26.04.17
17:52
(1) ?)
3 Волшебник
 
модератор
26.04.17
17:54
(2) Тут и так цикл, а ты делаешь запрос, потом цикл с проверкой на равно...

Добавь скрытую колонку ЗапретОбслуживания и сделай так:

Для каждого ОформлениеСтроки из ОформленияСтрок цикл
        спСписокПриВыводеСтроки(ЭтаФорма, Элемент, ОформлениеСтроки, ОформлениеСтроки.ДанныеСтроки);          
     Если ОформлениеСтроки.ДанныеСтроки.ЗапретОбслуживания   Тогда
        ОформлениеСтроки.ЦветФона= WebЦвета.Красный ;
    КонецЕсли;      
КонецЦикла;
4 apokrit
 
26.04.17
17:59
(3) Наступило время вредных советов? ;)
(0)
1)Нужно сначала перебрать все оформления строк и набить ссылки в массив.
2)В запросе добавить условие Ссылка В &РанееПолученныйМассив

Ну и как бы код вообще не рабочий - ни кто ведь не обещал что порядок строк в выборке будет соответствовать порядку строк в коллекции ОформленияСтрок.

Как вариант - можно например на шаге 1) набить оформления в соответствие с значением ссылки в качестве ключа, дальше обходить выборку и там по ключу искать нужное оформление строки для простановки оформления.
5 Неверный Параметр И
 
26.04.17
18:04
Второй заход на Запрос с выводом истина ?
6 Fragster
 
гуру
26.04.17
18:50
(4).1 удивительно, но совет совсем не вредный, работать будет наиболее быстро.
7 Vaflya
 
26.04.17
22:49
Насколько я понял это форма списка контрагентов, запросом берется реквизит из контрагента, вывод - достаточно в цикле перебора оформлений написать Если ...данныестроки.ссылка.запрет Тогда красный цвет и все
8 RINCH
 
27.04.17
05:12
(7) (6) (4) (3)

Да все оказалась гораздо проще ) Но с другим условием ваши советы пригодятся, Спасибо)
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан