|
v7: Раскраска таблицы | ☑ | ||
---|---|---|---|---|
0
Масянька
25.11.11
✎
09:46
|
Доброе утро.
Прошу помощи: Процедура ПриОткрытии() Отв = ЗагрузитьВнешнююКомпоненту("FormEx.dll"); Если Отв = 0 Тогда Сообщить("Не вышло"); СтатусВозврата(0); Возврат; КонецЕсли; Сервис = СоздатьОбъект("Сервис"); Сервис.ВключитьРаскраскуТаблиц(); .................. гТабВыборка.НоваяКолонка("Пометка" ,"Число", 4, 0,"Вкл" ,6); ................. КонецПроцедуры Функция ПолучитьЦвет(Красный = 0,Зеленый = 0,Синий = 0) Возврат Макс(0,Синий)*65536+Макс(0,Зеленый)*256+Макс(0,Красный); КонецФункции Функция Раскрасить() Если (гТабВыборка.Цена < гТабВыборка.Себестоимость) Тогда Возврат "BRUSH["+ПолучитьЦвет(255,100,100)+"]"; КонецЕсли; Возврат ""; КонецФункции // Раскрасить Процедура ЗаполнениеСтрокиТаблицы(СписокПараметров) гТабВыборка.НоваяСтрока(); гТабВыборка.Код = СписокПараметров.ПолучитьЗначение(1); ..................... Раскрасить(); КонецПроцедуры // ЗаполнениеСтрокиТаблицы Обработка, таблица формируется динамически. Раскраска - не работате. Где ошибка? PS Ногами - не бить! |
|||
1
ДенисЧ
25.11.11
✎
09:48
|
Колонку с брашем поставить ПЕРЕД теми колонками, что нужно красить...
|
|||
2
antoneus
25.11.11
✎
09:52
|
и вообще, используй план раскраски
|
|||
3
Масянька
25.11.11
✎
09:54
|
Спасибо, пробую.
|
|||
4
KishMish
25.11.11
✎
09:55
|
наверно так
гТабВыборка.КОлонкаРаскраски = Раскрасить(); |
|||
5
Масянька
25.11.11
✎
10:16
|
Люди!
Добавила: в ПриОткрытии - Сервис.ИспользоватьПланРаскраски(1); - гТабВыборка.НоваяКолонка("Цвет", "Строка"); в ЗаполнениеСтрокиТаблицы - гТабВыборка.Цвет = Раскрасить(); Запустила. Выводится колонка "Цвет", в ней "BRUSH[6579455], в той строке, которую нужно раскрасить. Цвета нет :( |
|||
6
Масянька
25.11.11
✎
10:22
|
Апну разок :(
|
|||
7
Масянька
25.11.11
✎
10:34
|
Столько разговоро было про FormEx....
|
|||
8
Масянька
25.11.11
✎
10:41
|
А ни фига не работает....
|
|||
9
antoneus
25.11.11
✎
10:42
|
рт наконец уже фм!
Пример плана раскраски. "()()()(BRUSH[255])()()(BRUSH[NONE)" - обозначает, что начиная с четвертой колонки (включительно) цвет фона ячеек устанавливается красным, а с седьмо раскраска фона отключается и все остальные колонки не раскрашиваются; "(BRUSH_S[255])" - обозначается, что вся строка, когда она становится текущей, подсвечивается красным фоном. |
|||
10
antoneus
25.11.11
✎
10:44
|
Для реализации раскраски по новому функционалу плана раскраски, необходимо добавить в раскрашиваемую таблицу колонку с заголовком "FormEx_ПланРаскраски" (без кавычек, регистронезависимо). Колонка может располагаться в любом месте таблицы. Содержимое этой колонки задает план раскраски таблицы, основанный на тех же макросах, которые описаны в части "Раскраска таблиц". При этом макросы COUNT и INDENT не обрабатываются. В плане раскраски каждая ячейка текущей строки определяется круглыми скобками. В плане учитываются как видимые, так и невидимые колонки. Макросы раскраски надо помещать в места, соответсвующие смене раскраски.
|
|||
11
Масянька
25.11.11
✎
10:48
|
Ну, наконец-таки!
Спасибо - пошла пробовать. Еше вопрос - на Win 7 проблем нет? |
|||
12
Масянька
25.11.11
✎
10:51
|
(10) Что значит "без кавычек"?
Я сделала - гТабвыборка.НоваяКолонка("FormEx_ПланРаскраски", "Строка"); И в ЗаполнениеСтрокиТаблицы - гТабВыборка. FormEx_ПланРаскраски = Раскрасить(); Не работает. |
|||
13
antoneus
25.11.11
✎
11:07
|
больше кода. Что в Раскрасить()?
|
|||
14
FN
25.11.11
✎
11:08
|
гТабВыборка. FormEx_ПланРаскраски = "("+Раскрасить()+")";
|
|||
15
Масянька
25.11.11
✎
11:14
|
(14) Поменяла - не арбайтен.
(13) Функция Раскрасить() Если (гтабВыборка.Цена > гТабВыборка.Себестоимость) Тогда Возврат "BRUSH[" ПолучитьЦвет(255, 100, 100) + "]"; КонецЕсли; Возврат ""; КонецФункции |
|||
16
Guk
25.11.11
✎
11:16
|
(8) так это не формекс не работает...
|
|||
17
Масянька
25.11.11
✎
11:17
|
(16) А что?
|
|||
18
Масянька
25.11.11
✎
11:18
|
Процедура ПриОткрытии()
Отв = ЗагрузитьВнешнююКомпоненту("FormEx.dll"); Если Отв = 0 Тогда Сообщить("Не вышло"); СтатусВозврата(0); Возврат; КонецЕсли; Сервис = СоздатьОбъект("Сервис"); Сервис.ВключитьРаскраскуТаблиц(1); Сервис.ИспользоватьПланРаскраски(1); гТабВыборка.НоваяКолонка("FormEx_ПланРаскраски" ,"Строка"); гТабВыборка.ВидимостьКолонки("FormEx_ПланРаскраски", 0); ......... КонецПроцедуры Функция ПолучитьЦвет(Красный = 0,Зеленый = 0,Синий = 0) Возврат Макс(0,Синий)*65536+Макс(0,Зеленый)*256+Макс(0,Красный); КонецФункции Функция Раскрасить() Если (гТабВыборка.Цена > гТабВыборка.Себестоимость) Тогда Возврат "()()()(BRUSH["+ПолучитьЦвет(255,100,100)+"])"; КонецЕсли; Возврат ""; КонецФункции // Раскрасить //************* заполнение строки таблицы выбранной номенклатурой Процедура ЗаполнениеСтрокиТаблицы(СписокПараметров) гТабВыборка.НоваяСтрока(); гТабВыборка.Код = СписокПараметров.ПолучитьЗначение(1); гТабВыборка.АртикулПрайс = СокрЛП(СписокПараметров.ПолучитьЗначение(2)); гТабВыборка.ЗаголовокЦенника = СокрЛП(СписокПараметров.ПолучитьЗначение(3)); гТабВыборка.ФирмаПроизводитель = СокрЛП(СписокПараметров.ПолучитьЗначение(4)); гТабВыборка.СтранаПроизводитель = СокрЛП(СписокПараметров.ПолучитьЗначение(5)); гТабВыборка.Цена = СписокПараметров.ПолучитьЗначение(6); гТабВыборка.Себестоимость = СписокПараметров.ПолучитьЗначение(7); Если ВидЦенника = 2 Тогда гТабВыборка.Описание = СокрЛП(СписокПараметров.ПолучитьЗначение(8)); гТабВыборка.Плотность = СокрЛП(СписокПараметров.ПолучитьЗначение(9)); гТабВыборка.Структура = СокрЛП(СписокПараметров.ПолучитьЗначение(10)); гТабВыборка.Покрытие = СокрЛП(СписокПараметров.ПолучитьЗначение(11)); гТабВыборка.КолВоЛистов = СокрЛП(СписокПараметров.ПолучитьЗначение(12)); Иначе гТабВыборка.Описание = СокрЛП(СписокПараметров.ПолучитьЗначение(8)); гТабВыборка.Модель = СокрЛП(СписокПараметров.ПолучитьЗначение(9)); КонецЕсли; гТабВыборка.FormEx_ПланРаскраски = "("+Раскрасить()+")"; КонецПроцедуры // ЗаполнениеСтрокиТаблицы |
|||
19
АЛьФ
25.11.11
✎
11:21
|
Забавно.
|
|||
20
FN
25.11.11
✎
11:23
|
Попробуй так
Процедура ПриОткрытии() Отв = ЗагрузитьВнешнююКомпоненту("FormEx.dll"); Если Отв = 0 Тогда Сообщить("Не вышло"); СтатусВозврата(0); Возврат; КонецЕсли; Сервис = СоздатьОбъект("Сервис"); Сервис.ВключитьРаскраскуТаблиц(1); Сервис.ИспользоватьПланРаскраски(0); гТабВыборка.НоваяКолонка("FormEx_ПланРаскраски" ,"Строка"); гТабВыборка.ВидимостьКолонки("FormEx_ПланРаскраски", 0); ......... КонецПроцедуры Функция ПолучитьЦвет(Красный = 0,Зеленый = 0,Синий = 0) Возврат Макс(0,Синий)*65536+Макс(0,Зеленый)*256+Макс(0,Красный); КонецФункции Функция Раскрасить() Если (гТабВыборка.Цена > гТабВыборка.Себестоимость) Тогда Возврат "BRUSH["+ПолучитьЦвет(255,100,100)+"]"; КонецЕсли; Возврат ""; КонецФункции // Раскрасить //************* заполнение строки таблицы выбранной номенклатурой Процедура ЗаполнениеСтрокиТаблицы(СписокПараметров) гТабВыборка.НоваяСтрока(); гТабВыборка.Код = СписокПараметров.ПолучитьЗначение(1); гТабВыборка.АртикулПрайс = СокрЛП(СписокПараметров.ПолучитьЗначение(2)); гТабВыборка.ЗаголовокЦенника = СокрЛП(СписокПараметров.ПолучитьЗначение(3)); гТабВыборка.ФирмаПроизводитель = СокрЛП(СписокПараметров.ПолучитьЗначение(4)); гТабВыборка.СтранаПроизводитель = СокрЛП(СписокПараметров.ПолучитьЗначение(5)); гТабВыборка.Цена = СписокПараметров.ПолучитьЗначение(6); гТабВыборка.Себестоимость = СписокПараметров.ПолучитьЗначение(7); Если ВидЦенника = 2 Тогда гТабВыборка.Описание = СокрЛП(СписокПараметров.ПолучитьЗначение(8)); гТабВыборка.Плотность = СокрЛП(СписокПараметров.ПолучитьЗначение(9)); гТабВыборка.Структура = СокрЛП(СписокПараметров.ПолучитьЗначение(10)); гТабВыборка.Покрытие = СокрЛП(СписокПараметров.ПолучитьЗначение(11)); гТабВыборка.КолВоЛистов = СокрЛП(СписокПараметров.ПолучитьЗначение(12)); Иначе гТабВыборка.Описание = СокрЛП(СписокПараметров.ПолучитьЗначение(8)); гТабВыборка.Модель = СокрЛП(СписокПараметров.ПолучитьЗначение(9)); КонецЕсли; СтрокаРаскраски=Раскрасить();Сообщить(СтрокаРаскраски); гТабВыборка.FormEx_ПланРаскраски = СтрокаРаскраски; КонецПроцедуры // ЗаполнениеСтрокиТаблицы |
|||
21
Масянька
25.11.11
✎
11:59
|
(20) Выводит:
в таблице 5 строк - ()()()(BRUSH[6579455]) ()()()(BRUSH[6579455]) ()()()(BRUSH[6579455]) ()()()(BRUSH[6579455]) PS - пустая строка - там где нужно менять цвет. |
|||
22
Масянька
25.11.11
✎
12:09
|
Пардон - знак перепутала :)
Выводит одну строку ()()()(BRUSH[6579455]) там, где нужно менять цвет, но цвет не меняет. |
|||
23
Масянька
25.11.11
✎
12:13
|
Слушайте, если я накосячила - ткните меня, если что-то не работает - скажите - что.
|
|||
24
big
25.11.11
✎
12:24
|
Создаем таблицу
ТЦ.Очистить(); ТЦ.НоваяКолонка("Цвет","Строка",,,"FormEx_ПланРаскраски"); ТЦ.НоваяКолонка("Магазин","Справочник", , ,"Магазин",12); ТЦ.НоваяКолонка("Фирма","Справочник", , ,"Фирма",15); ТЦ.НоваяКолонка("МинОст","Справочник"); ТЦ.НоваяКолонка("КонтрольЗакуп","Число", , ,"хх",3); ТЦ.НоваяКолонка("Закупочная","Справочник"); Заметь!!! Для вывода цвета по плану раскраски у колонки должен быть ЗАГОЛОВОК "FormEx_ПланРаскраски" Делаем функцию для заполнения шаблона цвета Функция глШаблонЦветаЯчейки(Таб) Экспорт Рез=""; Если ТипЗначенияСтр(Таб)="ТаблицаЗначений" Тогда Шагов = Таб.КоличествоКолонок(); ИначеЕсли ТипЗначенияСтр(Таб)="Число" Тогда Шагов = Таб; КонецЕсли; Для а=1 По Шагов Цикл Рез=Рез+"(BRUSH[NONE])"; КонецЦикла; Возврат Рез; КонецФункции // ШаблонЦветаЯчейки Заполнение таблицы ТЦ.НоваяСтрока(); ТЦ.Цвет = ШаблонЦвета; ТЦ.Магазин = ТекМагазин; ТЦ.Фирма = Агент; ТЦ.Закупочная = СпрЦенаЗакуп; Если ПустоеЗначение(СпрЦенаЗакуп)=1 Тогда глУстановитьЦветЯчейки(ТЦ, ТЦ.КоличествоСтрок(),"ЦенаЗакуп"); КонецЕсли; установка цвета нужной ячейки Процедура глУстановитьЦветЯчейки(Таб, Стр, Кол, Цвет="") Экспорт Если ПустаяСтрока(Цвет)=1 Тогда Цвет=6773995; // цвет ошибки, красный КонецЕсли; // определим номер (номера) ячеек Колонки = СтрЗаменить(Кол,",",РазделительСтрок); СпсКолонок = СоздатьОбъект("СписокЗначений"); Для б=1 По СтрКоличествоСтрок(Колонки) Цикл ТекКолонка = СтрПолучитьСтроку(Колонки,б); НомерЯчейки = Таб.ПолучитьПараметрыКолонки(ТекКолонка); СпсКолонок.ДобавитьЗначение(НомерЯчейки); КонецЦикла; ШаблонЦвета=Таб.ПолучитьЗначение(Стр,"Цвет"); ШаблонЦвета=Сред(ШаблонЦвета,2,СтрДлина(ШаблонЦвета)-2); ШаблонЦвета=СтрЗаменить(ШаблонЦвета,")(",РазделительСтрок); Рез=""; Для а=1 По СтрКоличествоСтрок(ШаблонЦвета) Цикл Если СпсКолонок.Принадлежит(а)=1 Тогда Рез=Рез+"(BRUSH["+Цвет+"])"; Иначе Рез=Рез+"("+СтрПолучитьСтроку(ШаблонЦвета,а)+")"; КонецЕсли; КонецЦикла; // Сообщить("Стр:"+Стр+", Кол:"+Кол+", Рез:"+Рез+"."); Таб.УстановитьЗначение(Стр,"Цвет",Рез); КонецПроцедуры // УстановитьЦветЯчейки |
|||
25
big
25.11.11
✎
12:26
|
(24) + ессно колонка "Цвет" должна быть невидимой.
|
|||
26
Масянька
25.11.11
✎
13:18
|
Ну, что никто не ткнет?
|
|||
27
Масянька
25.11.11
✎
13:51
|
Из вас (таких умных) разобралась :)
|
|||
28
Масянька
25.11.11
✎
13:51
|
+(27) Без вас :)
|
|||
29
big
29.11.11
✎
05:00
|
Фееричная дятла
|
|||
30
Андрюха
29.11.11
✎
05:56
|
Дилетанты хреновы
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |