Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Как правильно расскрасить? (число прочтений - 1764 )
Karambol
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 4
Зарегистрирован: 07. Июля 2008
Как правильно расскрасить?
07. Июля 2008 :: 08:23
Печать  
Всем добрый день! Только начинаю изучать 1С++ и formex. Возникла следующая задача: есть справочник, 17000 элементов. Делаю прямой запрос и выгружаю результат этого запроса в Таблицу Значений, которая имитирует форму списка справочника. Задача в следующем: необходимо организовать расскраску строк Таблицы Значений в зависимости от параметров данного элемента справочника.

Сделал так:

ТЗ1 = RS.ВыполнитьИнструкцию(ТекстЗапроса);
ТЗ1.Выгрузить(ТЗ);                                    
ТЗ.ВидимостьКолонки("Цвет",0,);
Расскрасить();

Процедура Расскрасить() 
     ТЗ.ВыбратьСтроки();
     Пока ТЗ.ПолучитьСтроку() = 1 Цикл
           Если (ТЗ.Элемент.ФлВажныйIP = 1) И (ТЗ.Элемент.ФлВажныйМонтаж = 0) И (ОтборНаправление = Перечисление._НаправлениеДеятельности.IP) Тогда
                 ТЗ.Цвет = глРаскрасить(,,,110,200,240,,);
           ИначеЕсли (ТЗ.Элемент.ФлВажныйМонтаж = 1) И (ТЗ.Элемент.ФлВажныйIP = 0) И (ОтборНаправление = Перечисление._НаправлениеДеятельности.Монтаж) Тогда
                 ТЗ.Цвет = глРаскрасить(,,,125,203,184,,);
           ИначеЕсли (ТЗ.Элемент.ФлВажныйМонтаж = 1) И (ТЗ.Элемент.ФлВажныйIP = 1) Тогда
                 ТЗ.Цвет = глРаскрасить(,,,255,67,155,,);
           ИначеЕсли (ТЗ.Элемент.СрочныйДляМонтажа = 1) И (ОтборНаправление = Перечисление._НаправлениеДеятельности.Монтаж) Тогда
                 ТЗ.Цвет = глРаскрасить(,,,255,0,0,,);
           Иначе            
                 ТЗ.Цвет = глРаскрасить(,,,255,255,255,,);
           КонецЕсли;
     КонецЦикла;
КонецПроцедуры

Подскажите, как сделать правильно?
  
Наверх
 
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Как правильно расскрасить?
Ответ #1 - 07. Июля 2008 :: 10:21
Печать  
документацию почитай, и конфу Formex_demo (infosart) посмотри вопрос отпадет сразу
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
Karambol
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 4
Зарегистрирован: 07. Июля 2008
Re: Как правильно расскрасить?
Ответ #2 - 08. Июля 2008 :: 02:46
Печать  
Посмотрел демо-конфигурацию. В принципе, у меня раскраска Таблицы Значения выполнена аналогичным способом как и там. Но почему-то там ТЗ размером 10тыс строк расскрашивается за пару секунд, а у меня очень долго. Почему такое может быть? Для примера приведу мой код и код из демо-конфигурации.
Мой код:

     ТЗ.ВыбратьСтроки();         
      Пока ТЗ.ПолучитьСтроку() = 1 Цикл       
           ТЗ.Цвет = "BRUSH["+ПолучитьЦвет(255,67,155)+"]";
               КонецЦикла;

Код из демо-конфигурации:

Для инд =1 по 20000 Цикл
     Табл1.НоваяСтрока();
     Табл1.Число = инд;
     Табл1.Строка = Формат(инд,"ЧП");
     Табл1.Раскраска = ?(инд%2 = 0,"","BRUSH["+ПолучитьЦвет(0,128,128)+"]COUNT[2]");
КонецЦикла;
  
Наверх
 
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Как правильно расскрасить?
Ответ #3 - 08. Июля 2008 :: 02:53
Печать  
сравни замер производительности, в какой строке кода тормоза
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать