Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

1С 8.3 УФ. Активация таблицы значений

1С 8.3 УФ. Активация таблицы значений
Я
   kupreeff
 
28.07.17 - 11:29
Доброго дня. На форме обработки есть 2 ТЗ, в каждой по 1 строке. Можно ли отловить событие, когда пользователь выбирает поочередно строку в этих ТЗ? ПриАктивизацииСтроки работает, когда пользователь поочередно выбирает строки в одной ТЗ.спасибо.
 
 
   RomaH
 
1 - 28.07.17 - 11:30
ВК
   kupreeff
 
2 - 28.07.17 - 11:38
(1) т.е.?
   FIXXXL
 
3 - 28.07.17 - 11:40
(0) когда пользователь выбирает поочередно строку в этих ТЗ

промеж ТЗ фокус переключает или что надо?
   Numerus Mikhail
 
4 - 28.07.17 - 11:41
(0)  реквизит с типом булево
при активизации строки первой тз устанавливаешь его в истину
при активизации строки второй тз проверяешь истина он или нет, если да, то устанавливаешь его в ложь и делаешь свои грязные делишки?
   kupreeff
 
5 - 28.07.17 - 11:46
(3) это частный случай поведения. строк может быть больше. Если по одной строке, то изначально при открытии формы они обе активны (выделены светло-желтым фоном), если щелкать в строку - она становится выделена ярко-желтым фоном. Щелкаем по другой ТЗ - у другой становится строка выделена ярко-желтым фоном, предыдущая же становится с бледным желтым фоном, но при этом в обоих случаях строки постоянно остаются с т.з. 1С активны и указанное мною событие не срабатывает. Нужно это для того, чтобы в третей ТЗ выводить данные по выбранной строке в одной из ТЗ.
   kupreeff
 
6 - 28.07.17 - 11:47
(4) в том и дело, я не могу отловить, что строка активировалась во второй ТЗ.
   RomaH
 
7 - 28.07.17 - 11:47
(2) т.е. только внешняя компонента
   RomaH
 
8 - 28.07.17 - 11:48
а зачем?
   RomaH
 
9 - 28.07.17 - 11:50
у меня использовалась для смены раскладки клавиатуры в зависимости от активного поля - но это было много лет назад
пересмотрели логику на более "правильную"
   kupreeff
 
10 - 28.07.17 - 11:50
(8) мне нужно в третьей ТЗ выводить данные по выбранной строке в одной из двух ТЗ.
   FIXXXL
 
11 - 28.07.17 - 11:52
(6) анализируй тек.элемент формы, и уже потом у него строку
   SiAl-chel
 
12 - 28.07.17 - 11:52
(0) Делаешь клиентскую функцию или процедуру с параметрами ТабличноеПоле и ТекущаяСтрока. Создаешь для каждого поля обработчики ПриАктивизацииСтроки, из которых передаешь в свою процедуру текущее поле и текущую строку. А там уже их анализируешь и делаешь что надо.
   kupreeff
 
13 - 28.07.17 - 11:53
(11) вот, я это нутром чую, но где мне анализировать текущий элемент формы? в каком событии?
   RomaH
 
14 - 28.07.17 - 11:53
(10) а на примере
   SiAl-chel
 
15 - 28.07.17 - 11:54
(13) в ПриАктивизацииСтроки у тебя первый параметр - это элемент формы типа ТабличноеПоле.
   kupreeff
 
16 - 28.07.17 - 11:54
(12) ПриАктивацииСтроки не вызывается же при перещелквиании между ТЗ.
   RomaH
 
17 - 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 работает
расскажи о результатах
   kupreeff
 
18 - 28.07.17 - 11:57
(14)
&НаКлиенте
Процедура ТЗ1ПриАктивизацииСтроки(Элемент)
    ОбработатьВыбор(Элемент);    
КонецПроцедуры
Процедура ТЗ2ПриАктивизацииСтроки(Элемент)
    // Вставить содержимое обработчика.

    ОбработатьВыбор(Элемент);
КонецПроцедуры
Процедура ОбработатьВыбор(Элемент)   
    Если Элемент.ТекущиеДанные=Неопределено Тогда Возврат КонецЕсли;
    Если ТекущийДок<>Элемент.ТекущиеДанные.Док Тогда
        ТекущийДок=Элемент.ТекущиеДанные.Запрос;
        ЗаполнитьИнформациюПоДоку(ТекущийДок);
    Конецесли;
КонецПроцедуры
   RomaH
 
19 - 28.07.17 - 11:57
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    
    //МИС_СменаРаскладкиКлавиатурыКлиент.УстановитьКомпоненту();


    //Компонента1cruen.СледитьЗаФокусом();
   Вафель
 
20 - 28.07.17 - 11:58
можно и активизации одной ТЗ сбрасывать тек строку в 
другой ТЗ
   RomaH
 
21 - 28.07.17 - 11:58
(18) я имел в виду - на примере реальных данных и реального БП
   Вафель
 
22 - 28.07.17 - 11:59
по идее нужно бы использовать событие формы при смене текущего элемента.
Но увы такого события нет
   kupreeff
 
23 - 28.07.17 - 12:00
(20) не вижу, как можно сбросить текущую строку программно.
   kupreeff
 
24 - 28.07.17 - 12:01
(21) я так понимаю из компоненты нужно взять идею внешнего события "Фокус"
   kupreeff
 
