|
v7: Раскраска ячейки многострочной части документа. | ☑ | ||
---|---|---|---|---|
0
Slim747
19.09.19
✎
15:34
|
Здравствуйте уважаемые программисты.
Снова к вам с очередной проблемой. Необходимо раскрасить цветом определенные ячейки многострочной части документа. Есть Formex. С раскраской строки целиком разобрался. А вот как раскрасить конкретные ячейки? Перелопатил кучу информации. Голову сломал а решения до сих пор нет. Может кто сталкивался. Подскажите алгоритм. Или хоть в какую сторону копать. Заранее благодарен... |
|||
1
АЛьФ
19.09.19
✎
15:36
|
Не надо перелопачивать кучу информации. Все есть в синтаксис-помощнике. Надо использовать план раскраски.
"()()()(BRUSH[255])()()(BRUSH[NONE])" - обозначает, что начиная с четвертой колонки (включительно) цвет фона ячеек устанавливается красным, а с седьмой раскраска фона отключается и все остальные колонки не раскрашиваются; "(BRUSH_S[255])" - обозначается, что вся строка, когда она становится текущей, подсвечивается красным фоном. |
|||
2
Slim747
19.09.19
✎
15:46
|
Вопрос.
"()()()(BRUSH[255])()()(BRUSH[NONE])" при помощи данной записи раскрашивается только указанная строка или все строки в многострочной части. Можно ли сделать несколько условий? Т.е. в одной строке например 4-ую колонку раскрасить синим, а 7-ю зеленым цветом? |
|||
3
Slim747
19.09.19
✎
15:47
|
Разобрался в строке...
|
|||
4
Slim747
19.09.19
✎
15:49
|
Эта запись будет работать для всей многострочной части или только для конкретной строки?
|
|||
5
АЛьФ
19.09.19
✎
15:59
|
2(4) В той строке, в которой указана, будет работать. В другой строке в колонке FormEx_ПланРаскраски можно указать другие параметры раскраски.
|
|||
6
Slim747
19.09.19
✎
16:03
|
ОК. Будем пробовать...
|
|||
7
Slim747
19.09.19
✎
16:03
|
По результатам отпишусь...
|
|||
8
Slim747
20.09.19
✎
08:49
|
Получилось!!!!)))
А подскажите можно ли как то управлять этим. Т.е. создать кнопку, при нажатии на которую на колонке устанавливался выбранный цвет??? |
|||
9
АЛьФ
20.09.19
✎
08:51
|
2(8) Повесить в колонку FormEx_ПланРаскраски функцию и в ней формировать строку раскраски как угодно.
|
|||
10
Slim747
20.09.19
✎
10:35
|
Походу что то не так делаю....
Перем парам; Функция РаскраситьКолонки(парам) Перем Рез; Рез = парам; Возврат Рез; КонецФункции Процедура ПриОткрытии() Перем ФормаРасш; ФормаРасш = 0; ФормаРасш = СоздатьОбъект("РасширениеФормы"); ФормаРасш.РаскрашиватьТаблицу("МногострочнаяЧасть"); ПриЗаписиПерепроводить(1); КонецПроцедуры Процедура ПокраситьВКрасный() Перем п; п = "()()()()(BRUSH[250])()"; РаскраситьКолонки(п); КонецПроцедуры |
|||
11
victuan1
20.09.19
✎
11:49
|
(10) На колонку FormEx_ПланРаскраски какую функцию повесили?
|
|||
12
АЛьФ
20.09.19
✎
12:58
|
2(10) Код в ПриОткрытии не нужен.
ПокраситьВКрасный() - это функция на кнопке? Так не работает. Кликаешь на колонке FormEx_ПланРаскраски, на закладке "Дополнительно" в поле "Формула" прописываешь вызов функции. Далее в этой функции уже рулишь строкой раскраски. |
|||
13
Slim747
20.09.19
✎
14:11
|
Функция на колонке FormEx_ПланРаскраски РаскраситьКолонки(парам)
|
|||
14
Slim747
20.09.19
✎
14:13
|
ПокраситьВКрасный() функция на кнопке.
Пытался при нажатии устанавливать значение раскраски |
|||
15
HawkEye
20.09.19
✎
14:17
|
(14) как ты считаешь, что делает этот код:
Функция РаскраситьКолонки(парам) Перем Рез; Рез = парам; Возврат Рез; |
|||
16
Slim747
20.09.19
✎
14:21
|
Подскажите каким образом тогда контролить саму раскруску?
Т.е. устанавливать цвет ячейки, выбранной в таблице. |
|||
17
Slim747
20.09.19
✎
14:26
|
По коду
Функция РаскраситьКолонки(парам) установлена на служебной колонке FormEx_ПланРаскраски Пробовал вызвать ее с передачей параметра плана раскраски. Пытаюсь получить от функции возврат установки для раскраски таблицы. Или я в чем то ошибаюсь и не так пишу.... |
|||
18
АЛьФ
20.09.19
✎
14:30
|
Я дико извиняюсь. Ты начал программировать в 1С вчера? Может потренироваться на простых примерах, посмотреть типовые?
|
|||
19
Slim747
20.09.19
✎
14:32
|
программирую уже давно. Просто с раскраской не сталкивался.
Не судите строго..... |
|||
20
dedmoroz777
20.09.19
✎
14:34
|
Функция РазукраситьГрёбанныеКолонки()
Если (тут какое-то условие) Тогда Возврат "()()()()(BRUSH[250])()"; Иначе Возврат "()()(BRUSH[250])()"; КонецЕсли; КонецФункции |
|||
21
HawkEye
20.09.19
✎
14:48
|
(17) функция возвращает то, что в нее передаешь... зачем эта функция нужна?
никакого отношения к раскраске она не имеет.. чтобы раскрасить колонку, надо перед ней поместить колонку (скрыть её) и в ней написать "()()()(BRUSH[255])()()(BRUSH[NONE])" или что ты там хочешь разукрасить. а чтобы в колонку написать то, что надо, надо в нее добавить функцию которая будет возвращать то, что надо, для этого есть код в (20) |
|||
22
Slim747
20.09.19
✎
15:27
|
Спасибо всем за информацию...
Буду пытаться решить проблему. Исходный код выложу в сообщении. |
|||
23
Slim747
24.09.19
✎
09:19
|
Рабочий код выборочной раскраски элементов многострочной части документа
Модуль формы: Функция РаскраситьКолонки() Возврат Память; КонецФункции Процедура ПокраситьВЦвет() Перем ТК; Перем СТ_1,СТ_2,СТ_3,СТ_4,СТ_5,СТ_6,СТ_7; Перем врПамять; Перем знЦвет; //Серв = СоздатьОбъект("Сервис"); знЦвет = Сервис.ВыбратьЦвет(1,); ПолучитьСтрокуПоНомеру(НомерСтроки); Если ПустоеЗначение(Память) = 1 Тогда Память = "()()()()(BRUSH[NONE])(BRUSH[NONE])(BRUSH[NONE]"; КонецЕсли; // врПамять = СокрЛП(Память); СТ_1 =Лев(врПамять,Найти(врПамять,")")); врПамять = Прав(врПамять,СтрДлина(врПамять)-Найти(врПамять,")")); СТ_2 =Лев(врПамять,Найти(врПамять,")")); врПамять = Прав(врПамять,СтрДлина(врПамять)-Найти(врПамять,")")); СТ_3 =Лев(врПамять,Найти(врПамять,")")); врПамять = Прав(врПамять,СтрДлина(врПамять)-Найти(врПамять,")")); СТ_4 =Лев(врПамять,Найти(врПамять,")")); врПамять = Прав(врПамять,СтрДлина(врПамять)-Найти(врПамять,")")); СТ_5 =Лев(врПамять,Найти(врПамять,")")); врПамять = Прав(врПамять,СтрДлина(врПамять)-Найти(врПамять,")")); СТ_6 =Лев(врПамять,Найти(врПамять,")")); врПамять = Прав(врПамять,СтрДлина(врПамять)-Найти(врПамять,")")); СТ_7 =Лев(врПамять,Найти(врПамять,")")); ТК = Форма.ТекущаяКолонка(); Если ТК = "Пт2" Тогда СТ_5 = "(BRUSH["+знЦвет+"])"; КонецЕсли; Если ТК = "Пт3" Тогда СТ_6 = "(BRUSH["+знЦвет+"])"; КонецЕсли; Если ТК = "Пт9" Тогда СТ_7 = "(BRUSH["+знЦвет+"])"; КонецЕсли; Память = СТ_1+СТ_2+СТ_3+СТ_4+СТ_5+СТ_6+СТ_7; КонецПроцедуры Процедура ПриОткрытии() Перем ФормаРасш; ФормаРасш = 0; ФормаРасш = СоздатьОбъект("РасширениеФормы"); ФормаРасш.РаскрашиватьТаблицу("МногострочнаяЧасть"); ПриЗаписиПерепроводить(1); КонецПроцедуры |
|||
24
Злопчинский
24.09.19
✎
09:27
|
расширениеформы надо создавать в ПослеОткрытия
|
|||
25
Slim747
24.09.19
✎
09:35
|
В чем отличие?
|
|||
26
Злопчинский
24.09.19
✎
11:28
|
(25) ну, если работает в твоем случае - то в твоем случае - ни в чем
|
|||
27
Slim747
24.09.19
✎
11:46
|
Все работает безупречно.
|
|||
28
АЛьФ
24.09.19
✎
11:55
|
Еще раз скажу, что код в ПриОткрытии() абсолютно бесполезен.
|
|||
29
Злопчинский
24.09.19
✎
12:04
|
(28) вот представь, как ты сейчас автора унизил... ;-)
|
|||
30
АЛьФ
24.09.19
✎
16:51
|
2(29) Я дико извинился еще в (18). Так что теперь можно.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |