Имя: Пароль:
1C
1C 7.7
v7: Позиционирование курсора
0 Invzor
 
04.03.15
10:39
Друзья приветствую!

есть такая проблемка...
Есть форма справочника... на форме есть поле для ввода информации.
Ставим курсор в это поле.. считываем штрихкод и выполняется обработка.
После выполнения обработки курсор уходит в другое поле.
Как можно сделать, что бы курсор опять там же стал? Что бы его не тыкать опять в это поле?
Я так понимаю надо как-то задать положение курсора после выполнения чтения штрихкода...
Можете подсказать?
1 Ёпрст
 
04.03.15
10:40
есть несколько способов
2 Ёпрст
 
04.03.15
10:40
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
В этом смысле штатная семерка то есть клюшки плюс формекс плюс одинэсплюсплсю по возможностям  обработки нажатия клавиш и мыши богаче штатной восьмерки
Закон Брукера: Даже маленькая практика стоит большой теории.