Имя: Пароль:
1C
 
Внешний отчет + таблица значений на нем.
0 Andry_Boris
 
23.10.10
14:30
День добрый.
Есть внешний отчет  + таблица значений на нем.
Вопрос как при помощи 1С++ и FormEx
раскрасить строки и колонки в созданной таблице
и влиять на раскрашивания отдельных ячеек...
С данными компонентами раньше не работал.
Вот встал вопрос, что надо...
Пытался найти на форуме похожую задачу но не нашел...
Прошу помочь ссылками на аналогичные задачи или если
кто может написать короткий код для примера.

Условий: Таблица содержит 4 поля: код, индекс, наименование, цена
в зависимости от индекса строка раскрашивается в цвет,
если цена выше отметки шрифт выделяется в жирный.
У кого есть соображения?!... Помогите плиз...

С уважением, Андрей
1 Andry_Boris
 
23.10.10
18:50
Ау... неужели ни кто не знает...???
2 ДенисЧ
 
23.10.10
18:52
э....

В демке от АльфА есть пример раскраски. Что в нём не понятно?
3 Andry_Boris
 
23.10.10
18:54
Где демку взять??? ссылке плиз...
4 Cthulhu
 
23.10.10
18:57
(3): там же где ты брал компоненту.
5 ДенисЧ
 
23.10.10
19:00
6 Andry_Boris
 
23.10.10
19:50
Я просмотрел демку...
вопрос именно в том что
"Внешний отчет + таблица значений"
в демке же это документы встроенные...
а это совсем разное...
7 ДенисЧ
 
23.10.10
19:52
(6) нет. Это одно и то же
8 Cthulhu
 
23.10.10
20:02
сделать в данном случае демку - это (по трудоемкости) все равно что решить за тебя твою задачу.
давай-ка лучше не наглей и не ной, а делай.
9 Andry_Boris
 
23.10.10
20:02
из документации на FormEx
>>
Компонента позволяет устанавливать произвольную раскраску в таблицах 1С (многострочные части документов, формы списков, таблицы значений на форме и т.д.).Для включения раскраски в таблицу необходимо добавить колонку, формула в которой должна содержать служебную строку. В общем случае колонка должна располагаться левее колонок, которые предполагается раскрасить.
Служебная строка может быть, как напрямую прописана в формуле колонки (или формироваться функцией, вызываемой из формулы), так и быть содержимым реквизита.
.... и.т.д.
Но если это внешняя форма... ТЗ пустая и создается динамически... как добраться чтобы заполнить в ячейки формулу динамически???
10 ДенисЧ
 
23.10.10
20:03
(9) А как ты туда значения пихаешь?
11 Cthulhu
 
23.10.10
20:05
(9): ты напрасно предлагаешь нам поразиться глубине твоего непонимания обычного русского языка.
при динамическом создании - динамически добавляй текстовую колонку для записи в неё раскраски (и динамически делай невидимой). после чего в динамически созданной ТЗ когда надо и как надо меняй текст этой колонки в нужных строках на задающий нужную раскраску.
12 Andry_Boris
 
23.10.10
20:23
Ага сорри немного начал разбираться...
Вот код...

Процедура ПриОткрытии()
   ТЗ.НоваяКолонка("Индекс","Строка");
   ТЗ.НоваяКолонка("Код","Число");
   ТЗ.НоваяКолонка("Наименование","Строка");
   ТЗ.НоваяКолонка("Цена","Число");
   ТЗ.ВидимостьКолонки("Индекс",0);    
   ТЗ.НоваяСтрока();
   ТЗ.Код = 1;
   ТЗ.Индекс = "";
   ТЗ.Наименование = "Сахар";
   ТЗ.Цена = 12;
   ТЗ.НоваяСтрока();
   ТЗ.Код = 2;
   ТЗ.Индекс = "BRUSH[0xFFCCCC]";
   ТЗ.Наименование = "Песок";
   ТЗ.Цена = 12;
КонецПроцедуры

Работает нормально есть раскраска....
но если описать:
Функция глПолучитьЦвет()
   Возврат "BRUSH[0xFFCCCC]";
КонецФункции // глПолучитьЦвет

Процедура ПриОткрытии()
   ТЗ.НоваяКолонка("Индекс","Строка");
   ТЗ.НоваяКолонка("Код","Число");
   ТЗ.НоваяКолонка("Наименование","Строка");
   ТЗ.НоваяКолонка("Цена","Число");
   ТЗ.ВидимостьКолонки("Индекс",0);    
   ТЗ.НоваяСтрока();
   ТЗ.Код = 1;
   ТЗ.Индекс = "";
   ТЗ.Наименование = "Сахар";
   ТЗ.Цена = 12;
   ТЗ.НоваяСтрока();
   ТЗ.Код = 2;
   ТЗ.Индекс = "глПолучитьЦвет()";
   ТЗ.Наименование = "Песок";
   ТЗ.Цена = 12;
