|
v7: План раскраски. | ☑ | ||
---|---|---|---|---|
0
Eeakie
27.02.14
✎
15:03
|
Добрый день.
В справочнике висят функции на раскраску строк по определенным условиям. Форма начала подтормаживать - решил переделать раскраску. Не очень понял как работать в Formex_ПланРаскраски. На этот реквизит надо функцию вешать? Предположим есть условие А и условие Б. Если условие А выполняется - строка красится в красный, если условие Б - синий. Как это реализовать через "новый" план раскраски? |
|||
1
Ёпрст
27.02.14
✎
15:05
|
(0)
План раскраски Описание Для ускорения и упрощения работы раскраски таблиц в компоненту с версии 2.0.5.85 введен функционал плана раскраски таблицы. Для его активизации необходимо вызвать метод ИспользоватьПланРаскраски() объекта Сервис с параметром 1 (соответсвенно, для отключения и перехода на старый принцип раскраски надо вызвать тот же метод, но с параметром 0). По умолчанию функционал плана раскраски отключен и работает старая методика раскраски. Для реализации раскраски по новому функционалу плана раскраски, необходимо добавить в раскрашиваемую таблицу колонку с заголовком "FormEx_ПланРаскраски" (без кавычек, регистронезависимо). Колонка может располагаться в любом месте таблицы. Содержимое этой колонки задает план раскраски таблицы, основанный на тех же макросах, которые описаны в части "Раскраска таблиц". При этом макросы COUNT и INDENT не обрабатываются. В плане раскраски каждая ячейка текущей строки определяется круглыми скобками. В плане учитываются как видимые, так и невидимые колонки. Макросы раскраски надо помещать в места, соответсвующие смене раскраски. Несколько примеров помогу лучше понять этот принцип. Пример плана раскраски "()()()(BRUSH[255])()()(BRUSH[NONE)" - обозначает, что начиная с четвертой колонки (включительно) цвет фона ячеек устанавливается красным, а с седьмо раскраска фона отключается и все остальные колонки не раскрашиваются; "(BRUSH_S[255])" - обозначается, что вся строка, когда она становится текущей, подсвечивается красным фоном. ©formex.als |
|||
2
Eeakie
27.02.14
✎
15:39
|
(1) Да Вы, батенька, издеваетесь ;) Читал это уже. Притом от Вас же, только на другом ресурсе. А перед этим в СП...
|
|||
3
Eeakie
27.02.14
✎
15:41
|
Предвижу следующий вопрос: "И что тут непонятно?".
Ну неужели тяжело написать: 1. Делаешь реквизит; 2. Вешаешь на него функцию; 3. В функции проверяешь каждое условие и красишь как угодно. |
|||
4
povar
27.02.14
✎
15:42
|
(3) нахрена тогда вопрос было задавать ? если сам все знаешь ?
|
|||
5
Ёпрст
27.02.14
✎
15:43
|
(3) И ?
ни разу не понял твоей проблемы.. в формулу функция, которая возвращает строку "со скобочками" по условию.. и привет. |
|||
6
Azverin
27.02.14
✎
15:45
|
(0) Процедура *Списорк*ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
Если ДанныеСтроки["Количество"] > 0 Тогда ОформлениеСтроки.ЦветФона = WebЦвета.Хаки; Иначе ОформлениеСтроки.ЦветФона = WebЦвета.НейтральноАквамариновый; КонецЕсли; |
|||
7
Ёпрст
27.02.14
✎
15:45
|
(6) у автора клюшки..
да и в снеговике, кошернее красить в ПриПолученииДанных, имхо |
|||
8
Azverin
27.02.14
✎
15:46
|
(7) упс, не углядел.
учту) |
|||
9
Eeakie
27.02.14
✎
15:49
|
В (3) чисто интуитивно написал, а оно заработало...
Теперь встал вопрос об "убыстрении" отрисовки. Что-то я разницы не заметил... |
|||
10
Ёпрст
27.02.14
✎
15:50
|
(9) разница есть.. + нам отсюда не видно, что в функции у тебя.
|
|||
11
Ёпрст
27.02.14
✎
15:53
|
Да и.. раскраска может и не так влиять, как твои условия в функции.. мот ты там расчет останков для каждой строки вычисляешь или еще чего, нам отсюда не видно
|
|||
12
Eeakie
27.02.14
✎
15:53
|
Если фМусор = 1 Тогда
Если Мусор = 1 Тогда Возврат "(BRUSH[" + глПолучитьЦвет(255, 175, 175) + "])"; КонецЕсли; Иначе Если ПустоеЗначение(Товар.Ориентир) = 1 Тогда Возврат ""; ИначеЕсли ПустоеЗначение(Товар.ПараметрЗагрузкиЦены) = 1 Тогда Возврат ""; ИначеЕсли ТекущаяДата() - ДатаИзм > 90 Тогда Возврат ""; КонецЕсли; Возврат "(BRUSH[" + глПолучитьЦвет(175, 255, 175) + "])"; КонецЕсли; |
|||
13
Ёпрст
27.02.14
✎
15:55
|
а товар, это что ?
|
|||
14
Eeakie
27.02.14
✎
15:55
|
(13) Реквизит справочника.
|
|||
15
Eeakie
27.02.14
✎
15:56
|
(13) Хитрая замануха. Это справочник "Прайс-лист". Несколько наименований у одного товара могут быть.
|
|||
16
Ёпрст
27.02.14
✎
15:56
|
у тебя выборочная раскраска включена ?
|
|||
17
Eeakie
27.02.14
✎
15:57
|
(16) Не очень понял. ВключитьРаскраскуТаблиц() и ИспользоватьПланРаскраски(1) в "ПриНачалеРаботыСистемы()".
|
|||
18
Eeakie
27.02.14
✎
16:00
|
(16) "№%:;, ВключитьРаскраскуТаблиц() не стоит 1...
|
|||
19
Ёпрст
27.02.14
✎
16:04
|
(17) делаешь
Процедура ПриНачалеРаботыСистемы() ЗагрузитьВнешнююКомпоненту("formex.dll"); Сервис= СоздатьОбъект("Сервис"); Сервис.ВключитьРаскраскуТаблиц(1); Сервис.ИспользоватьПланРаскраски(1); .... в Форме списка справочника Процедура ПослеОткрытия() РасшФ = СоздатьОбъект("РасширениеФормы"); РасшФ.УстановитьФорму(Форма); РасшФ.РаскрашиватьТаблицу("МногострочнаяЧасть); КонецПроцедуры Т.е расскраска будет включена только там, где нужно |
|||
20
Eeakie
27.02.14
✎
16:05
|
(19) Спасибо! Не мог врубиться как конкретную форму начать раскрашивать.
|
|||
21
Eeakie
27.02.14
✎
16:19
|
Хм, что-то не хочет...
Воткнул в функцию простое Если Мусор = 1 Тогда Возврат "(BRUSH_S[255])"; КонецЕсли; Даже так не отрабатывает. |
|||
22
Eeakie
27.02.14
✎
17:12
|
Ап.
В ПриНачалеРаботы(): Сервис.ВключитьРаскраскуТаблиц(1); Сервис.ИспользоватьПланРаскраски(1); В форме списка справочника в ПослеОткрытия(): РФ = СоздатьОбъект("РасширениеФормы"); РФ.УстановитьФорму(Форма); РФ.РаскрашиватьТаблицу("МногострочнаяЧасть"); На форме списка висит текстовый реквизит с именем "FormEx_ПланРаскраски". Колонка сделана невидимой. Висит функция Красим() В Красим(): Если Мусор = 1 Тогда Возврат "(BRUSH[255])"; // как в примере КонецЕсли; Не работает. |
|||
23
Eeakie
27.02.14
✎
17:16
|
Версия Формекса 2.0.5.109 beta.
Может в ней дело? |
|||
24
Eeakie
27.02.14
✎
19:42
|
Товарищи, неужели кроме Ёпрст подсказать некому?
|
|||
25
Eeakie
27.02.14
✎
20:00
|
Вопрос снят. Невнимательность.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |