Имя: Пароль:
1C
1C 7.7
v7: FormEx
0 DES
 
23.09.12
16:25
ТЗ.ВыбратьСтроку(Стр);
Можно такое раскрасить ?
1 Rie
 
23.09.12
16:55
(0) Одну (выбранную) строку в ТЗ?
Раскраска задаётся формулой. И есть замечательная функция - ?(,,).
2 DES
 
23.09.12
17:05
FormEx.ВключитьРаскраскуТаблиц(1);
добавил колонку    
ТЗ.НоваяКолонка("FormEx_ПланРаскраски","Строка",10,,"",1);
занес
ТЗ.FormEx_ПланРаскраски = "BRUSH[255]";

не красится чейто...
3 Rie
 
23.09.12
17:24
(2) А что у тебя должно краситься-то при таком раскладе?
Если хочешь покрасить текущую строку, а остальные - не трогать, то задай в формуле колонки раскраски что-то вроде
?(ЭтоТаСтрокаКоторуюКрасить(),"BRUSH[0x0000FF]COUNT[2]","")
И колонку эту сделай первой (или какой там тебе надо), а не в конец добавляй.
4 DES
 
23.09.12
17:30
она первая
тупо не красится, без условий
5 ЧашкаЧая
 
23.09.12
17:31
ТЗ.ВыбратьСтроку() - не раскрасить, самую ТЗ - можно.
6 DES
 
23.09.12
17:32
Это ТЗ, которая вызывается
ТЗ.ВыбратьСтроку(Креатор);
а не на форме, может поэтому?
7 ЧашкаЧая
 
23.09.12
17:36
(6) Вы хотите раскрасить окошко которое появляется по ТЗ.ВыбратьСтроку()?
8 Rie
 
23.09.12
17:40
(6) Что значит "не на форме"?
Условие в (3) можно сделать зависящим от ТЗ.ТекущаяСтрока().
9 ДенисЧ
 
23.09.12
17:53
Я не автор сабжа, но склероз мой мне напоминает, что нельзя этого сделать.
10 DES
 
23.09.12
17:55
(7) да
11 Rie
 
23.09.12
18:12
(9) Возможно, однако.

Вот пример:

Процедура УстановитьРаскраску(нСтр)
   
   Если ТЗ.ПолучитьЗначение(нСтр,"Кол2")>5 Тогда
       ТЗ.Раскраска = "BRUSH[0x0000FF]COUNT[3]";
   Иначе
       ТЗ.Раскраска = "BRUSH[0x00FF00]COUNT[3]";
   КонецЕсли;
   
КонецПроцедуры // УстановитьРаскраску
//______________________________________________________________________________

Процедура ПоКлику()
   
   Если ТЗ.ТекущаяКолонка()="Кол2" Тогда
       Ч = ТЗ.Кол2;
       Если ВвестиЧисло(Ч,"???",10,0)=1 Тогда
           ТЗ.Кол2 = Ч;
           УстановитьРаскраску(ТЗ.ТекущаяСтрока());
       КонецЕсли;
   КонецЕсли;
   
КонецПроцедуры // ПоКлику
//______________________________________________________________________________

Работает.
12 DES
 
23.09.12
18:15
(11)ТЗ.ВыбратьСтроку()? сработает?
13 Rie
 
23.09.12
18:17
(12) После ТЗ.ВыбратьСтроку() - поставь УстановитьРаскраску().
14 Rie
 
23.09.12
18:17
+(13) Твоё ТЗ.ВыбратьСтроку() - это de facto ПоКлику() из (11), только чуть иначе.
15 Rie
 
23.09.12
18:19
А чтобы проще было - брось на форму текстовое поле и в нём раскрашивай строки.
Строку идентифицируй, например, по НомерСтроки.
16 Rie
 
23.09.12
18:28
+(15) Что-то вроде
Функция ФормулаДляТекстовогоПоля()
   ТекСтр = ТЗ.НомерСтроки;
   Для нСтр = 1 По ТЗ.КоличествоСтрок() Цикл
       Если нСтр=ТекСтр Тогда
           ТЗ.УстановитьЗначение(нСтр,"Раскраска","BRUSH[0x0000FF]COUNT[16]");
       Иначе
           ТЗ.УстановитьЗначение(нСтр,"Раскраска","");
       КонецЕсли;
   КонецЦикла;
   Возврат "";
КонецФункции
17 DES
 
23.09.12
18:45
>>>>После ТЗ.ВыбратьСтроку() - поставь УстановитьРаскраску().
не понимаю.
как так ПОСЛЕ ???
мне нужно Во время
18 DES
 
23.09.12
18:46
Как красить я знаю, оно вообще не красит
19 Rie
 
23.09.12
18:49
(17) Текстовое поле на форме - не помогает? (Если строка выбирается программно - я не уверен, что событие отработает; весьма и весьма возможно, что прав ДенисЧ).

(18) Вообще не красит? Даже когда искусственно раскраску задаёшь, в статической ситуации?
20 DES
 
23.09.12
18:50
(19) ТЗ.FormEx_ПланРаскраски = "BRUSH[255]";
21 Rie
 
23.09.12
18:56
(20) После этого после перерисовки таблицы значений она перекрасится.
Но - COUNT[сколькото] не зря пишется. Но - колонка раскраски должна быть перед раскрашиваемыми. Это так?
22 DES
 
23.09.12
18:59
да, и так и сяк
23 Rie
 
23.09.12
19:06
(22) Покажи код. А то что-то тут не срастается. ТЗ.ВыбратьСтроку(Стр) - пользователь выбирает строку. Ты её раскрашиваешь
ТЗ.ПолучитьСтрокуПоНомеру(Стр);
РаскраситьТекущуюСтроку();
И?
24 DES
 
23.09.12
19:12
это что за код ?
Мне нужно раскрасить при ТЗ.ВыбратьСтроку().
т.е. получить раскрашенную ТЗ всю, а не текущей строки.
25 DES
 
23.09.12
19:12
Код в (2)
26 Rie
 
23.09.12
19:35
(25) Код в (2) и не должен работать. Судя про всему, он в ПослеОткрытия. Но тогда куда (в какую несуществующую строку) пишется раскраска?
27 big
 
24.09.12
05:44
(2) Судя по имени колонки "FormEx_ПланРаскраски", можно предположить, что применен метод ПланРаскраски(). Поэтому всё, что советовали типа "BRUSH[0x0000FF]COUNT[2]" работать не будет. Т.к. макросы COUNT и INDENT не обрабатываются.
Поэтому, если план раскраски все-таки включен, то колонку надо создавать вот с такими параметрами:

тз.НоваяКолонка("Цвет","Строка",,,"FormEx_ПланРаскраски");
Т.е. "FormEx_ПланРаскраски" должен быть заголовком колонки, а не именем. Надо будет ещё малость поработать над функцией заполнения этой колонки, но это собссно уже мелочи
28 big
 
24.09.12
05:47
(27) + для простоты эксперимента запиши в эту колонку (она должна быть первая и невидимая) вот такую строку
"()(BRUSH[6773995])(BRUSH[6773995])(BRUSH[6773995])". Должно окраситься 3 колонки в таблице
29 ADirks
 
24.09.12
09:14
Не выйдет у тебя так ничего, не парься.
А сделай нормальную форму (обработку) с ТЗ на ней. И раскрашивай там сколько влезет. Заодно и размер нормальный будет, и вообще вид, а не то убожество, которое ВыбратьСтроку().
30 orefkov
 
24.09.12
09:40
(29)
Опередил :)
Имхо, лучше свою форму с ТЗ накидать.
31 DES
 
24.09.12
12:58
Эх, а счастье было так близко...