Имя: Пароль:
1C
1C 7.7
v7: Переключение между окнами с помощью Formex
,
0 jah1111
 
25.08.23
13:10
Собственно, всегда использовал для сенсорных экранов такую обманку:

вешал на кнопку переключения окон код
переключение= СоздатьОбъект("WScript.Shell");
переключение.SendKeys("^({TAB})");

но недавно заметил, что такая кнопка в форме ОБРАБОТКИ на сенсорном дисплее не работает.
в форме документа работает, в форме журнала работает, а в форме обработки  -  кнопка нажимается, но ничего не происходит.  если мышью нажать то переключает окно.
В общем, нужен другой способ реализации программного переключения окон. курил Formex - ничего не нашел кроме метода НаПереднийПлан()
но как его использовать для переключения окон пока не придумал. Если есть у кого хотя бы общие идеи - поделитесь
1 MWWRuza
 
гуру
25.08.23
14:52
Через "ВнешнееСобытие" в том окне где кнопочка(по этой кнопочке), и его обработку в том окне, которое должно вылезти НаПереднийПлан - ?
2 Arbuz
 
25.08.23
17:51
(0) > ничего не нашел кроме метода НаПереднийПлан()
но как его использовать для переключения окон пока не придумал. Если есть у кого хотя бы общие идеи - поделитесь

И в чём проблема? Сервис.СписокВсехОткрытыхОкон() и переключай какое надо.
3 Злопчинский
 
25.08.23
18:40
хрень какая-то. Процесс явно построен криво.
4 jah1111
 
26.08.23
07:58
(3) уважаю Ваши принципы конструирования конфигураций, но попросили немного "многозадачности" :)
5 jah1111
 
26.08.23
07:59
(2) У меня какая-то старая документация
6 jah1111
 
26.08.23
08:10
(2) ну есть у меня список все окон

задача научиться гонять их по кругу кнопкой

ну ума не приложу как его использовать, ведь каждый раз когда 'открыть новое/закрыть старое' этот список меняется, и даже когда окно выходит на передний план список меняется

все окна форм одинакового размера, все кнопки переключения окон в формах идентичны и имеют те же координаты. То есть, к примеру если открыто 5 форм, я нажимаю кнПереключить, и сразу же у меня по пальцем оказывается кнПереключить на следующей форме. И если я нажму так 5 раз, я должен вернуться в форму с которой начал.
7 Злопчинский
 
26.08.23
11:06
(4) ну пусть переключаются в нужное окно тыканием мышкой.
или какачя-то особая многозадачность у вас?
8 Злопчинский
 
26.08.23
11:08
(4) надо посмотреть на многозадачность эту в конкретном применении к конкретной задаче где эта "многозадачность" потребовалась. может проще процесс перестроить...
9 jah1111
 
26.08.23
12:57
(7) ну так без мышки надо, на планшете
конструкция следующая:
разработан режим планшета, для выписки основных документов на сенсорном экране
если режим планшета активирован - в центре внимания развернутая на весь экран форма типа общий Журнал по имени "Десктоп"
красивая такая, увеличенная формексом, с кнопками отбора документов по типу, с кнопками для фильтрации документов, с кнопками для управления документами.
ну там создание, открытие, удаление, печать, просмотр и т.п. Кнопки большие и удобные.
из этой формы в двойным тапом по строке (ПриВыбореСтроки) или по кнопе "Открыть", открывается Форма обработки а в ней отображается документ, по которому собственно кликали. Форма большая и красивая, во весь экран планшета, адаптирована под ввод пальцами. Из нее можно редактировать сохранить и провести нужный документ. Внизу формы предусмотрена кнопка с домиком (Home) при нажатии которой на передний план выходит Окно формы "Журнал.Десктоп" (ну типа на рабочий стол возвращаемся), и кнопка с квадратиками внахлёст (ну как у андроида) которая должна листать окна по кругу.  Вот ту кнопку я и делал эмуляцией контрл+таб, но в форме обработки эмуляцией почему-то не работает на сенсоре, только мышей. Сам не понимаю чем так форма обработки отличается. Такая же кнопка в форме журнала например срабатывает на ура при тыке пальцем.
Идея в том, что у менеджера на голове могут быть одновременно 2-3 клиента. к примеру вот взвесили товар Андрею, записали строку в накладную, тут взвешивают Игорю - перелистнули на накладную Игоря - записали, опять Андрею взвешивают - опять переключились в его накладную.
Сама форма обработки которая создает и редактирует документы прошла  уже хороший срок испытания.
10 Злопчинский
 
27.08.23
03:55
(9) Понятно. Примерно как и предполагал. Раком сделано. Почему раком - потому что тут так заведено (почему заведено - тоже понятно) ты документ, который никак не зависит от ПРОЦЕССА взвешивания (как пула задач на взвешивание), пытаешься натянуть (документ) на процесс. И получается херня. Этакий костыль. Поянтно, что подпереть 1-2-3 костылями может быть дешевле, чем сделать по уму. Работать "от документа" на планшете, который является по сути НОСИМЫМ инструментом для РЕГИСТРАЦИИ ВЫПОЛНЯЕМЫХ ОПЕРАЦИЙ (а не отражения уже сделанных операций в "посмертном" документе) - так себе идея. Но раз так сложилось и сделать норм проблематично - вполне себе вариант. С извращениями, конечно, но что делать... ССЗБ.
11 Злопчинский
 
27.08.23
04:04
Почему не попробовать журнал открывать только тогда КОГДА ОН НУЖЕН, а открытые документы держать в виде визуальных кнопок.
вряд ли будет больше нескольих открытых доков (2-3-4), при правильном построении экрана планшета и форм документов (а форму документа на планшете можно эмулировать минимальным набором реквизитов для планшета в виде обработки) - места хватит с лихвой. даже если открытых доков много - всегда можно по тыку показать список открытых доков (в виде кнопок или иначе как надо красиво для планшета) и выбирать док тыком.
.
делал в свое время на планшете работу с заказом покупателя для путешествия менеджера с покупателем по шоуруму. там собственно и документа-то как такового на экране не было... Не пошло в продакшен, нахрен оказалось не нужно, потому что генерить хотелки - это одно, а связь хотелок с реальностью - "это другое" ;-)
12 Злопчинский
 
27.08.23
04:11
(6) какое окно находится на переднем плане - это формексом тоже определяется.
опять же ну крути окна из списка. даже если в списке есть неактуальная форма (закрыли документ) - можно "отловить" что форма не существует и пропускать/килять ее из списка. И даже при закрытии формы система сама будет удалять из списка в ПослеЗакрытия() или в асинхронном событии после закрытия формы. Если покопаться - думаю можно сделать без эмуляции клавы
13 jah1111
 
27.08.23
11:34
(11) покачто выбор окон сделал выпадающим списком - большим шрифтом отображаются названия открытых окон. Можно пальцем тыкать и выбирать, и даже скролить если пальцем тянуть.
но все-таки наверно гонять по кругу кнопкой было бы лучше, или может уже просто привычней
14 Злопчинский
 
27.08.23
13:48
(13) ты бы еще галочки вкл/выкл и радиобаттоны сделал на планшете вдобавок к выпадающему списку ;-)
15 Djelf
 
27.08.23
15:00
(14) Если сделать на табличномПоле 1с++ это не очень сложно.
Можно даже приоритеты ставить, правда не протянув влево/вправа, такое там нельзя, по тыкнув в опеределлную точку можно.
И любые похожие баттоны в строке, была бы фантазия...
16 Злопчинский
 
27.08.23
18:36
(15) не любите вы пользователей...
17 АгентБезопасной Нацио
 
28.08.23
08:02
(9) в формексе у объекта Сервис есть метод СписокВсехОткрытыхФорм(). У объекта Окна есть метод НаПереднийПлан() - для твоих целей того достаточно.
Но я бы сделал ТЗ, в которой хранятся данные открытых документов. А в документе - кнопкой перезаполнял из нее (и сохранял в нее) все данные документа. Или динамически формировал закладки, при нажатии которых заполнял данные дока из соответсвующей строки ТЗ.
18 jah1111
 
29.08.23
22:51
(14) а я бы на Вашем месте не язвил ;) Народу нравицца! (Кин-дза-дза) Реально персонал потестил - понравилось
и галочки я делал в свое время большие и красивые и даже удобные в ПриНажатииЛевойКнопки() и  через ПолучитьАтрибутПоКоординатам(х,у). Два рисунка с одинаковыми координатами на форме, получают видимость в зависимости от значения. Один рисунок отображает пустой чекбокс - 0, второй - с галочкой соотвественно 1.
19 jah1111
 
29.08.23
22:52
(15) приблизительно так я и делал
20 Злопчинский
 
29.08.23
23:55
(18) народу нравицца что ни покажи если до этого не работали с нормальными фейсами ;-) или вообще бегали с бумагой ;-)
Я как-то пробовал тыкать чекбоксы на 3-хдюймовом экране (такая складская система Бухта) - адский ад...
21 Злопчинский
 
30.08.23
01:15
кстати, так и не нашел навскидку нормального решения чтобы, например, фейс с разрешением одного экрана нормально отображался/масштабировался для разрешения другого экрана...
22 АгентБезопасной Нацио
 
30.08.23
08:08
(21) Класс Привязки?
23 Duke1C
 
30.08.23
11:47
(21) Серёг, я ж тебе скидывал как-то функцию свою по "масштабизации"?
Правда, после этого, я немного модернизировал функционал. Добавил еще шрифты масштабируемые, которые создаются при загрузке и используются в течении всего сеанса в различных формах.
24 Duke1C
 
30.08.23
11:54
+23 Начал я это дело практиковать еще с самой первой обработки для ТСД, а у них разрешение 320х240 пикселей
А потом появились "бесхозные" телефоны/планшеты + "голубозубые" сканеры к ним, что превращало их в тот же ТСД, но гораздо более дешёвый. А разрешение экрана у них у всех разное... А потом на РМК появились тачскрины... А у "старшего" персонала мониторы "дохренадюймовые"...
25 Злопчинский
 
30.08.23
18:01
(23) кинь ещё раз [email protected]
26 Злопчинский
 
30.08.23
18:03
(22) не только расоложение элементов, но и увеличение самих элементов вплоть до размера шрифтов для ТЗ и шрифтов для надписей
27 Злопчинский
 
30.08.23
18:04
(24) вот-вот... Как раз про это и речь
28 Злопчинский
 
30.08.23
18:04
(23) и как в итоге получилось? Работает адекватно?
29 jah1111
 
01.09.23
22:29
(25) и мне... [email protected] :) если не жалко
с масштабированием конечно засада, но если речь идет про планшет 10,1 дюйма, там 90% экранов в одном соотношении. естественно, обработка получается не универсальная, но если на фирму покупают несколько планшетов, то тоже берут одинаковые, а там и подогнать можно
30 jah1111
 
01.09.23
22:36
(26) думаю полюбому будет гдето чтото вылезать и расплываться какую функцию не напиши, ибо даже вручную подганять тяжело
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс