| 
    
        
     
     | 
    
  | 
v7: Позиционирование курсора | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Invzor    
     04.03.15 
            ✎
    10:39 
 | 
         
        Друзья приветствую!
 
        есть такая проблемка... Есть форма справочника... на форме есть поле для ввода информации. Ставим курсор в это поле.. считываем штрихкод и выполняется обработка. После выполнения обработки курсор уходит в другое поле. Как можно сделать, что бы курсор опять там же стал? Что бы его не тыкать опять в это поле? Я так понимаю надо как-то задать положение курсора после выполнения чтения штрихкода... Можете подсказать?  | 
|||
| 
    1
    
        Ёпрст    
     гуру 
    04.03.15 
            ✎
    10:40 
 | 
         
        есть несколько способов     
         | 
|||
| 
    2
    
        Ёпрст    
     гуру 
    04.03.15 
            ✎
    10:40 
 | 
         
        http://my1c-archive.narod.ru/knowhow/chk_val.html
 
        вот один из них.  | 
|||
| 
    3
    
        Invzor    
     04.03.15 
            ✎
    10:51 
 | 
         
        Процедура ЧитатьШтрих()
 
        Сообщить("Читаю штрихкод..."); СпрКонтр = СоздатьОбъект("Справочник.Контрагенты"); СпрДог = создатьОбъект("Справочник.Договоры"); СпрШтрих = СоздатьОбъект("Справочник.Идентификатор"); Если СпрШтрих.НайтиПоКоду(Число(СоСканераШтрих)) =1 тогда Сообщить(СпрШтрих.Код); Если СоСканераШтрих >= 1 тогда СпрКонтр.ВыбратьЭлементы(); // Сообщить(СпрКонтр.Наименование); Пока СпрКонтр.ПолучитьЭлемент() = 1 Цикл // Сообщить(СпрКонтр.Наименование); конецЦикла; Если СпрКонтр.ЭтоГруппа() = 0 Тогда СпрДог.ИспользоватьВладельца(СпрКонтр); СпрДог.ВыбратьЭлементы(); // Сообщить(СпрДОг.ИдентификаторШтриха); Пока СпрДог.ПолучитьЭлемент() = 1 цикл Если СпрДог.ИдентификаторШтриха.код = СпрШтрих.Код тогда // сообщить(СпрДог.Код); сообщить(СпрКонтр.Наименование); СпрДог.Статус = Перечисление.СтатусДоговора.Действует; СпрДог.Записать(); конецЕсли; КонецЦИкла; КонецЕсли; КонецЦикла; СоСканераШтрих = ""; Сообщить("обработал"); Иначе Сообщить("Введен нулевой ШТРИХКОД"); конецЕсли; Иначе Сообщить("Такого штрихКода нет в базе!"); конецЕсли; КонецПроцедуры  | 
|||
| 
    4
    
        Invzor    
     04.03.15 
            ✎
    10:52 
 | 
         
        Данная процедура стоит в выполнении при нажатии курсора на ПОЛЕ ДЛЯ ВВОДА "ЧитатьСосканера"     
         | 
|||
| 
    5
    
        Invzor    
     04.03.15 
            ✎
    10:53 
 | 
         
        вот после нее нужно, что бы курсор возвращался в это же самое поле...     
         | 
|||
| 
    6
    
        Invzor    
     04.03.15 
            ✎
    11:07 
 | 
         
        (2) вот тут немного не понял... это я так понимаю если модально вызывается форма?...     
         | 
|||
| 
    7
    
        Ёпрст    
     гуру 
    04.03.15 
            ✎
    11:09 
 | 
         
        (6) нет.
 
        читай еще раз.  | 
|||
| 
    8
    
        Ёпрст    
     гуру 
    04.03.15 
            ✎
    11:10 
 | 
         
        фокус остается на реквизите диалога, если была вызвана из него любая модальная форма.     
         | 
|||
| 
    9
    
        Ёпрст    
     гуру 
    04.03.15 
            ✎
    11:11 
 | 
         
        в "любой" модальной форме в при открытии статусвозврата в 0 и привет - она даже не откроется, а фокус останется где и был     
         | 
|||
| 
    10
    
        Invzor    
     04.03.15 
            ✎
    11:19 
 | 
         
        ща отпишусь     
         | 
|||
| 
    11
    
        Invzor    
     04.03.15 
            ✎
    11:27 
 | 
         
        все равно перескакивает на следующую позицию после выполнения     
         | 
|||
| 
    12
    
        Ёпрст    
     гуру 
    04.03.15 
            ✎
    11:29 
 | 
         
        Больше кода     
         | 
|||
| 
    13
    
        Invzor    
     04.03.15 
            ✎
    11:41 
 | 
         
        Пробывал в процедуру при открытии добавлял:
 
        СтатусВозврата(0) и по другому пробовал: Если форма.параметр="НеИзменятьФокусВвода" тогда СтатусВозврата(0); возврат; КонецЕсли; В первом случае вообще не открывает форму.  | 
|||
| 
    14
    
        Ёпрст    
     гуру 
    04.03.15 
            ✎
    11:46 
 | 
         
        Не вижу ОткрытьФормуМодально в твоём коде в (3) в конце процедуры.     
         | 
|||
| 
    15
    
        Invzor    
     04.03.15 
            ✎
    13:11 
 | 
         
        (14) так я ж что и говорю... что открывать ее модально не надо... она открывается пользователем... пользователь открыл... поставил курсор в поле... тукгул в сканер бумажкой... штрих считался.. а вот после этого надо что бы курсор устанавливался в то же поле... а он перескакивает на следующую позицию... это можно как-то сделать?     
         | 
|||
| 
    16
    
        Ёпрст    
     гуру 
    04.03.15 
            ✎
    13:30 
 | 
         
        (15) понятно, рано вам еще этим заниматься.
 
        Мот того, то , что в (2) следует еще раз перечитать, на ночь ?  | 
|||
| 
    17
    
        Invzor    
     04.03.15 
            ✎
    13:42 
 | 
         
        А какой еще способ есть? (1)     
         | 
|||
| 
    18
    
        Ёпрст    
     гуру 
    04.03.15 
            ✎
    13:45 
 | 
         
        (17) активизировать..
 
        но, тебе тоже не подойдет, раз ты (2) не осилил  | 
|||
| 
    19
    
        Ёпрст    
     гуру 
    04.03.15 
            ✎
    13:45 
 | 
         
        можно еще формексом вернуть фокус     
         | 
|||
| 
    20
    
        Провинциальный 1сник    
     04.03.15 
            ✎
    13:46 
 | 
         
        Активизировать(<?>,);
 
        Синтаксис: Активизировать(<ИмяРеквизита>,<Режим>) Назначение: Активизировать для редактирования поле диалога. Параметры: <ИмяРеквизита> - необязательный параметр. Строка с именем поля диалога, которое нужно активизировать. Пустое имя элемента диалога используется для активизации всей формы. <Режим> - необязательный параметр. Имеет смысл только для строк списков. Число: 1 - войти в режим редактирования, 0 - не входить. Значение по умолчанию - 1. Замечание: Метод Активизировать может быть вызван из другого (внешнего) модуля, если в нем известен контекст формы, в которой нужно активизировать элемент диалога. Доступ к методу возможен только в контексте Модуля формы.  | 
|||
| 
    21
    
        Invzor    
     04.03.15 
            ✎
    13:53 
 | 
         
        (20) в данной формуле не может быть вызвана эта процедура (функция) ... это по поводу Активизировать...     
         | 
|||
| 
    22
    
        Ёпрст    
     гуру 
    04.03.15 
            ✎
    13:53 
 | 
||||
| 
    23
    
        Ёпрст    
     гуру 
    04.03.15 
            ✎
    13:54 
 | 
         
        хотя, тоже не освоишь..     
         | 
|||
| 
    24
    
        ДенисЧ    
     04.03.15 
            ✎
    13:54 
 | 
         
        (23) Слушай... Ты что, перебрался на бисерную фабрику?     
         | 
|||
| 
    25
    
        Builder    
     04.03.15 
            ✎
    13:55 
 | 
         
        Не проще поставить нормальный драйвер АТОЛ 6 версии для клавиатурного сканера штрихкода и генерировать событие?     
         | 
|||
| 
    26
    
        Invzor    
     04.03.15 
            ✎
    13:58 
 | 
         
        (22) вот это думаю уже осилю))     
         | 
|||
| 
    27
    
        Ёпрст    
     гуру 
    04.03.15 
            ✎
    14:01 
 | 
         
        (24) а похоже, да ?
 
        Да не, просто мётлы все зарезервированы..  | 
|||
| 
    28
    
        ДенисЧ    
     04.03.15 
            ✎
    14:03 
 | 
         
        (27) Ага. А ещё по совместительству апельсины раздаёшь...     
         | 
|||
| 
    29
    
        Злопчинский    
     04.03.15 
            ✎
    19:48 
 | 
         
        (25) нафейхоа...? чтобы если вдруг все рухнуло - маяться установокой куч драйверов. через внешнее событие НАМНОГО проще это да.     
         | 
|||
| 
    30
    
        Злопчинский    
     04.03.15 
            ✎
    19:50 
 | 
         
        а так все тривиально: на форме - ПРИНИМАЮЩЕЙ ШТРИХКОД - (ведь задача формы принять штрихкод и отработать его прием, не так ли?) - ставишь всем активным элементам (тз, поля ввода - правда нхаера другие поля ввода в форме принимающей ШК непонятно) - доступность в 0 (ноль). доступным оставляешь только поле ввода для приема штрихкода. и все.     
         | 
|||
| 
    31
    
        Invzor    
     05.03.15 
            ✎
    09:03 
 | 
         
        (30) ща попробую и так сделать... интеренсо прокатит или нетъ     
         | 
|||
| 
    32
    
        Invzor    
     05.03.15 
            ✎
    11:01 
 | 
         
        (30) другие поля не принимают штрих.. а предназначены для другого... поиск по адресу к примеру... а поля вообще другие не причем... там без разницы... хоть поле будет стоять... хоть кнопка.. он перейдет на следующую позицию...     
         | 
|||
| 
    33
    
        Злопчинский    
     05.03.15 
            ✎
    15:35 
 | 
         
        (32) убери нафиг кнопки 
 
        Все по горячим клавишам Поле ввода штрихкода можно использовать ВНИМАНИЕ какполе ввода Что мешает в поле ввода ШК вбить адрес и при обработке ввода понять по структуре введенной ины что вбит не шк а адрес и искать пименно адрес И даже если похож адрес на шк то поискать по шк если не найден то искать адрес и тд Я как то с одним полем ввода умудряюсь обрабатывать разные штрихкода ручной ввод артикула а также количеств и все прокатывает Опять же если так трудно сделай по горче клавише переключение режима ввода штрихкод или адрес Опять же ничто не мешает на форме всякие кнопки имет сделать их недоступными а жмак по ним отлавливать по позиции мыши через формекс Короче возможносте вагон и тележка  | 
|||
| 
    34
    
        Злопчинский    
     05.03.15 
            ✎
    15:37 
 | 
         
        В этом смысле штатная семерка то есть клюшки плюс формекс плюс одинэсплюсплсю по возможностям  обработки нажатия клавиш и мыши богаче штатной восьмерки     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |