Имя: Пароль:
1C
1C 7.7
v7: Оформление таблицы в документе
0 Sima42
 
05.05.14
12:18
Столкнулся с проблемой. Надо в таблице документа ячейку или колонку закрасить каким нибудь цветом. Это реально?
1 Чайник Рассела
 
05.05.14
12:19
да
2 Sima42
 
05.05.14
12:19
Как?!)
3 ДенисЧ
 
05.05.14
12:20
formex
4 Sima42
 
05.05.14
12:24
Спасибо! Будем изучать))
5 Sima42
 
05.05.14
15:34
Ну вот написал подключил но нет никакой реакции даже ошибок не выскакивает.


Процедура ПриОткрытии()
Путь = "C:\\FormEx.dll";
    Если ЗагрузитьВнешнююКомпоненту(Путь) = 0 Тогда Сообщить("Неудачная попытка загрузить FormEx.dll");
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;    
    
    Сервис = СоздатьОбъект("Сервис");
    Сервис.ВключитьРаскраскуТаблиц();
КонецПроцедуры


Функция ПолучитьЦвет(Красный = 0,Зеленый = 0,Синий = 0)
    // функция для формирования значения цвета из составляющих (RGB)

    Возврат Макс(0,Синий)*65536+Макс(0,Зеленый)*256+Макс(0,Красный);
КонецФункции




Функция ПроверитьВид()
    
       Если (Число(ТабНом)<>0) Тогда
    Возврат "BRUSH["+ПолучитьЦвет(100,255,100)+"]";//Зеленый
КонецЕсли;

Возврат "";
КонецФункции
6 ДенисЧ
 
05.05.14
15:34
А колонку в ТЧ добавил с вызовом функции?
Или план раскраски, например?
7 Mikeware
 
05.05.14
15:35
(6) а зачем? он же "формекс подключил". вот формекс и должен думать, какую колонку и как раскрашивать
8 Sima42
 
05.05.14
15:36
Да у меня первая колонка которая нумерует она вызывает функцию ПроверитьВид()
9 Sima42
 
05.05.14
15:40
Или мне надо дополнительную колонку сделать что бы она в себе хранила план раскраски?
10 Mikeware
 
05.05.14
15:45
(9) инструкцию читать нонче непопулярно?
11 Ёпрст
 
гуру
05.05.14
15:46
Используй лучше план расскраски.
+ в ПриОткрытии грузи вк, только если она еще не загружена ранее, а не всегда.

План раскраски
План раскраски
Описание
Для ускорения и упрощения работы раскраски таблиц в компоненту с версии 2.0.5.85 введен функционал плана раскраски таблицы. Для его активизации необходимо вызвать метод ИспользоватьПланРаскраски() объекта Сервис с параметром 1 (соответсвенно, для отключения и перехода на старый принцип раскраски надо вызвать тот же метод, но с параметром 0). По умолчанию функционал плана раскраски отключен и работает старая методика раскраски.
Для реализации раскраски по новому функционалу плана раскраски, необходимо добавить в раскрашиваемую таблицу колонку с заголовком "FormEx_ПланРаскраски" (без кавычек, регистронезависимо). Колонка может располагаться в любом месте таблицы. Содержимое этой колонки задает план раскраски таблицы, основанный на тех же макросах, которые описаны в части "Раскраска таблиц". При этом макросы COUNT и INDENT не обрабатываются. В плане раскраски каждая ячейка текущей строки определяется круглыми скобками. В плане учитываются как видимые, так и невидимые колонки. Макросы раскраски надо помещать в места, соответсвующие смене раскраски. Несколько примеров помогу лучше понять этот принцип.
Пример плана раскраски
"()()()(BRUSH[255])()()(BRUSH[NONE)" - обозначает, что начиная с четвертой колонки (включительно) цвет фона ячеек устанавливается красным, а с седьмо раскраска фона отключается и все остальные колонки не раскрашиваются;
"(BRUSH_S[255])" - обозначается, что вся строка, когда она становится текущей, подсвечивается красным фоном.
12 Sima42
 
05.05.14
17:03
Блин я уже на психах! Добавил в таблицу реквизит с названием FormEx_ПланРаскраски тип текст. Что дальше? Кучу вариантов перепробовал не получается.
13 Sima42
 
05.05.14
17:04
(10) Дак эти инструкции на каждом углу валяются. Была бы прочитал и не парил бы вам мозг.
14 Sima42
 
05.05.14
17:07
и кстати выскакивает такое сообщение: Поле агрегатного объекта не обнаружено (ИспользоватьПланРаскраски)
15 ikea
 
05.05.14
17:15
У тебя в (5) все есть. Добавляй в ТЧ реквизит типа текст. Заходишь в свойства этого реквизита, ставишь галочку "сделать невидимым", а на закладке "Дополнительно" в поле формула вызываешь свою функцию ПроверитьВид(). И да, важный ньюанс, этот текстовый реквизит должен быть "левее" всех колонок на ТЧ, т.е. быть самым первым слева направо в ТЧ.
16 Масянька
 
05.05.14
17:25
Процедура ПриОткрытии()

    ...............
    ТабОбщихЦенников.НоваяКолонка("ПроверкаЦены"         ,"Строка",   ,  ,"FormEx_ПланРаскраски"); // колонка для раскраски
    ...............

Процедура ПослеОткрытия()        

    ФормаРасш = СоздатьОбъект("РасширениеФормы");
    ФормаРасш.РаскрашиватьТаблицу("ТабОбщихЦенников");
    ФормаРасш.РаскрашиватьТаблицу("ТабУменЦенников");
    ФормаРасш.РаскрашиватьТаблицу("ТабБумЦенников");
    
    мСервис = СоздатьОбъект("Сервис");
    мСервис.ВключитьРаскраскуТаблиц();
    
    оПривязки.ПослеОткрытия();

КонецПроцедуры // ПослеОткрытия

Функция РаскраситьЦены(гТабВыборка)        // красим - по условию

    Если (гТабВыборка.Цена < гТабВыборка.Себестоимость) или (ПустоеЗначение(гТабВыборка.Цена) = 1) Тогда
        Возврат "()()()()()()()()()()()()(BRUSH[" + ПолучитьЦвет(255, 255, 153) + "]COUNT[2]";
    КонецЕсли;

    Возврат "";
    
КонецФункции    // РаскраситьЦены

Процедура ЗаполнениеСтрокиТаблицы(гТабВыборка, СписокПараметров)

    гТабВыборка.НоваяСтрока();
    
    ........................
    гТабВыборка.ПроверкаЦены            = РаскраситьЦены(гТабВыборка); // обработка раскраски
    ........................    
    Форма.Обновить();
17 Sima42
 
05.05.14
17:47
Скажите а кроме файла FormEx.dll может еще что то надо?
18 Масянька
 
05.05.14
17:50
(17) Для раскраски - нет.
19 Mikeware
 
05.05.14
17:54
(14)версия формекса какая?
20 Sima42
 
05.05.14
17:55
2.05.83
21 Mikeware
 
05.05.14
17:56
(15) для использования плана раскраски - положение колонки с планом раскраски никак не влияет
22 Mikeware
 
05.05.14
17:56
(20)"Для ускорения и упрощения работы раскраски таблиц в компоненту с версии 2.0.5.85 введен функционал плана раскраски таблицы"
23 Масянька
 
05.05.14
17:57
(20) Качни 2.0.5.108
24 Масянька
 
05.05.14
17:58
(20) И кстати, код показывай.
25 Sima42
 
05.05.14
17:59
Я знаю. Поэтому у меня и каша на одном сайте такой код на другом такой. Кароче завтра опять нырну с головой в это дело потому что сегодня и так целый день промаялся уже видеть не хочу этот ФормЕкс. Всем спасибо!!
26 Sima42
 
05.05.14
18:00
(24) Дак он же в посте - 5
27 Масянька
 
05.05.14
18:05
(26) Попробуй в ПроверитьВид -     Возврат "(BRUSH_S[" + ПолучитьЦвет(255, 255, 153) + "])";
28 Sima42
 
06.05.14
11:11
Заработало!!
Но теперь другой вопрос что бы раскрашивать методом "()(BRUSH[255])()" что надо сделать а то у меня все строку заливает. Хотя как я понимаю в этом случае должен 1 и 3 колонку не заливать.

Вот код

Процедура Раск()
FormEx = СоздатьОбъект("Сервис");
FormEx.ВключитьРаскраскуТаблиц();



ТаблОтг.НоваяКолонка("FormEx_ПланРаскраски",    "Строка");
ТаблОтг.НоваяКолонка("Док",    "Строка");
ТаблОтг.НоваяКолонка("Сум",    "Число", 15,2);  
ТаблОтг.НоваяКолонка("Сум1",    "Число", 15,2);
ТаблОтг.НоваяКолонка("Сум2",    "Число", 15,2);
ТаблОтг.НоваяКолонка("Сум3",    "Число", 15,2);
ТаблОтг.НоваяКолонка("Сум4",    "Число", 15,2);
ТаблОтг.НоваяКолонка("Сум5",    "Число", 15,2);

Для н = 1 По 3 Цикл
   ТаблОтг.НоваяСтрока();
   ТаблОтг.FormEx_ПланРаскраски = "()(BRUSH[255])()(BRUSH[255])";
   ТаблОтг.Сум = 123;
   ТаблОтг.Док = "11111";
   ТаблОтг.Сум1 = 123;
   ТаблОтг.Сум2 = 123;
   ТаблОтг.Сум3 = 123;
   ТаблОтг.Сум4 = 123;
   ТаблОтг.Сум5 = 123;
КонецЦикла;

КонецПроцедуры
29 Sima42
 
06.05.14
11:19
вреде как мне надо написать после создания сервиса -  FormEx.ИспользоватьПланРаскраски(1); Но сразу начинает выскакивать сообщение "Поле агрегатного объекта не обнаружено (ИспользоватьПланРаскраски)"
30 Mikeware
 
06.05.14
11:31
(28) цитирую:
"Пример плана раскраски
"()()()(BRUSH[255])()()(BRUSH[NONE)" - обозначает, что начиная с четвертой колонки (включительно) цвет фона ячеек устанавливается красным, а с седьмо раскраска фона отключается и все остальные колонки не раскрашиваются;
"(BRUSH_S[255])" - обозначается, что вся строка, когда она становится текущей, подсвечивается красным фоном."
31 Mikeware
 
06.05.14
11:32
(29)"с версии 2.0.5.85 введен функционал плана раскраски таблицы"
32 Ёпрст
 
гуру
06.05.14
11:32
(29) обнови формекс, для начала
33 Mikeware
 
06.05.14
11:33
(32) переводишь с русского на русский? :-)
34 Sima42
 
06.05.14
11:34
Даааааа сам дошел! Тупица забылся новый подсунуть. Все ошибка ушла. Теперь не раскрашивает вообще ничего.
35 Mikeware
 
06.05.14
11:35
"Все ошибка ушла. Теперь не раскрашивает вообще ничего"
пять баллов....
36 Sima42
 
06.05.14
11:36
(35) Самому смешно!)
37 Mikeware
 
06.05.14
11:38
(36) для тебя русский  язык - родной?
38 Sima42
 
06.05.14
11:43
(37) Да а что?
39 Mikeware
 
06.05.14
11:47
(38)цитирую из (11):
"необходимо добавить в раскрашиваемую таблицу колонку с заголовком "FormEx_ПланРаскраски" (без кавычек, регистронезависимо)"
вроде, написано по-русски...
40 Sima42
 
06.05.14
11:50
(39) У меня в коде
ТаблОтг.НоваяКолонка("FormEx_ПланРаскраски",    "Строка");
41 Mikeware
 
06.05.14
11:52
(40) колонку с ЗАГОЛОВКОМ "FormEx_ПланРаскраски"
42 Ёпрст
 
гуру
06.05.14
11:56
43 Ёпрст
 
гуру
06.05.14
11:56
Но лучше, использовать выборочную расскраску таблиц - так меньше тормозов, т.е красить именно то, что нужно.
44 Sima42
 
06.05.14
12:08
Все работает действительно надо было указать именно заголовок.  Мне почему то казалось что в НоваяКолонка. первое заголовок.

Выкладываю свой код может кому и пригодится в разборе приблуды FormEx.

Процедура ПриОткрытии()
Путь = "C:\\FormEx.dll";
    Если ЗагрузитьВнешнююКомпоненту(Путь) = 0 Тогда Сообщить("Неудачная попытка загрузить FormEx.dll");
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;    
  
КонецПроцедуры

Процедура Раск()
FormEx = СоздатьОбъект("Сервис");
FormEx.ИспользоватьПланРаскраски(1);
FormEx.ВключитьРаскраскуТаблиц(0);



ТаблОтг.НоваяКолонка("Цвет","Строка",,,"FormEx_ПланРаскраски");
ТаблОтг.НоваяКолонка("Док",    "Строка");
ТаблОтг.НоваяКолонка("Сум",    "Число", 15,2);  
ТаблОтг.НоваяКолонка("Сум1",    "Число", 15,2);
ТаблОтг.НоваяКолонка("Сум2",    "Число", 15,2);
ТаблОтг.НоваяКолонка("Сум3",    "Число", 15,2);
ТаблОтг.НоваяКолонка("Сум4",    "Число", 15,2);
ТаблОтг.НоваяКолонка("Сум5",    "Число", 15,2);

Для н = 1 По 3 Цикл
   ТаблОтг.НоваяСтрока();
   ТаблОтг.Цвет = "(BRUSH[255])()(BRUSH[100])(BRUSH[NONE])(BRUSH[NONE])(BRUSH[NONE])(BRUSH[NONE])(BRUSH[NONE])";
   ТаблОтг.Сум = 123;
   ТаблОтг.Док = "11111";
   ТаблОтг.Сум1 = 123;
   ТаблОтг.Сум2 = 123;
   ТаблОтг.Сум3 = 123;
   ТаблОтг.Сум4 = 123;
   ТаблОтг.Сум5 = 123;
КонецЦикла;

КонецПроцедуры
45 Ёпрст
 
гуру
06.05.14
12:08
http://gfile.ru/a7rq7

так даже лучшее, для подсветки текущей ячейки, и текущей строки.. + задание цвета в 16-ом формате.. для понимания.
46 Ёпрст
 
гуру
06.05.14
12:09
(44) формекс - это не приблуда, если что
47 Sima42
 
06.05.14
12:14
(42) Эх Епрст вот это бы вчера. Сэкономило бы кучу времени. Но все равно спасибо!
48 Sima42
 
06.05.14
12:15
(46) Сейчас я просто злой что столько времени убил. А так да весч!
49 Масянька
 
06.05.14
12:17
(47) Кстати, вот так - ()()()()()()()()()()()()(BRUSH[" + ПолучитьЦвет(255, 255, 153) + "]COUNT[2] - раскрашивает 2 предпоследние колонки.
50 Масянька
 
06.05.14
12:17
(48) Учись, студент (С) :)
51 Mikeware
 
06.05.14
12:40
(47) он вчера процитировал доку, в которой все написано.