Имя: Пароль:
1C
1С v8
Разминка для мозгов УТ 10.3
0 volfy
 
16.07.13
11:56
Есть конфа, ут 10.3 на обычных формах, нужно в списке заказов клиентов выделить цветом уже закрытые заказы, запрос есть но для  каждой строки это делать очень ущербно быстродействию, подскажите есть ли вариант увеличить быстродействие и как это сделать?
1 H A D G E H O G s
 
16.07.13
11:57
Есть.
Искать в поиске.
2 H A D G E H O G s
 
16.07.13
11:57
P.s. Мозги там непричем.
3 volfy
 
16.07.13
11:57
Ну серьёзно =)
4 zhig75
 
16.07.13
11:58
В списке процедура ПриВыводеСтроки юзай ОформлениеСтроки.
5 volfy
 
16.07.13
11:59
Натолкни на мысль =)
6 Ненавижу 1С
 
гуру
16.07.13
11:59
делай для набора в ПриПолученииДанных, а не каждой строки
либо храни эту информацию предрасчитанной
7 volfy
 
16.07.13
11:59
Функция ЗаказЗакрыт(ДокСсылка)
       //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
   //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

   Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    ЕСТЬNULL(ЗаказыПокупателейОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
       |    ЕСТЬNULL(РасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток, 0) КАК СуммаВзаиморасчетовОстаток
       |ИЗ
       |    РегистрНакопления.ЗаказыПокупателей.Остатки(, ЗаказПокупателя = &ЗаказПокупателя) КАК ЗаказыПокупателейОстатки
       |        ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКонтрагентами.Остатки(, Сделка = &ЗаказПокупателя) КАК РасчетыСКонтрагентамиОстатки
       |        ПО ЗаказыПокупателейОстатки.ЗаказПокупателя = РасчетыСКонтрагентамиОстатки.Сделка";

   Запрос.УстановитьПараметр("ЗаказПокупателя", ДокСсылка);

   Результат = Запрос.Выполнить();

   ВыборкаДетальныеЗаписи = Результат.Выбрать();

   Если ВыборкаДетальныеЗаписи.Следующий() Тогда
       Возврат Ложь;
   Иначе
       Возврат Истина;
   КонецЕсли;
КонецФункции

Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
   // Вставить содержимое обработчика.
   Для Каждого СтрокаСписка Из ОформленияСтрок Цикл
       Если СтрокаСписка.ДанныеСтроки.Ссылка.Проведен И ЗаказЗакрыт(СтрокаСписка.ДанныеСтроки.Ссылка) Тогда
           СтрокаСписка.ЦветТекста = WebЦвета.СветлоСерый;
           //.ЦветФона = WebЦвета.СветлоГрифельноСерый;
       КонецЕсли;
   КонецЦикла;
КонецПроцедуры




НЕ ЭФФЕКТИВНО
8 H A D G E H O G s
 
16.07.13
12:00
СтрокаСписка.ДанныеСтроки.Ссылка.Проведен

Зло
9 Ненавижу 1С
 
гуру
16.07.13
12:00
(7) конечно не эффективно, у тебя запрос в цикле
10 volfy
 
16.07.13
12:00
Многовато точек?
11 H A D G E H O G s
 
16.07.13
12:01
12 volfy
 
16.07.13
12:01
Вот хороший пендаль =)
14 Eugeneer
 
16.07.13
12:02
Вообще все делается элементарн ос помощью условного оформления. Как два пальца.
15 Ненавижу 1С
 
гуру
16.07.13
12:02
(13) ты о себе в третьем лице?
16 H A D G E H O G s
 
модератор
16.07.13
12:03
Eugeneer - предупреждение.
Реклама по согласованию с ВР.
17 Alex S D
 
16.07.13
12:03
(15) ты отстал от жизни, за Маню на мисте троллят его подчиненные уже
18 volfy
 
16.07.13
12:03
Обычные формы =)
19 volfy
 
16.07.13
12:03
Хорош ссориться =)
20 ДенисЧ
 
16.07.13
12:05
ПРи получении данных.
ЗАпрос по всему списку сразу из ОформленийСтрок.
21 H A D G E H O G s
 
модератор
16.07.13
12:05
(18) "Не пытайся согнуть ложку, Нео, это - невозможно."

Не пытайся донести до Евгения Шекина эти простые истины, его триггер уже съэрреагировал на слова "быстродействие списка".
22 zhig75
 
16.07.13
12:10
В ФормеСписка.

Процедура СписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
       Если ДанныеСтроки.закрыт Тогда
       ОформлениеСтроки.ЦветФона = Новый Цвет(255,224,114);
   КонецЕсли;
КонецПроцедуры

Оно?
23 floody
 
16.07.13
12:10
[code]Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
   
   // Соответствие создается для заполнения остатков в строках табличного поля
   СоответствиеСсылок = Новый Соответствие;
   
   // Заполнение параметра - массива значений ссылками на отображаемые строки табличного поля
   СсылкиМассив = Новый Массив;
   Для каждого ОформлениеСтроки из ОформленияСтрок Цикл
       
       Если ТипЗнч(ОформлениеСтроки.ДанныеСтроки.Ссылка) = Тип("ДокументСсылка.ЗаказПокупателя") Тогда
       
           СсылкиМассив.Добавить(ОформлениеСтроки.ДанныеСтроки.Ссылка);
           СоответствиеСсылок.Вставить(ОформлениеСтроки.ДанныеСтроки.Ссылка, ОформлениеСтроки);    
       
       КонецЕсли;
       
   КонецЦикла;
   
   ЗапросДанные = Новый Запрос();
   ЗапросДанные.Текст =
   "ВЫБРАТЬ
   |    ЗакрытиеЗаказовПокупателейЗаказы.ЗаказПокупателя.Ссылка КАК Ссылка
   |ИЗ
   |    Документ.ЗакрытиеЗаказовПокупателей.Заказы КАК ЗакрытиеЗаказовПокупателейЗаказы
   |ГДЕ
   |    ЗакрытиеЗаказовПокупателейЗаказы.ЗаказПокупателя В(&СсылкиМассив)
   |СГРУППИРОВАТЬ ПО
   |    ЗакрытиеЗаказовПокупателейЗаказы.ЗаказПокупателя.Ссылка";
   
   ЗапросДанные.УстановитьПараметр("СсылкиМассив", СсылкиМассив);
   
   Результат = ЗапросДанные.Выполнить();
   Выборка = Результат.Выбрать();
   
   Пока Выборка.Следующий() Цикл
       
       ОформлениеСтроки=СоответствиеСсылок.Получить(Выборка.Ссылка);
       ОформлениеСтроки.ЦветФона=WebЦвета.СеребристоСерый;
       
   КонецЦикла;

КонецПроцедуры[/code]
24 floody
 
16.07.13
12:11
как эти [code] юзать? вроде по мануалу делал
25 Csar
 
16.07.13
12:15
(24) вместо code пиши 1с
26 volfy
 
16.07.13
14:35
Всем  спасибо =) + 10 к карме