Имя: Пароль:
1C
 
Как узнать какая строка выбрана в ТЧ документа
🠗 (Волшебник 05.07.2010 11:06)
0 Domovoi
 
04.07.10
23:37
При нажатии на строку как узнать что она выбрана?
1 Cthulhu
 
04.07.10
23:43
текст на морду, в формулу "НомерСтроки" попробуй.
2 Злопчинский
 
04.07.10
23:44
хм..
1. НомерСтроки - возвращает ту, на которой стоит курсор
2. ПриНачалеРедактирования посмотри
3 Domovoi
 
04.07.10
23:49
(2)2)Не подходит.
Какой процесс отвечает за выбор строки?
ПриВыбореСтроки() - не работает
Вообщем я хочу чтоб при нажатии на строку она выделялась цветом(допустим зеленым)
4 Рэйв
 
04.07.10
23:50
(3)Сейчас тебе комрады посоветуют формекс:)
5 Domovoi
 
04.07.10
23:51
(4)Так я и так его использую
6 Рэйв
 
04.07.10
23:51
(5)Тогда тебе комрады посоветуют 1С++ :)))
7 Cthulhu
 
04.07.10
23:52
(2): оно и надо, "хм.."
8 Злопчинский
 
04.07.10
23:53
(4) грузишь Formex? вставляешь колонку текстовую невидимую в ней
пишешь типа BRUSH[0x6666FF] - все колонки что справа - подкрашиваются, в скачиваемом зипе есть пример конфиги, также на Исе есть пример доработанной этой конфиги
9 Рэйв
 
04.07.10
23:53
(8)Ну вот:)
10 Cthulhu
 
04.07.10
23:55
(9): ну не 1с++  же, что "ну вот"?..
11 Domovoi
 
04.07.10
23:55
В ТЧ есть колонка с формулой Раскрасить() и СтрГруппа где напротив названия группы написано "гр";

Функция Раскрасить()
   Если Строка(СтрГруппа) = "гр" Тогда
       Возврат "BRUSH["+ПолучитьЦвет(255,255,100)+"]";    
   КонецЕсли;
   Если "Сдесь должно быть условие которое определяет что данная срока является выбранной" Тогда
       Возврат "BRUSH["+ПолучитьЦвет(255,0,0)+"]";  
   КонецЕсли;
КонецФункции

Процедура ПослеОткрытия()
   ФормаРасш = СоздатьОбъект("РасширениеФормы");
   ФормаРасш.РаскрашиватьТаблицу("МногострочнаяЧасть");
КонецПроцедуры
12 Рэйв
 
04.07.10
23:56
(10)Это я про предложение формекс:)
13 Domovoi
 
04.07.10
23:58
Так что нельзя никак определить?
14 Cthulhu
 
04.07.10
23:58
(12): хреново читаешь, у него уже есть формекс.
(11),(13): блин, заставляешь людей вместо тебя в отладчи к лезть?
15 Рэйв
 
04.07.10
23:59
(14)Я просто чказал, что ему предложат :)
16 Рэйв
 
04.07.10
23:59
*сказал
17 Domovoi
 
05.07.10
00:06
Да НомерСтроки показывает выбранную строку, вот только каким процессом записать его в переменную?:). (При раскраске перебираются все строки поэтому НомерСтроки собъется.)
18 Злопчинский
 
05.07.10
00:09
ну тут уже мозг включить надо...
и кардинально забить на ПолучитьЦвет - юзать Hex-кодировку
19 Domovoi
 
05.07.10
00:22
Hex-кодировку - это 0x6666FF. Если да, то почему ее?
20 Злопчинский
 
05.07.10
00:23
можно и не ее - но тогда либо функцию для пересчета вызывать либо впрямую писать занчение десятичное типа 1634598
21 Domovoi
 
05.07.10
00:46
Все наше ответ на вопрос)
22 Domovoi
 
05.07.10
00:46
*нашел
23 Cthulhu
 
05.07.10
00:57
(22): колись
24 Domovoi
 
05.07.10
01:03
Ну конешно изощренный метод.
Вобщем в Formex есть ПриНажатииПравойКнопки() (так же придется использовать при нажатии клавиатуры в моем случае) и буду получать
Процедура ПриНажатииПравойКнопки()
АктивнаяСтрока = НомерСроки;
КонецПроцедуры

Функция Раскрасить()
   Если Строка(СтрГруппа) = "гр" Тогда
       Возврат "BRUSH["+ПолучитьЦвет(255,255,100)+"]";    
   КонецЕсли;
   Если АктивнаяСтрока = НомерСроки Тогда
       Возврат "BRUSH["+ПолучитьЦвет(255,0,0)+"]";  
   КонецЕсли;
