|
1С 8.3 УФ. Активация таблицы значений | ☑ | ||
---|---|---|---|---|
0
kupreeff
28.07.17
✎
11:29
|
Доброго дня. На форме обработки есть 2 ТЗ, в каждой по 1 строке. Можно ли отловить событие, когда пользователь выбирает поочередно строку в этих ТЗ? ПриАктивизацииСтроки работает, когда пользователь поочередно выбирает строки в одной ТЗ.спасибо.
|
|||
1
RomaH
naïve
28.07.17
✎
11:30
|
ВК
|
|||
2
kupreeff
28.07.17
✎
11:38
|
(1) т.е.?
|
|||
3
FIXXXL
28.07.17
✎
11:40
|
(0) когда пользователь выбирает поочередно строку в этих ТЗ
промеж ТЗ фокус переключает или что надо? |
|||
4
Numerus Mikhail
28.07.17
✎
11:41
|
(0) реквизит с типом булево
при активизации строки первой тз устанавливаешь его в истину при активизации строки второй тз проверяешь истина он или нет, если да, то устанавливаешь его в ложь и делаешь свои грязные делишки? |
|||
5
kupreeff
28.07.17
✎
11:46
|
(3) это частный случай поведения. строк может быть больше. Если по одной строке, то изначально при открытии формы они обе активны (выделены светло-желтым фоном), если щелкать в строку - она становится выделена ярко-желтым фоном. Щелкаем по другой ТЗ - у другой становится строка выделена ярко-желтым фоном, предыдущая же становится с бледным желтым фоном, но при этом в обоих случаях строки постоянно остаются с т.з. 1С активны и указанное мною событие не срабатывает. Нужно это для того, чтобы в третей ТЗ выводить данные по выбранной строке в одной из ТЗ.
|
|||
6
kupreeff
28.07.17
✎
11:47
|
(4) в том и дело, я не могу отловить, что строка активировалась во второй ТЗ.
|
|||
7
RomaH
naïve
28.07.17
✎
11:47
|
(2) т.е. только внешняя компонента
|
|||
8
RomaH
naïve
28.07.17
✎
11:48
|
а зачем?
|
|||
9
RomaH
naïve
28.07.17
✎
11:50
|
у меня использовалась для смены раскладки клавиатуры в зависимости от активного поля - но это было много лет назад
пересмотрели логику на более "правильную" |
|||
10
kupreeff
28.07.17
✎
11:50
|
(8) мне нужно в третьей ТЗ выводить данные по выбранной строке в одной из двух ТЗ.
|
|||
11
FIXXXL
28.07.17
✎
11:52
|
(6) анализируй тек.элемент формы, и уже потом у него строку
|
|||
12
SiAl-chel
28.07.17
✎
11:52
|
(0) Делаешь клиентскую функцию или процедуру с параметрами ТабличноеПоле и ТекущаяСтрока. Создаешь для каждого поля обработчики ПриАктивизацииСтроки, из которых передаешь в свою процедуру текущее поле и текущую строку. А там уже их анализируешь и делаешь что надо.
|
|||
13
kupreeff
28.07.17
✎
11:53
|
(11) вот, я это нутром чую, но где мне анализировать текущий элемент формы? в каком событии?
|
|||
14
RomaH
naïve
28.07.17
✎
11:53
|
(10) а на примере
|
|||
15
SiAl-chel
28.07.17
✎
11:54
|
(13) в ПриАктивизацииСтроки у тебя первый параметр - это элемент формы типа ТабличноеПоле.
|
|||
16
kupreeff
28.07.17
✎
11:54
|
(12) ПриАктивацииСтроки не вызывается же при перещелквиании между ТЗ.
|
|||
17
RomaH
naïve
28.07.17
✎
11:57
|
https://yadi.sk/d/ehtegfPH3LVQPo
// Устанавливает компоненту сканирования Процедура УстановитьКомпоненту() Экспорт //{L"GetKeyboardLayout", L"ПолучитьРаскладку"}, //{L"SetKeyboardLayout", L"УстановитьРаскладку"}, //{L"GetVersion", L"Версия"}, //{L"ConnectOPL6845R", L"ПодключитьOPL6845R"}, //{L"DisconnectOPL6845R", L"ОтключитьOPL6845R"}, //{L"MakeEAN13", L"ПолучитьШтрихкодEAN13"}, //{L"ControlFocus", L"СледитьЗаФокусом"}, //{L"DontControlFocus", L"НеСледитьЗаФокусом"} //ru - 0x0419 - 1049 //en - 0x0409 - 1033 Если Компонента1cruen = Неопределено Тогда КодВозврата = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаСменыРаскладки", "ruen",ТипВнешнейКомпоненты.Native); Если КодВозврата Тогда Компонента1cruen = Новый("AddIn.ruen.AddInNativeExtension"); ВерсияКомпоненты = Компонента1cruen.Версия(); .... &НаКлиенте Процедура ВнешнееСобытие(Источник, Событие, Данные) Если Не ВводДоступен() Тогда Возврат; КонецЕсли; Если Событие = "Фокус" Тогда Если ТипЗнч(ТекущийЭлемент)= Тип("ПолеФормы") Тогда Если ТекущийЭлемент.Вид = ВидПоляФормы.ПолеВвода Тогда Если ТекущийЭлемент = Элементы.ДиагнозНаправившегоУчреждения Тогда Если ЭтаФорма.РаскладкаИзмененаАвтоматически Тогда МИС_СменаРаскладкиКлавиатурыКлиент.УстановитьРаскладку(1033); Иначе попробуй - не факт что на 8.3 работает расскажи о результатах |
|||
18
kupreeff
28.07.17
✎
11:57
|
(14)
&НаКлиенте Процедура ТЗ1ПриАктивизацииСтроки(Элемент) ОбработатьВыбор(Элемент); КонецПроцедуры Процедура ТЗ2ПриАктивизацииСтроки(Элемент) // Вставить содержимое обработчика. ОбработатьВыбор(Элемент); КонецПроцедуры Процедура ОбработатьВыбор(Элемент) Если Элемент.ТекущиеДанные=Неопределено Тогда Возврат КонецЕсли; Если ТекущийДок<>Элемент.ТекущиеДанные.Док Тогда ТекущийДок=Элемент.ТекущиеДанные.Запрос; ЗаполнитьИнформациюПоДоку(ТекущийДок); Конецесли; КонецПроцедуры |
|||
19
RomaH
naïve
28.07.17
✎
11:57
|
&НаКлиенте
Процедура ПриОткрытии(Отказ) //МИС_СменаРаскладкиКлавиатурыКлиент.УстановитьКомпоненту(); //Компонента1cruen.СледитьЗаФокусом(); |
|||
20
Вафель
28.07.17
✎
11:58
|
можно и активизации одной ТЗ сбрасывать тек строку в
другой ТЗ |
|||
21
RomaH
naïve
28.07.17
✎
11:58
|
(18) я имел в виду - на примере реальных данных и реального БП
|
|||
22
Вафель
28.07.17
✎
11:59
|
по идее нужно бы использовать событие формы при смене текущего элемента.
Но увы такого события нет |
|||
23
kupreeff
28.07.17
✎
12:00
|
(20) не вижу, как можно сбросить текущую строку программно.
|
|||
24
kupreeff
28.07.17
✎
12:01
|
(21) я так понимаю из компоненты нужно взять идею внешнего события "Фокус"
|
|||
25
kupreeff
28.07.17
✎
12:03
|
(21) подключить компоненту, боюсь, сходу не смогу, ни разу не делал(
|
|||
26
dezss
28.07.17
✎
12:03
|
(16) так меняется текущий элемент формы.
|
|||
27
kupreeff
28.07.17
✎
12:07
|
(26) меняется, но мне нужно событие, отлавливающее фокус, чтобы это проверить.
|
|||
28
RomaH
naïve
28.07.17
✎
12:10
|
(25)
&НаКлиенте Процедура ПриОткрытии(Отказ) КодВозврата = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаСменыРаскладки", "ruen",ТипВнешнейКомпоненты.Native); Если КодВозврата Тогда Компонента1cruen = Новый("AddIn.ruen.AddInNativeExtension"); КонецЕсли; Компонента1cruen.СледитьЗаФокусом(); КонецПроцедуры &НаКлиенте Процедура ВнешнееСобытие(Источник, Событие, Данные) Если Не ВводДоступен() Тогда Возврат КонецЕсли; Сообщить(ЭтаФорма.ТекущийЭлемент.Имя); КонецПроцедуры немного глючит в плане правильного подключения, но работает |
|||
29
RomaH
naïve
28.07.17
✎
12:11
|
но ... еще раз - ты так и не рассказал - зачем тебе это надо
|
|||
30
kupreeff
28.07.17
✎
12:12
|
нашел подобную тему, предлагают использовать ОбработчикОжидания, как его прикрутить?
|
|||
31
kupreeff
28.07.17
✎
12:14
|
(29)мне показалось, говорил) повторю - мне нужно в третьей ТЗ выводить инфу по документу, курсор на который поставил пользователь.
|
|||
32
kupreeff
28.07.17
✎
12:15
|
(28)КодВозврата = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаСменыРаскладки", "ruen",ТипВнешнейКомпоненты.Native);
как туда ее засунуть? |
|||
33
RomaH
naïve
28.07.17
✎
12:15
|
(31) что в первых двух ТЗ и что в третьей?
|
|||
34
kupreeff
28.07.17
✎
12:18
|
(33) упрощенно если, колонки "Док" типа документа некого вида - в ТЗ1 и ТЗ2, в ТЗ3 - строки табличной части документа, на который установлен фокус. Ну даже не упрощенно, по сути именно такая модель.
|
|||
35
Рэйв
28.07.17
✎
12:18
|
(0)У формы есть обработчик ОбработкаАктивации.Поколдуй над ней, может пригодится для твоих дел.
|
|||
36
Вафель
28.07.17
✎
12:19
|
(35) Это совсем не оно
|
|||
37
Мимохожий Однако
28.07.17
✎
12:23
|
Положи эти ТЗ на разные страницы и используй определение страницы ПриСменеСтраницы()
|
|||
38
kupreeff
28.07.17
✎
12:28
|
(28) я создал Общий макет и загрузил как двоичные данные dll, правильно?
|
|||
39
kupreeff
28.07.17
✎
12:29
|
(37) не очень удобно в работе получается, к сожалению.
|
|||
40
Вафель
28.07.17
✎
12:29
|
А вариант (20) чем не подошел?
|
|||
41
Мимохожий Однако
28.07.17
✎
12:30
|
Можно дать разные имена колонкам и при активации строки смотреть еще и колонку для дальнейших действий.
|
|||
42
kupreeff
28.07.17
✎
12:31
|
(41) если б я мог отловить эту активацию...
|
|||
43
kupreeff
28.07.17
✎
12:31
|
(20) как сбрасывать не знаю.
|
|||
44
kupreeff
28.07.17
✎
12:34
|
(28) Компонента1cruen.СледитьЗаФокусом();
возвращает в итоге Истину, правда не в ПриОткрытии, а в ПриСозданииНаСервере я все написал. Норм? |
|||
45
RomaH
naïve
28.07.17
✎
12:35
|
||||
46
kupreeff
28.07.17
✎
12:37
|
(45) как работает понятно)
|
|||
47
RomaH
naïve
28.07.17
✎
12:39
|
(46) ну осталось совсем малость, разобраться с клиент-серверным вариантом и как подключать ВК
|
|||
48
kupreeff
28.07.17
✎
12:40
|
(47) да.
|
|||
49
Вафель
28.07.17
✎
12:41
|
Элементы.ТЗ1.ВыделенныеСтроки.Очистить()
|
|||
50
kupreeff
28.07.17
✎
12:46
|
(47) я ж понимаю, на серной процедуре нет смысла ее запускать, если она должна работать на форме? ПриОткрытии у меня не выхывается. куда писать подключение ВК...
|
|||
51
kupreeff
28.07.17
✎
12:50
|
(50) вызывается, что-то затупил...но КодВозврата=Ложь. Походу, я как-то общий макет ни так создаю. Хотя, когда в серверной писал процедуре, возвращалась Истина.
|
|||
52
dezss
28.07.17
✎
12:57
|
(43) тз1.ТекущаяСтрока = Неопределено, пробовал?
|
|||
53
kupreeff
28.07.17
✎
13:01
|
(52)да, в ПриОткрытии не работает.(49) тоже.
|
|||
54
kupreeff
28.07.17
✎
13:04
|
(45) почему компонента может возвращать Ложь? Я неправильно сделал общий макет?
|
|||
55
kupreeff
28.07.17
✎
13:14
|
(45) сделал так:
КодВозврата = ПодключитьВнешнююКомпоненту("F:\Полезное\8\КомпонентаСменыРаскладки\mistools.dll", "ruen",ТипВнешнейКомпоненты.Native); Если КодВозврата Тогда Компонента1cruen = Новый("AddIn.ruen.AddInNativeExtension"); КонецЕсли; Компонента1cruen.СледитьЗаФокусом(); СледитьЗаФокусом -возвращает Истину. Но внешнее событие не возникает. |
|||
56
RomaH
naïve
28.07.17
✎
13:15
|
ВК - это зип архив ... почитай что там и как
|
|||
57
kupreeff
28.07.17
✎
14:59
|
(56)по твоей ссылке рар-архив, либо я не в теме.
|
|||
58
kupreeff
28.07.17
✎
15:37
|
Всё, день промахался с такой ерундой, оказывается)
dezss оказался прав, все спасибо за помощь! |
|||
59
kupreeff
28.07.17
✎
15:49
|
*всем!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |