Имя: Пароль:
1C
1С v8
Смена раскладки в определенном реквизите дока
,
0 rowflag
 
12.11.12
09:16
Как? И где хранить соответствие раскладок и реквизитов доков?
1 Defender aka LINN
 
12.11.12
09:19
Для нахрена?
2 rowflag
 
12.11.12
09:21
Для того чтобы не переключать ее самому.
3 Defender aka LINN
 
12.11.12
09:32
(2) Пользователь умрет, если 2 кнопки лишний раз нажмет?
Засылай хоткей переключения при активации элемента или через какие-нить скрипты меняй раскладку. Но баловство это все, на самом деле.
4 rowflag
 
12.11.12
09:35
(3) да. Лишние действия надо убрать.
5 k1us181b
 
12.11.12
09:37
Если ПользовательУмерОтПереключенияРаскладки Тогда
НайтиНовогоПользователя();
КонецЕсли;
6 Godofsin
 
12.11.12
09:39
+(5)
Если ПользовательУмерОтПереключенияРаскладки Тогда
ПохоронитьПользователя();
НикомуНеГоворитьОУмершемПользователе = Истина;
НайтиНовогоПользователя();
КонецЕсли;
7 rowflag
 
12.11.12
09:40
(еще нужен голосовой ввод цифр. Как прикрутить?)
8 drcrasher
 
12.11.12
09:41
+(6) а кнопку "Сделать издато" не надо?
9 Cube
 
12.11.12
09:41
+(6)
Если ПользовательУмерОтПереключенияРаскладки Тогда
   Попытка
       ПохоронитьПользователяПоТихому();
   Исключение
       УбитьСвидетелей();
       ИзбавитьсяОтТел();
   КонецПопытки;
   НикомуНеГоворитьОУмершемПользователе = Истина;
   НайтиНовогоПользователя();
КонецЕсли;
10 Бешеная Нога
 
12.11.12
09:41
классические адинеснеги. если не знают ответа на вопрос сразу идут по пути "а нафига это надо".
11 drcrasher
 
12.11.12
09:41
(7) нажмите ctrl+alt+del и выберите пункт "Сменить пользователя"
12 drcrasher
 
12.11.12
09:42
(10) автоматизация должна быть в разумных пределах.
13 Бешеная Нога
 
12.11.12
09:42
Я думаю нужно повесить обработчик при активизации и посылать сочетание клавиш
14 drcrasher
 
12.11.12
09:43
+(12) и да. не всегда стоит идти на поводу пользователя, если ТС не автоматизирует АРМ, где юзер вводит 1000+ "карточек" в день.
15 Бешеная Нога
 
12.11.12
09:43
(12) когда есть задача по вводу определенного количества данных оператором, часть из которых на английском - думаю фишка которую хочет автор заметно бы упросила работу
16 Бешеная Нога
 
12.11.12
09:44
(14) а откуда ты знаешь что там нет задачи "1000 карточек в день"?
17 GenV
 
12.11.12
09:45
(0) А не проще тогда проверять язык текста и преобразовывать в другую раскладку после ввода (можно после подтверждения)?
18 drcrasher
 
12.11.12
09:45
19 drcrasher
 
12.11.12
09:46
(17) тогда уж поставить Punto Ыцшесрук =)
20 drcrasher
 
12.11.12
09:47
(15)(16) в топике об этом не сказано.
Вполне может быть задача по вводу карточки сотрудника (раз в месяц), где есть целое одно поле на ин.язе., но хаэру влом ручками тыкать
21 Бешеная Нога
 
12.11.12
09:47
(20) тоже верно
22 Бешеная Нога
 
12.11.12
09:48
(20) но тогда это уже относится к "автору больше делать нехер"
23 GenV
 
12.11.12
09:49
(19)+1
24 rowflag
 
12.11.12
10:11
(13) спасибо!
25 rowflag
 
12.11.12
10:11
(где хранить соответствия реквезит - раскладка?)
26 rowflag
 
12.11.12
10:15
(вариант (17) не подходит)
27 Бешеная Нога
 
12.11.12
10:16
(25) сделай регистр
28 rowflag
 
12.11.12
10:16
(менять раскладку надо сразу после попадания фокуса на этот элемент)
29 RomaH
 
naïve
12.11.12
10:25
у нас реализовано
на ВК
что интересует?
30 RomaH
 
naïve
12.11.12
11:02
почему ВК - событие активации пля можно поймать только в таблице
а в поле ввода - фиг
поэтому ВК - подключается событие смена фокуса


Процедура ВнешнееСобытие(Источник, Событие, Данные)
   
   Если Не ВводДоступен() Тогда
       Возврат;
   КонецЕсли;
   
   Если Событие = "Фокус" Тогда
       
       Если ТипЗнч(ТекущийЭлемент)= Тип("ПолеФормы") Тогда
           
           Если ТекущийЭлемент.Вид = ВидПоляФормы.ПолеВвода Тогда
               
               Если ЭтаФорма.РаскладкаИзмененаАвтоматически Тогда
                   
                   МИС_СменаРаскладкиКлавиатурыКлиент.УстановитьРаскладку(ЭтаФорма.ТекущаяРаскладка);    
                   
               КонецЕсли;
               
           КонецЕсли;
           
       ИначеЕсли ЭтаФорма.РаскладкаИзмененаАвтоматически Тогда
           
           ЭтаФорма.РаскладкаИзмененаАвтоматически = Ложь;
           
           МИС_СменаРаскладкиКлавиатурыКлиент.УстановитьРаскладку(ЭтаФорма.ТекущаяРаскладка);    
           
       КонецЕсли;
       
       
   КонецЕсли;
   
КонецПроцедуры
31 RomaH
 
naïve
12.11.12
11:04
и со сменой

&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
   
   Если Не ВводДоступен() Тогда
       Возврат;
   КонецЕсли;
   
   Если Событие = "Фокус" Тогда
       
       Если ТипЗнч(ТекущийЭлемент)= Тип("ПолеФормы") Тогда
           
           Если ТекущийЭлемент.Вид = ВидПоляФормы.ПолеВвода Тогда
               
               Если ТекущийЭлемент = Элементы.ДиагнозНаправившегоУчреждения Тогда
                   
                   Если ЭтаФорма.РаскладкаИзмененаАвтоматически Тогда
                       МИС_СменаРаскладкиКлавиатурыКлиент.УстановитьРаскладку(1033);
                   Иначе
                       ЭтаФорма.ТекущаяРаскладка = МИС_СменаРаскладкиКлавиатурыКлиент.УстановитьРаскладку(1033);
                   КонецЕсли;
                   
                   ЭтаФорма.РаскладкаИзмененаАвтоматически = ЭтаФорма.ТекущаяРаскладка <> 1033;
                   
               ИначеЕсли ЭтаФорма.РаскладкаИзмененаАвтоматически Тогда
                   
                   МИС_СменаРаскладкиКлавиатурыКлиент.УстановитьРаскладку(ЭтаФорма.ТекущаяРаскладка);    
                   
               КонецЕсли;
               
           КонецЕсли;
           
       ИначеЕсли ЭтаФорма.РаскладкаИзмененаАвтоматически Тогда
           
           ЭтаФорма.РаскладкаИзмененаАвтоматически = Ложь;
           
           МИС_СменаРаскладкиКлавиатурыКлиент.УстановитьРаскладку(ЭтаФорма.ТекущаяРаскладка);    
           
       КонецЕсли;
       
       
   КонецЕсли;
   
КонецПроцедуры
32 RomaH
 
naïve
12.11.12
11:08
там заморочки по хранению текущей раскладки - если это реально оператор и 1000 карточек в день - то обработка только внутри формы и пофиг

но если это подключать еще и к полям где часто ипользуется поиск через форму выбора - то как бы плучается:

вошли в поле ввода диагноза - сменили раскладку на английскую - пользователь открыл форму выбора - раскладка осталась английской, а надо бы вернуть на ту которая была

т.е. текущую раскладку хранить в параметрах сеанса, и флаг что раскладка была изменена автоматически - тоже в параметры сеанса
33 rowflag
 
12.11.12
12:03
(32)  спасибо!
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.