КонецФункции
25 Злопчинский
 
05.07.10
01:04
эх! при хождении клавишами курсором - не отработает...
26 Domovoi
 
05.07.10
01:06
+(24) Только не правой а левой.
(25)Работает
27 Злопчинский
 
05.07.10
01:07
интересно, как ты при двигании клавишами курсороа мудешь работать с АктивнаяСтрока
28 Domovoi
 
05.07.10
01:11
(27)А мне все равно какая клавиша нажимается.
АктивнаяСтрока = НомерСтроки а потом перерисовать и все. Перерисовка особо не нагружает комп так что лишние разы мешать не будут.
29 Domovoi
 
05.07.10
01:12
+(28)Хотя это недостаток, но влом отслеживать все)
30 Cthulhu
 
05.07.10
02:08
штатно выходит никак, жаль.
ну или не нашел пока как.
зарраза формула текстового реквизита на морде отрабатывает перед(!) сменой строки, и там Номерстроки - "бывший", при том, что в формуле текстовой колонки НомерСтроки - текущий, сиречь новый. и формула текстовой колонки отрабатывает по всем строками при обновлении формы только (стохастически - при изменении размеров окна), а если нет тотального обновления формы - то только в текущей строке (на которую переключаешься).
31 Злопчинский
 
05.07.10
02:41
чего-йто у вас криво гдетл.. у мну вроде все работало...
32 smaharbA
 
05.07.10
06:38
извините но это ипануться !
33 smaharbA
 
05.07.10
06:39
(30) ну да, он конечно, он да
и как это полное наименование номенклатуры в ТЧ под ней кажет не предидущее - ума не приложу
34 Vippi
 
05.07.10
06:53
(0) Если уж пользуешься FormEx, то хоть доу до конца дочитывай.
В частности про BRUSH_S
35 Vippi
 
05.07.10
06:53
доу=доку
36 Domovoi
 
05.07.10
09:34
(30)Мда. Вчер была только идея, а сегодня проверил косяк с раскраской. Тогда получается нельзя сделать, чтоб при выборе строки, она выделялась цветом, или 1с++ пора начинать изучать?:)
37 Domovoi
 
05.07.10
09:43
Прорисовка получается раньше чем нажатие кнопки)
38 Ёпрст
 
гуру
05.07.10
09:43
(36) можно.
39 Domovoi
 
05.07.10
09:44
(38)А как?
40 Ёпрст
 
гуру
05.07.10
09:46
(39) нужно красить текущую строку, или что?
41 Domovoi
 
05.07.10
09:47
(40)да
42 Domovoi
 
05.07.10
09:48
Может я невниметельно читал, а модно запустить раскраску в определенный момент?
43 Domovoi
 
05.07.10
09:48
*можно
44 Ёпрст
 
гуру
05.07.10
09:52
(41) текстовая колонка с формулой "(BRUSH_S[255])"  и заголовком
FormEx_ПланРаскраски и всё..
Ну и выборочную расскраску включить..
И не надо там ничего ловить.
45 Ёпрст
 
гуру
05.07.10
09:53
+44 никаких там НомЕрСтроки  и прочих перехватов клавишь..
46 Domovoi
 
05.07.10
09:59
(44)Выборочная раскраска - это ВключитьРаскраскуТаблиц?
47 Ёпрст
 
гуру
05.07.10
10:02
(46) нужно ИспользоватьПланРаскраски в 1 заточить
48 Domovoi
 
05.07.10
10:13
(47)Хмм что-то в справке ничего не нашел про эту команду. А куда ее вставлять? Я вставил в ПослеОткрытия().

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

Ничего не происходит,точнее старая раскраска не работает, а так щелкаю и ничего.
49 Ёпрст
 
гуру
05.07.10
10:25
(48) Не написано ?!!
СП читать не пробовал ?
:)

Заголовок у текстовой колонки задал, вот такой : FormEx_ПланРаскраски

ЗЫ: а старая и не будет работать, ты же новый план расскраски включил.
50 Domovoi
 
05.07.10
10:34
(49)Сп это FormEx.chm? Не нашел там. Заголовок задал FormEx_ПланРаскраски поставил перед всеми строками.
51 Ёпрст
 
гуру
05.07.10
10:36
(50) и там тоже есть и в синтаксисе помошнике и в *.doc, АЛьф везде постарался..
разве что в питере на заборе не пишет, что есть новый план расскраски.

И колонка с этим заголовком может располагаться где угодно.
52 Vippi
 
05.07.10
10:45
(51) Забил пацану голову.
Для BRUSH_S новый план раскраски не нужен.
Для BRUSH_C нужен.
53 Ёпрст
 
гуру
05.07.10
10:48
(52) да один хрен доку никто не читает..
:)
54 Domovoi
 
05.07.10
10:50
В упор не вижу  "ИспользоватьПланРаскраски" ни в доке, ни в FormEx.chm
55 Ёпрст
 
гуру
05.07.10
10:50
Хотя, красивее так, (BRUSH_C[255])(BRUSH_S[255]) делать,тут согласен..
56 Ёпрст
 
гуру
05.07.10
10:52
(54) в СП почитай.
57 Domovoi
 
05.07.10
10:57
СП (-это справка?) где взять?
58 Ёпрст
 
гуру
05.07.10
10:59
(57) СП -это синтаксис помощник, он же мужик в кепке в пофигураторе..
formex.als кинь в BIN ..
и читай в пофигураторе.
59 Domovoi
 
05.07.10
11:08
(58)Скинул. перезапустил конфигуратор выдает только стандартную справку, может еще чтото нада поменять или закинуть?
60 Ёпрст
 
гуру
05.07.10
11:29
(59) ничего не надо.. чего, в СП нет ни одного метода формекса ?
Нажми обновить в контекстном меню.
61 Domovoi
 
05.07.10
11:31
Процедура ПриОткрытии()
   ФормаРасш = СоздатьОбъект("РасширениеФормы");
   ФормаРасш.РаскрашиватьТаблицу("МногострочнаяЧасть");  
   Сервис = СоздатьОбъект("Сервис");
   Сервис.ВключитьРаскраскуТаблиц();
   Сервис.ИспользоватьПланРаскраски(1);
КонецПроцедуры

Вставил в ТЧ в самое начало колонку, в заголовок написал FormEx_ПланРаскраски, в формулу "BRUSH_C[100]" и "BRUSH_S[100]" пробовал. Ничего не получается.

(59)Есть. сейчас почитаю еще.
62 Domovoi
 
05.07.10
11:43
Скобоски в BRUSH_S[100] не поставил)
63 Ёпрст
 
гуру
05.07.10
11:49
(62) ну и ? взлетело ?
:)
64 Domovoi
 
05.07.10
11:51
Заработало. Вот только проблема. У меня в табличной части есть строки с наименованием групп они нада чтоб подсвечивались желтым. Но 2 раскраски нельзя вроде как чтб было, что делать?
65 Domovoi
 
05.07.10
11:56
Хе, сделал).Получилось что я хотел всем СПАСИБО!
66 Ёпрст
 
гуру
05.07.10
12:20
(64) да всё можно, функцию вешай и всё.
По условию красит группы и привет, ну и текущую строку целиком красит другим цветом.
67 Cthulhu
 
05.07.10
13:28
(33): ты штоль по слогам читать попробуй. я нигде не говорил, что формула текста на морде не отрабатывает для текущей строки, но лишь об очередности(!!!) отрабатывания функций текстового реквизита таб.части и текста на морде.
Ок, попробую разжевать. сначала отрабатывает функция текстовой колонки таб.части, а потом функция текста на морде. при этом если переходишь со строки на строку - отрабатывает формула только(!) в той строке, на которую переключаешься (и только потом - формула текста на морде), именно поэтому при отработке формулы таб.части при сравнении с запомненным (с помощью формулы теста на морде) текущим номером строки в формуле текста таб.части нихрена не отловить такое совпадение. При этом, если форма обновляется (растягиваешь её) - то в довольно случайный момент (при растягивании) "вдруг" отрабатывают формулы текстов всех видимых строк и только потом формула текста на морде.
Ну сам попробуй. В любой многострочный документ любой конфиги:
1) вставь в ТЧ тест с формулой ТекСтрокаТЧ()
2) на морду положи текст с формулой ЗапомнитьНомерТекСтроки()
3) в модуль формы перед первой процедурой/функцией добавь незатейливое:
Перем БылоНомСтр;
//==============================================================================
Функция ТекСтрокаТЧ()
   Сообщить(ТекущееВремя()+"("+_GetPerformanceCounter()
   +"), попытка отлова тек.строки: функция текстового реквизита таб.части: Ном.строки="+НомерСтроки
   +" / функция текстового реквизита на морде = "+БылоНомСтр+"...",".");
КонецФункции //ТекСтрокаТЧ
//------------------------------------------------------------------------------
Функция ЗапомнитьНомерТекСтроки()
   БылоНомСтр=НомерСтроки;
   Сообщить(ТекущееВремя()+"("+_GetPerformanceCounter()
   +"): функция текстового реквизита на морде: Ном.строки="+БылоНомСтр,"i");
КонецФункции //ЗапомнитьНомерТекСтроки
--- и "поиграйся". и как штатно(!) отловить в формуле текстового реквизита текущую строку (для раскрасить, для флажка, да все что угодно)???? я (пока?) не нашел.