КонецПроцедуры
то цвет не управляется...
если в документе в формулу написать вызов функции то все нормально... В чем смысл, при обновление формы и изменения ТЗ автоматически выставлялся цвет...
как быть...???

Cthulhu - я не ною... что-то если что-то не понятно правильнее спросить у того кто знает...
13 Andry_Boris
 
23.10.10
20:26
(11) Cthulhu - Изречение: Только тот имеет право критиковать, у кого в сердце есть желание помочь.
вот только что на странице форума отобразилось... золотые слова. ;)
14 Andry_Boris
 
23.10.10
20:30
(10) ДенисЧ - попутный вопрос...
Как создать во внешней форме на ТЗ чтобы две колонки располагались не рядом а вертикально друг на другом...
15 Злопчинский
 
23.10.10
20:37
(14)  ТЗ.Индекс = "глПолучитьЦвет()"; //присваивается ТЕКСТОВАЯ СТРОКА
ТЗ.Индекс = глПолучитьЦвет(); //присваивается РЕЗУЛЬТАТ вычисления функции.
.
в ТЗ колонки одна под другой - никак штатно. с формексом - почитай уже доку. есть Положение Колонки (или как-то так)
16 Andry_Boris
 
23.10.10
20:43
(15)Злопчинский
Я это понимаю то что вы написали...
Если написать
ТЗ.Индекс = глПолучитьЦвет();
то получается функция вызывается один раз.
а нужно чтобы при обновление формы
как в документах... там ведь можно поставить формулу
и все ок.
п тут как быть???

доки почитаю - пасибки... :)
17 ДенисЧ
 
23.10.10
21:03
(16) чтобы при обновлении - клади текст (не текстовое поле!) на форму, туда функцию. В функции обновляй нужные значения.
18 Andry_Boris
 
23.10.10
21:09
(17) ДенисЧ
Это я тоже знаю. Но тогда нужно будет проходить циклом всю ТЗ
и обновлять индекс.
А вот если в ТЗ на колонку <<Индекс>> вставить формулу было-бы куда проще. Форма бы при обновление строки вызывала каждый раз на автомате формулу и все было-бы пучком.
Отпала бы необходимость вручную при помощи цикла обновлять индекс... ???
19 ДенисЧ
 
23.10.10
21:18
(18) Увы, ты попал из сказки в реальную жизнь. Забудь о сладких плюшках и кушай горький перец...
20 SnarkHunter
 
23.10.10
21:20
Обновление формы <> обновление данных в ТЗ...
А обновление данных в ТЗ всегда можно отловить и изменить индекс на нужный...
21 Andry_Boris
 
23.10.10
21:30
(19) ДенисЧ
Но в документах это работает!!!...
или для случая с внешней формой шансов нет...???

(20) SnarkHunter
Как я понимаю действие механизма 1С при обновление формы.
1С видит таблицу и выводит ТЗ на экран
при этом обрабатывает и отрисовывает каждую строчку ТЗ
если в ТЗ заполнена формула она её вычисляет...
в результате если это документ то так и работает
как я заметил...
вот и на внешней хотелось та-же...
22 SnarkHunter
 
23.10.10
21:32
(21)Неправильно понимаешь...
23 ДенисЧ
 
23.10.10
21:32
(21) документы - то другая весчь...
24 Злопчинский
 
23.10.10
21:40
(21) программным способом заполняешь ТЗ (в цикле, запростом или еще как). Точно так же в каждую строку каладешь в соответсвующую ячейку столбца нужный цвет. ВСЕ. никакого вывода на экран ничего пока нет. когда отрисовывается ТЗ на экран - строка рисуется соотв.цветом.
все.
в чем проблемы?
.
если тебе надо подсвечивать хитрым образом ТЕКУЩУЮ строку ТЗ - то клади на форму текст. в текст функцию которая вычисляет текущую строку ТЗ и подсовывает туда нужную раскраску. Или используй формексовский ПланРаскраски
25 Andry_Boris
 
23.10.10
22:57
(22) SnarkHunter
Возможно я не прав... а как на самом деле? Где прочитать?
или может вкратце черкнешь пояснение...

(23)ДенисЧ
возможно...

(24)Злопчинский
>>Или используй формексовский ПланРаскраски
а вот с этого момента по подробней где про него прочитать а то в доках ничего нету...
ссылку плиз... или коротко опиши...
26 SnarkHunter
 
24.10.10
10:01
(25) >> если в ТЗ заполнена формула она её вычисляет...

Ничего она не вычисляет...
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший