Вход | Регистрация


1С:Предприятие ::

Метки: 

v7: Попрыгать по строкам документа - не работает АктивизироватьСтроку()

Я
   match
 
08.10.17 - 06:25
Всем привет!
В какой момент этот метод должен отработать? Пытаюсь неоднократно (рекурсивно) вызывать его из процедуры Модуля Формы документа. Срабатывает только после выхода из процедуры ((

Тестовый код:

Процедура тест()
    номстр = "";
    Если ВвестиЧисло(номстр,"ввод номера строки",,0,5) = 1 Тогда// 5 секунд на ввод, иначе выход

        АктивизироватьСтроку(номстр);
        тест();
    КонецЕсли;
КонецПроцедуры
 
  Рекламное место пустует
   vadim777
 
1 - 08.10.17 - 07:04
(0) После вызова АктивизироватьСтроку(номстр) добавь Форма.Обновить(1).
   match
 
2 - 08.10.17 - 07:23
(1) Пробовал, не работает. То есть обновление формы происходит, а по строкам не прыгает. Только после выхода из процедуры на последнюю введенную строку позиционируется.
   match
 
3 - 08.10.17 - 07:47
Попробовал еще так, результат тот же.
Процедура ПозиционироватьСтр(НомСтр)
        АктивизироватьСтроку(НомСтр);
        Форма.Обновить();
КонецПроцедуры

Процедура тест()
    номстр = "";
    Если ВвестиЧисло(номстр,"ввод номера строки",,0,5) = 1 Тогда// 5 секунд на ввод, иначе выход

        ПозиционироватьСтр(номстр);
        тест();
    КонецЕсли;
КонецПроцедуры
   vadim777
 
4 - 08.10.17 - 08:07
(2) Может, дать 1С время на отработку события. Типа WScript.Sleep(5), только в терминах 1С.
   youalex
 
5 - 08.10.17 - 08:21
ОбработкаОжидания - не вариант?
   vcv
 
6 - 08.10.17 - 09:17
А какой смысл этого действа? Показать модальное окно, закрывающее часть экрана. Если пользователь успел на пять секунд ввести число, моргнуть окном и перепрыгнуть на указанную строку, опять закрыв модальным окном центральную, самую ценную, часть экрана.
Это такой хитрый метод гонок с пользователем наперегонки по кругу?
Может лучше взять какой-нибудь FormEx и организовать нормальный инкрементальный поиск по номеру строки?
   МимохожийОднако
 
7 - 08.10.17 - 09:57
(3) Во фрагменте:
ПозиционироватьСтр(номстр);
        тест();
зачем еще раз вызываешь процедуру?
   vcv
 
8 - 08.10.17 - 10:11
(7) Похоже такой метод просмотра табличной части. Пользователь вводит в мигающем окошке номера строк и они активируются в табличной части. Когда нужно закончить этот странный эротический процесс, пользователь ничего не вводит или жмёт "Отмена". :)
   match
 
9 - 08.10.17 - 10:12
Тема уходит в сторону... хотел этого избежать, ну да ладно: в реальной конфигурации "вводить число" должен сканер ШК (и это не номер строки, конечно), отрабатываться действия, и ожидать следующего сканирования. Прежде чем переходить к внешним компонентам, хотелось бы разобраться со штатными средствами.
))
   match
 
10 - 08.10.17 - 10:15
Результат сканирования есть желание видеть в документе до нажатия "Отмена" ))
 
  Рекламное место пустует
   FN
 
11 - 08.10.17 - 11:40
Добавь Ложное закрытие формы
   match
 
12 - 08.10.17 - 12:35
(11) Попробовал, результат тот же, что не так?:

Перем НомСтрПриЗакр;

Процедура ПозиционироватьСтр(НомСтр)
    НомСтрПриЗакр  = НомСтр;
    Форма.Закрыть(0);
КонецПроцедуры 

Процедура тест()
    номстр = "";
    Если ВвестиЧисло(номстр,"ввод номера строки",,0,) = 1 Тогда
        ПозиционироватьСтр(НомСтр);
        тест();
    КонецЕсли;
КонецПроцедуры

Процедура ПриЗакрытии()
   Если НомСтрПриЗакр > 0 Тогда
        АктивизироватьСтроку(НомСтрПриЗакр);
        Форма.Обновить();
        НомСтрПриЗакр = 0;
        СтатусВозврата(0);
   КонецЕсли;
КонецПроцедуры
   youalex
 
13 - 08.10.17 - 14:23
(9) Попробуй все же с обработкой ожидания. Но в 77, в отличие от 8 - процедура ожидания  должна быть экспортной в гл. модуле.
В своей форме - запускаешь обработчик:
ОбработкаОжидания("глОбработчик", 1);

в процедуре обработчика просто открываешь свою форму:
ОткрытьФорму("Справочник.Номенклатура.ФормаСписка");//к примеру


В этой же форме - прописываешь обработчик события
ПриПовторномОткрытии() - там свою логику + отключение обработчика(если ничего не введено: 
ОбработкаОжидания("глОбработчик", 0);
   МимохожийОднако
 
14 - 08.10.17 - 14:37
(12) Ответь на (7). Я измучился ждать ))
   Злопчинский
 
Ведущий
15 - 08.10.17 - 15:29
(13) неверно
Обработка ожидания вполне себе работает локально в форме
   Злопчинский
 
Ведущий
16 - 08.10.17 - 15:32
(9) все это делается нормально обычным образом безивсяких извращений.
Не пиши код здесь.
Изложи алгоритм чуть более подробно.
Ключ: нефиг заранее делать какие-то эмуляции интеракт вных действий если ответ от пользователя будет тол ко после окончания цикла
   Злопчинский
 
Ведущий
17 - 08.10.17 - 15:33
В (12) бессмысленный бред нарокомана
   youalex
 
18 - 08.10.17 - 15:48
(15) Еще лучше, если так) В СП написано только про глобальный.
   youalex
 
19 - 08.10.17 - 15:55
(16) >нефиг заранее делать какие-то эмуляции интеракт вных действий если

Я так понял смысл сего - сэмулировать постоянный вызов со сканера ШК, то есть практического смысла не имеет.

Если это так, то можно порекомендовать задействовать реальный эмулятор (Яндекс первой строкой поиска "эмулятор сканера ШК" выдает ссыль на нужную статью дружественного ресурса)
   HawkEye
 
20 - 08.10.17 - 16:33
(0)
все работает:
Процедура ПоКнопке()
    НужнаяСтрока = 1;
    ВвестиЧисло(НужнаяСтрока,"",2,0,0);
    АктивизироватьСтроку(НужнаяСтрока);
КонецПроцедуры
   match
 
21 - 08.10.17 - 17:04
ОК, если прямого ответа на вопрос, почему не работает код из (0) ни у кого нет, задача такая: изучить и опробовать возможность использовать сканер штрих-кода для заполнения документа количеством товара (конфигурация не типовая). Сканер пока подключен просто как "устройство ввода USB", вместе с каждым считанным кодом передает суффикс CR. Пока пользователь не закончит ввод товара ("отмена"), или не произойдет нештатка какая-то (другой товар, неизвестный штрих-код) работает только сканер - ни клавиатуру, ни мышь трогать не надо. Но надо видеть, как, в какой строке сканирование изменяет количество в МЧ документа.
   match
 
22 - 08.10.17 - 17:07
(20) Если после АктивизироватьСтроку(НужнаяСтрока); опять рекурсивно вызвать ПоКнопке(); ?
   match
 
23 - 08.10.17 - 17:20
(21) я может несвязно объяснил: сканирование штрихкода + поиск строки с отсканированным товаром == вводу номера строки + ОК в тестовом коде (0), дальше нужно перейти на эту строку (обновить количество) и вывести новое окно ожидания ввода, не прибегая к клавиатурt/мыши
   Злопчинский
 
Ведущий
24 - 08.10.17 - 17:37
(21) у вас тараканы в голове
Разберитесь с сущностями, ...ть!
Сканер работает как клавиатура или генерит внешнее событие?
Впрочем, ни в том, ни в другом случае разницы нет, все работает как надо.
   Злопчинский
 
Ведущий
25 - 08.10.17 - 17:39
(21) если у тебя нет доступа к мч документа пика висит диалог ввода - на хрена тебе вообще мч?
   Злопчинский
 
Ведущий
26 - 08.10.17 - 17:40
(23) если строка с отсканированным товаром не найдена - что делаем?
   Злопчинский
 
Ведущий
27 - 08.10.17 - 17:41
(21) если все идёт нормально - нахрена за этим следить? Имитация бурной деятельности?
   match
 
28 - 08.10.17 - 18:00
(24) (25) (26) (27) Уважаемый, эти комментарии настолько же бесполезны, насколько и неудивительны и ожидаемы. И вот дабы этого избежать я попытался абстрагироваться от частностей вроде сканеров и тараканов  и попросил помощи у знающих людей, таких как Вы: почему не работает должным образом код (0) ?
   match
 
29 - 08.10.17 - 18:04
youalex, если можно - чуть подробней про ОбработкаОжидания - для чего она нужна и где, чего, зачем нужно ожидать?
   Злопчинский
 
Ведущий
30 - 08.10.17 - 18:05
(28) цена вопроса дрессировки ваших тараканов?
   Злопчинский
 
Ведущий
31 - 08.10.17 - 18:09
(28) ответ вообще-то прозвучал выше - сначала отрабатывает код, потом управление передается в родительский контекст, отрабатывает родительский контекст. таким образом: прекращается выполнение кода - управление передается в контекст формы, форма обновляется. все.
   youalex
 
32 - 08.10.17 - 18:24
(29) Обработка ожидания - цитата из СП:

Инициирует периодический вызов процедуры глобального модуля с заданным интервалом времени.

То есть, используя обработку ожидания - вы получите регенерируемое событие.  В отличие от вашего решения (рекурсии) - оно будет выполняться не в одном потоке, а создавать поток каждый раз, т.е. - будет  возвращать фокус форме (теоретически)

Мне кажется, это именно то, что вам нужно.

Ну и на реальный эмулятор - стоит внимание обратить. Я пользовал в свое время - эта связка (там две проги - одна эмулирует ком-порт, вторая его дергает) реально пашет как надо.
   Злопчинский
 
Ведущий
33 - 08.10.17 - 18:28
(32) и без обработки ожидания все работает
выше все написали, как сделать.
например, через ложное закрытие
 
 
   Злопчинский
 
Ведущий
34 - 08.10.17 - 18:33
   match
 
35 - 08.10.17 - 18:35
(32) Спасибо. Буду пытаться вкурить обработку ожидания (видимо уже не сегодня), а до эмуляторов не дорос пока.
(33) Про ложное закрытие - поправьте пожалуйста (12), что я не так понимаю? Есть рабочий код?
   match
 
36 - 08.10.17 - 18:41
(34) Спасибо. Завтра обязательно попробую, сейчас убегаю
   youalex
 
37 - 08.10.17 - 19:32
(33) что за ложное закрытие? Какое-то очередное извращение?
   Злопчинский
 
Ведущий
38 - 09.10.17 - 15:42
(37) атож! клюшечники отличаются богатой фантазией
   Злопчинский
 
Ведущий
39 - 09.10.17 - 15:43
(36) ну шо? "завтра" близится к финишу...
   Злопчинский
 
Ведущий
40 - 09.10.17 - 15:43
(37) см.(34)
   youalex
 
41 - 09.10.17 - 16:45
(40) Прикольно, спс)
   Ёпрст
 
42 - 09.10.17 - 16:53
(34) Чебур, заремь это, срочно во всех доках:
НомерТекущейФормы = глУстановкаКнопкиПечать..

Форма будет раз в 20 быстрее открываться
   Ёпрст
 
43 - 09.10.17 - 16:54
этот код нужно выполнять один раз, при нажатии на саму кнопку печать, а не приОткрытии
   Злопчинский
 
Ведущий
44 - 09.10.17 - 19:20
(43) я знаю, ты уже ранее давал такой совет, но мне влом, бо по скорости нормально
   match
 
45 - 10.10.17 - 11:18
Всем привет!
После разгона тараканов прыжки по строкам заработали. И через (34) ложное закрытие, и через (13) ОбработкаОжидания().  При реализации через обработку ожидания есть нюанс - во вновь созданном документе не работает, так как в обработчике используется открытие формы существующего документа. А чтобы документ стал "существующим" его сначала надо записать, как я понимаю.

Для оценки удобства/неудобства использования сканера ШК вроде достаточно. Если будет решение внедрять штрих-кодирование - тогда, конечно, нужно будет что-то посерьезней.

Спасибо всем участвовавшим и сочувствовавшим!

https://www.youtube.com/watch?v=O1K4qigrnUg
   Злопчинский
 
Ведущий
46 - 10.10.17 - 13:54
(45) тут, конечно, занятно узнать что вы понимаете под "внедрять штрихкодирование"...?
   match
 
47 - 10.10.17 - 14:22
(46) Как минимум купить принтер этикеток )) Сканер достался на халяву.
Ввести новые правила и процедуры приема, учета, отгрузки. Алгоритмы разрешения коллизий. Ну и 1ску допилить.
   Злопчинский
 
Ведущий
48 - 10.10.17 - 20:43
(47) а, понятно.. если что - по складу запилить - стучись



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