25 - 28.07.17 - 12:03
(21) подключить компоненту, боюсь, сходу не смогу, ни разу не делал(
   dezss
 
26 - 28.07.17 - 12:03
(16) так меняется текущий элемент формы.
   kupreeff
 
27 - 28.07.17 - 12:07
(26) меняется, но мне нужно событие, отлавливающее фокус, чтобы это проверить.
   RomaH
 
28 - 28.07.17 - 12:10
(25)
&НаКлиенте
Процедура ПриОткрытии(Отказ)

    КодВозврата = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаСменыРаскладки", "ruen",ТипВнешнейКомпоненты.Native);
    
    Если КодВозврата Тогда
        Компонента1cruen = Новый("AddIn.ruen.AddInNativeExtension");    
    КонецЕсли;
    
    Компонента1cruen.СледитьЗаФокусом();
        
КонецПроцедуры

&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
    
    Если Не ВводДоступен() Тогда
        Возврат
    КонецЕсли;
    
    Сообщить(ЭтаФорма.ТекущийЭлемент.Имя);
    
КонецПроцедуры


немного глючит в плане правильного подключения, но работает
   RomaH
 
29 - 28.07.17 - 12:11
но ... еще раз  - ты так и не рассказал - зачем тебе это надо
   kupreeff
 
30 - 28.07.17 - 12:12
нашел подобную тему, предлагают использовать ОбработчикОжидания, как его прикрутить?
 
 Рекламное место пустует
   kupreeff
 
31 - 28.07.17 - 12:14
(29)мне показалось, говорил) повторю - мне нужно в третьей ТЗ выводить инфу по документу, курсор на который поставил пользователь.
   kupreeff
 
32 - 28.07.17 - 12:15
(28)КодВозврата = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаСменыРаскладки", "ruen",ТипВнешнейКомпоненты.Native);
как туда ее засунуть?
   RomaH
 
33 - 28.07.17 - 12:15
(31) что в первых двух ТЗ и что в третьей?
   kupreeff
 
34 - 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
Положи эти ТЗ на разные страницы и используй определение страницы ПриСменеСтраницы()
   kupreeff
 
38 - 28.07.17 - 12:28
(28) я создал Общий макет и загрузил как двоичные данные dll, правильно?
   kupreeff
 
39 - 28.07.17 - 12:29
(37) не очень удобно в работе получается, к сожалению.
   Вафель
 
40 - 28.07.17 - 12:29
А вариант (20) чем не подошел?
   МимохожийОднако
 
41 - 28.07.17 - 12:30
Можно дать разные имена колонкам и при активации строки смотреть еще и колонку для дальнейших действий.
   kupreeff
 
42 - 28.07.17 - 12:31
(41) если б я мог отловить эту активацию...
   kupreeff
 
43 - 28.07.17 - 12:31
(20) как сбрасывать не знаю.
   kupreeff
 
44 - 28.07.17 - 12:34
(28) Компонента1cruen.СледитьЗаФокусом();
возвращает в итоге Истину, правда не в ПриОткрытии, а в ПриСозданииНаСервере я все написал. Норм?
   RomaH
 
45 - 28.07.17 - 12:35
   kupreeff
 
46 - 28.07.17 - 12:37
(45) как работает понятно)
   RomaH
 
47 - 28.07.17 - 12:39
(46) ну осталось совсем малость, разобраться с клиент-серверным вариантом и как подключать ВК
   kupreeff
 
48 - 28.07.17 - 12:40
(47) да.
   Вафель
 
49 - 28.07.17 - 12:41
Элементы.ТЗ1.ВыделенныеСтроки.Очистить()
   kupreeff
 
50 - 28.07.17 - 12:46
(47) я ж понимаю, на серной процедуре нет смысла ее запускать, если она должна работать на форме? ПриОткрытии у меня не выхывается. куда писать подключение ВК...
   kupreeff
 
51 - 28.07.17 - 12:50
(50) вызывается, что-то затупил...но КодВозврата=Ложь. Походу, я как-то общий макет ни так создаю. Хотя, когда в серверной писал процедуре, возвращалась Истина.
   dezss
 
52 - 28.07.17 - 12:57
(43) тз1.ТекущаяСтрока = Неопределено, пробовал?
   kupreeff
 
53 - 28.07.17 - 13:01
(52)да, в ПриОткрытии не работает.(49) тоже.
   kupreeff
 
54 - 28.07.17 - 13:04
(45) почему компонента может возвращать Ложь? Я неправильно сделал общий макет?
   kupreeff
 
55 - 28.07.17 - 13:14
(45) сделал так:
КодВозврата = ПодключитьВнешнююКомпоненту("F:\Полезное\8\КомпонентаСменыРаскладки\mistools.dll", "ruen",ТипВнешнейКомпоненты.Native);
        
        Если КодВозврата Тогда
            Компонента1cruen = Новый("AddIn.ruen.AddInNativeExtension");    
        КонецЕсли;
        
        Компонента1cruen.СледитьЗаФокусом();
СледитьЗаФокусом -возвращает Истину. Но внешнее событие не возникает.
   RomaH
 
56 - 28.07.17 - 13:15
ВК - это зип архив ... почитай что там и как
   kupreeff
 
57 - 28.07.17 - 14:59
(56)по твоей ссылке рар-архив, либо я не в теме.
   kupreeff
 
58 - 28.07.17 - 15:37
Всё, день промахался с такой ерундой, оказывается)
dezss оказался прав, все спасибо за помощь!
   kupreeff
 
59 - 28.07.17 - 15:49
*всем!


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.