|   |   | 
| 
 | 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 | 
        В этом смысле штатная семерка то есть клюшки плюс формекс плюс одинэсплюсплсю по возможностям  обработки нажатия клавиш и мыши богаче штатной восьмерки     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |