|
v7: Как последовательно открыть формы в 7.7 ? | ☑ | ||
---|---|---|---|---|
0
r1000
16.04.13
✎
21:30
|
После открытия определенной формы, должна открыться еще одна форма.
Как так сделать ? Нужна именно такая последовательность. Сначала одна, потом вторая. Без участия пользователя. |
|||
7
tararam
16.04.13
✎
22:04
|
(5) вопрос о 7.7
|
|||
8
r1000
16.04.13
✎
22:08
|
ну вот так и придется формекс ставить.
|
|||
9
r1000
16.04.13
✎
22:08
|
Всем спасибо.
|
|||
10
Злопчинский
16.04.13
✎
22:37
|
(8) вариант послеоткрытия можно и без формекса организовать. однократным запуском выполнения процедуры по обработке ожидания
|
|||
11
Torquader
17.04.13
✎
00:42
|
В чём проблема:
ОткрытьФорму("Справочник1.ФормаСписка.ФормаСписка"); ОткрытьФорму("Справочник2.ФормаСписка.ФормаСписка"); Если хочется, чтобы появлялись последовательно, то через ОбработкаОжидания и ложное закрытие служебной формы. |
|||
12
КонецЦикла
17.04.13
✎
03:14
|
(1), (2) Жжоте
Не нужно искать сложностей там где их нет. Просто открывайте последовательно |
|||
13
r1000
17.04.13
✎
08:14
|
Сначало должна открыться первая, а сразу после открытия ее должно сработать ОткрытьПодбор. Но ОткрытьПодбор должно сработать из открытой первой формы, чтобы потом этот подбор об работать в этой первой форме. Задача: в реализации пользователь считывает ШК. При считке должна открыться форма подбора номенклатуры и сразу должно запроситься количество (запрос количество у меня сделан через обработку, а не через обычное ВвестиЧисло).
|
|||
14
NikVars
17.04.13
✎
09:36
|
(13) "Сначало должна открыться первая". Открылась...
Городишь в ней кнопочку. Юзер давит ее. Откроется твой подбор. |
|||
15
r1000
17.04.13
✎
09:37
|
Нужно без кнопочки. В этом и проблема.
|
|||
16
NikVars
17.04.13
✎
09:37
|
(13) Или сообщи подробнее, что за форма такая, которая обязательно должна быть ФОРМА и что за надобность такая появится и потом исчесзнуть перед подбором?
|
|||
17
NikVars
17.04.13
✎
09:38
|
Вопрос, Предупреждение как формы катят?
|
|||
18
r1000
17.04.13
✎
09:39
|
Нет.
|
|||
19
r1000
17.04.13
✎
09:40
|
Задача вроде бы подробно есть в (13)
|
|||
20
NikVars
17.04.13
✎
09:40
|
Ну почему же. Задал Таймаут. Она появится, потом исчезнет.
Или ты чего-то не договариваешь. |
|||
21
NikVars
17.04.13
✎
09:42
|
(19) Я пользователь. Заполняю док. Нужно мне заполнить табличную часть дока. Далее...
Появляется загадочная форма номер один. НАФИГА казе баян? Чего за надобность? |
|||
22
r1000
17.04.13
✎
09:43
|
Юзер открыл реализацию. Взял в руку товар и сканерШК. Сканирует. Должно произойти следующее: сначала должна открыться форма подбора номенклатуры с текущим элементом отсканированной номенклатуры (как если бы он надавил на кнопку "Подбор"), и сразу должна открыться форма обработки ввода количества(ну чтобы ему не кликать мышью в списке номенклатуры).
|
|||
23
NikVars
17.04.13
✎
09:45
|
(22) Не понял нафига тут подбор. И еще пользователь захотел почесаться, а количество не успел ввести. Логичнее ему давануть кнопку, почесаться, сказать начу привет, ввести кнопку, поправить лифчик и давануть ок.
|
|||
24
NikVars
17.04.13
✎
09:46
|
Как вариант - жамкнуть горячую клавишу может быть и появится форма количество, а по умолчанию - 1.
|
|||
25
Ёпрст
17.04.13
✎
09:47
|
(22) можно штатно, через ОбработкаОжидания и контекст открытой первой формы, можно через 1сpp или формекс запустить процедуру через контекст открытой формы, которая откроет вторую форму из первой.
|
|||
26
r1000
17.04.13
✎
09:48
|
Потому что в форме подбора есть много доп. информации. Сразу добавлять товар в накладуху не нужно.
|
|||
27
r1000
17.04.13
✎
09:49
|
(25)Вот через формекс пробую. Вроде ПослеОткрытия() срабатывает, но вторая форма остается как бы под первой - т.е. не активной.
|
|||
28
NikVars
17.04.13
✎
09:49
|
Вместо открытьподбор лучше и проще сгородить свою форму со своими кнопочками и своим отображением.
Пока не врубаюсь нафига при сканере открытьподбор. Сканер сам все найдет а количество можно и в доке вбить. |
|||
29
r1000
17.04.13
✎
09:49
|
Как активизировать формексом вторую форму, открываемую из первой ?
|
|||
30
Ёпрст
17.04.13
✎
09:50
|
(27) форму с вводом количества открывай модально.
|
|||
31
r1000
17.04.13
✎
09:51
|
(28)именно нужно форму подбора показать и сразу предоложить ввести количество, сканируемого товара.
|
|||
32
r1000
17.04.13
✎
09:52
|
(30)Я открываю её вот как:
ОткрытьПодбор("Обработка.итбВводКоличества",, СписокПараметров); Мне нужно через ОткрытьПодбор, потому что нужно же потом обработкуПодбора отработать. Как модально открыть, чтобы потом обработкаПодбора сработала в первой форме ? |
|||
33
Ёпрст
17.04.13
✎
09:55
|
(32) а зачем тебе открытьподбор для ввода количества ?
Ты чего, несколько "количеств" подбирать собрался, или всё же одно значение ? Если одно - то тупо ОткрытьФормуМодально и при её закрытии поиметь это количество, открыть подбор для второй формы там как бэ не нужен |
|||
34
NikVars
17.04.13
✎
09:56
|
(31) Зачем???? Подбор нужен чтобы ПОДБРАТЬ несколько позиций.
Берешь сканер, пик, в доке сразу появляется строчка, с количеством 1. Нужно изменить количество - юзер давит кнопку (придумай какую) - является форма ввода количества. Или открываем нужную форму автоматом для ввода количества. Подбор при сканировании не нужен. |
|||
35
r1000
17.04.13
✎
09:59
|
(33) Задумка вот какая:
Когда вторая форма(форма обработки, где кол-во нужно ввести) открылась - там по умолчанию стоит 1. Если пользователь сканирует новый товар, когда эта вторая форма открыта, то в документ подбирается 1 и программа в первой форме встает на нужный элемент спраочника и опять открывает обработку ввода количества. А обработку я открываю для того чтобы внешнее событие ловить. |
|||
36
r1000
17.04.13
✎
10:00
|
(34)Я Вас понял прекрасно. И соглашаюсь. Но по условию задачи, мне нужно именно форму подбора открывать. Изменение количества в табл. части не катит.
|
|||
37
r1000
17.04.13
✎
10:02
|
(33)Сейчас попробую из модального выхватить. Похоже это то, что нужно мне.
|
|||
38
Ёпрст
17.04.13
✎
10:02
|
ладно, зайдём по-другому:
ты форму подбора в Тис-е видел не ? |
|||
39
Ёпрст
17.04.13
✎
10:03
|
Там форма подбора номенклатуры с ТЗ на форме - в которую выбранная номенклатура летит и открывается модальная форма с количеством, если галка выставлена, что запрашивать
|
|||
40
Ёпрст
17.04.13
✎
10:03
|
взял бы готовое и привет.
|
|||
41
NikVars
17.04.13
✎
10:04
|
(36) ОткрытьПодбор нужен для ручного поиска и ручного ввода товара. Со сканером логика другая. Вторая форма не нужна - все можно сделать из одной формы. Я бы вообще сдал бы без форм. После пика и ввода товара сканером я бы активизировал был колонку с количеством, где уже стоит 1. Нужно или ентер давануть или количество ввести и ентер давануть.
А ты мудришь и потенциально вешаешь сопли в виде двух форм, формекса. В общем, закладываешь себе под зад гарантированный геморр. |
|||
42
Ёпрст
17.04.13
✎
10:04
|
Или.. ты количество тоже сканёром вводить будешь ? (тыркая в бумажку со спец-штрих кодами)
|
|||
43
r1000
17.04.13
✎
10:05
|
Модальная форма с запросом в тисе открывается через ВвестиЧисло, и поэтому там я немогу использовать обработкувнешнегособытия. Поэтому мне нужно использовать свою обработку для ввода количества. Мне нужно чтобы при открытой форме ввода количества я смог отловить обработкувнешнегособытия.
|
|||
44
Ёпрст
17.04.13
✎
10:06
|
(43) нет в тисе формы с ВВестиЧисло
|
|||
45
Ёпрст
17.04.13
✎
10:06
|
в подборе там открывается модальная форма для ввода количества (ицены)
|
|||
46
r1000
17.04.13
✎
10:07
|
Открыл форму ввода количества модально из первой формы. Как при закрытии отловить количество из этой формы, чтобы в первую форму это количество вернуть ?
|
|||
47
r1000
17.04.13
✎
10:10
|
(45)Нашел. Спасибо.
|
|||
48
Ёпрст
17.04.13
✎
10:11
|
(46)
:)) Параметр = ..... ОткрытьФормуМодально("Обработка.ТвояПоделка", Параметр); Сообщить(Параметр.....); |
|||
49
Ёпрст
17.04.13
✎
10:12
|
+48 в самой Обработка.ТвояПоделка, в Форма.Параметр присвой чего угодно в ПриЗакрытии, например
|
|||
50
Ёпрст
17.04.13
✎
10:12
|
Это и прилетит потом в переданный Параметр.
|
|||
51
r1000
17.04.13
✎
10:52
|
У модально открытой формы ОбработкаВнешнегоСобытия() должны срабатывать ?
|
|||
52
2S
17.04.13
✎
10:55
|
#-решение. Фигню городите...
|
|||
53
r1000
17.04.13
✎
11:07
|
Как формексом активизировать нужное окно в 1С ?
|
|||
54
Ёпрст
17.04.13
✎
11:12
|
(51) скорее нет , чем да - будет вроде только глобальная работать (не помню уже, но был там затык с модальностью)
|
|||
55
Ёпрст
17.04.13
✎
11:13
|
(53)
НаПереднийПлан(<Форма>) |
|||
56
trad
17.04.13
✎
11:13
|
офф/2
Если, частооткрываемая форма ввода количества выполнена как обработка, то обязательно на нее положите ТЗ (можно невидимую, можно в другой слой) если еще нет ТЗ на форме. Это касается всех частооткрываемых форм обработок. Частооткрываемая - форма которая открывается за сеанс сотни, тысячи раз. Каждое открытие формы обработки без ТЗ на ней приводит к утечке 2 объектов USER. Большая утечка приводит к непредсказуемым зависаниям и падениям. |
|||
57
r1000
17.04.13
✎
11:16
|
(54)как открыть не модальную форму и потом чтобы при закрытии эта форма вернула результат ? А активизацию окна я попробую сделать формексом.
|
|||
58
Ёпрст
17.04.13
✎
11:22
|
(56) более непредсказуемо ведёт себя внешняя обработка с х..вой тучей мокселей (в рег отчетности типовой такая есть)
и Пофик там на ТЗ на форме - на 6-7 раз после её открытия валится 1с-ина. Если уменьшить количество мокселей - норм. |
|||
59
Ёпрст
17.04.13
✎
11:23
|
(57) тупо передать в неё контекст открытой формы, в при закрытии установить что угодно в этот контекст, или пнуть "первую" форму и ловить в ПриПовторномОткрытии..
|
|||
60
r1000
17.04.13
✎
11:29
|
>>в при закрытии установить что угодно в этот контекст
А где потом его в первой форме ловить ? |
|||
61
Ёпрст
17.04.13
✎
11:32
|
да где угодно, хоть в обработке внешнегособытия:)
Ну, можешь свой ОткрытьПодбор использовать |
|||
62
r1000
17.04.13
✎
11:32
|
(55)Блин, а где это порписывать ?
Пытаюсь в нужной форме делать так: Процедура ПриОткрытии() Окна = СоздатьОбъект("Окна"); Окна.НаПереднийПлан(); КонецПроцедуры не получается |
|||
63
Ёпрст
17.04.13
✎
11:35
|
в ПослеОткрытия
|
|||
64
Ёпрст
17.04.13
✎
11:35
|
+ параметр забыл в методе.
|
|||
65
Ёпрст
17.04.13
✎
11:36
|
без него главное окно программы будет выдвинуто на передний план
|
|||
66
r1000
17.04.13
✎
11:47
|
Процедура ПослеОткрытия()
Окна = СоздатьОбъект("Окна"); Окна.НаПереднийПлан(Форма); КонецПроцедуры Не срабатывает. Окно по прежнему на заднем плане. |
|||
67
Ёпрст
17.04.13
✎
11:51
|
(66) а как ты вторую форму щас открываешь ?
И в какой форме это пишешь ? |
|||
68
r1000
17.04.13
✎
12:45
|
// формируем список параметров для передачи в обработку
Параметр = СоздатьОбъект("СписокЗначений"); Параметр.ДобавитьЗначение(ВыбНоменклатура , "Номенклатура"); Параметр.ДобавитьЗначение(Колво , "Количество"); Параметр.ДобавитьЗначение(ВозврЕдиница , "Единица"); // открываем форму обработки ОткрытьПодбор("Обработка.ВводКоличества",,Параметр); |
|||
69
r1000
17.04.13
✎
12:46
|
Пишу в форме открываемой обработки. Т.е. в той, которую нужно активизировать.
|
|||
70
Ёпрст
17.04.13
✎
13:04
|
Ну так, например:
ОткрытьПодбор("Обработка.ВводКоличества",,Параметр); Параметр.Форма.Активизировать("ИмяРеквизитаНаФорме"); |
|||
71
r1000
17.04.13
✎
13:06
|
Параметр.Форма.Активизировать("Количество");
{Справочник.Номенклатура.ФормаСписка.ДляПодбора.Модуль(177)}: Поле агрегатного объекта не обнаружено (Активизировать) |
|||
72
Ёпрст
17.04.13
✎
13:07
|
(71)
а так ? Параметр.Активизировать("Количество"); или так ? ОткрытьПодбор("Обработка.ВводКоличества",,Параметр); Окна = СоздатьОбъект("Окна"); Окна.НаПереднийПлан(Параметр.Форма); |
|||
73
r1000
17.04.13
✎
13:10
|
Сейчас вот так в первой форме:
// формируем список параметров для передачи в обработку Параметр = СоздатьОбъект("СписокЗначений"); Параметр.ДобавитьЗначение(ВыбНоменклатура , "Номенклатура"); Параметр.ДобавитьЗначение(Колво , "Количество"); Параметр.ДобавитьЗначение(ВозврЕдиница , "Единица"); // открываем форму обработки ОткрытьПодбор("Обработка.ВводКоличества",,Параметр); Окна = СоздатьОбъект("Окна"); Окна.НаПереднийПлан(Параметр.Форма); Параметр.Форма.Активизировать("Количество"); |
|||
74
r1000
17.04.13
✎
13:11
|
Вылетает ошибка:
Параметр.Форма.Активизировать("Количество"); {Справочник.Номенклатура.ФормаСписка.ДляПодбора.Модуль(177)}: Поле агрегатного объекта не обнаружено (Активизировать) |
|||
75
Ёпрст
17.04.13
✎
13:13
|
(74) делай просто
Параметр.Активизировать("Количество",1); |
|||
76
Ёпрст
17.04.13
✎
13:13
|
если работатает, заремь Окна.
|
|||
77
r1000
17.04.13
✎
13:27
|
Не работает. Сначала форма ввода количества открывается, а потом сразу теряет активность. И на передний план становиться первая.
|
|||
78
r1000
17.04.13
✎
13:30
|
Вот весь код попытки открытия и активизации формы ввода количества.
Процедура ВыбратьТекущийЭлементСканер(ВыбНоменклатура) ВозврЕдиница = ВыбНоменклатура.ОсновнаяЕдиницаИзмерения; Колво = 1; // формируем список параметров для передачи в обработку Параметр = СоздатьОбъект("СписокЗначений"); Параметр.ДобавитьЗначение(ВыбНоменклатура , "Номенклатура"); Параметр.ДобавитьЗначение(Колво , "Количество"); Параметр.ДобавитьЗначение(ВозврЕдиница , "Единица"); // открываем форму обработки ОткрытьПодбор("Обработка.ВводКоличества",,Параметр); Параметр.Активизировать("Количество",1); КонецПроцедуры Процедура ПослеОткрытия() ВыбратьТекущийЭлементСканер(ТекущийЭлемент()); КонецПроцедуры |
|||
79
r1000
17.04.13
✎
13:31
|
Тоесть, первая форма подбора открылась и должен сработать ПослеОткрытия, а потом ВыбратьТекущийЭлементСканер() и форма Обработка.ВводКоличества должна стать активной.
|
|||
80
Ёпрст
17.04.13
✎
13:40
|
Т.е форма ввода количества щас за формой ?
|
|||
81
Ёпрст
17.04.13
✎
13:40
|
за первой ?
|
|||
82
r1000
17.04.13
✎
13:45
|
ага. показывается на долю секунды и опять за нее.
|
|||
83
r1000
17.04.13
✎
13:47
|
Может быть в самой форме ввода количества что то дописать при открытии или после открытия ?
|
|||
84
r1000
17.04.13
✎
13:47
|
чтобы она назад не улетела...
|
|||
85
Ёпрст
17.04.13
✎
13:49
|
можно в ложном закрытии первой формы написать открытие второй, или через формековскую обработку ожидания
|
|||
86
Ёпрст
17.04.13
✎
13:49
|
(чтоб не ждать секунду у штатной)
|
|||
87
Ёпрст
17.04.13
✎
13:49
|
попробуй
|
|||
88
r1000
17.04.13
✎
13:52
|
Что значит в ложно закрытии ? Это как ?
|
|||
89
Ёпрст
17.04.13
✎
13:56
|
в первой форме:
Перем МожноЗакрыть; Процедура ПриОткрытии() Если Форма.Параметр = ... тут условие что открываем из сканёра Тогда Форма.Закрыть(0); МожноЗакрыть =1; КонецЕсли; КонецПроцедуры // ПриОткрытии Процедура ПриЗакрытии() Если МожноЗакрыть=1 Тогда МожноЗакрыть =0; СтатусВозврата(0); ОткрытьПодбор("Обработка.ТвойПодборКоличество"); КонецЕсли; КонецПроцедуры // ПриЗакрытии |
|||
90
r1000
17.04.13
✎
14:20
|
Почти работает.
Форма как бы на переднем плане уже, но внизу, где окна показаны - вторая форма как бы не активна. Тоесть как бы активно наполовину :) |
|||
91
r1000
17.04.13
✎
14:29
|
Может быть формексом еще как то можно активизировать окно ?
|
|||
92
r1000
17.04.13
✎
14:50
|
Нашел вот такой код:
оСервис = СоздатьОбъект("Сервис"); сзОкна = оСервис.СписокВсехОткрытыхОкон(); Для Н = 1 По сзОкна.РазмерСписка() Цикл КонтекстОкна = сзОкна.ПолучитьЗначение(Н); КонецЦикла; Как по контексту определить имя окна, чтобы активизировать то, что нужно ? |
|||
93
Ёпрст
17.04.13
✎
16:36
|
Дак ты и так знаешь, что нужно активизировать.
>>>"где окна показаны - вторая форма как бы не активна." это как ? Щас какая форма активна ? Вторая с вводом количества ? А надо какую ? |
|||
94
Злопчинский
17.04.13
✎
16:45
|
Ёпрст, ну ты терпеливый!!!
|
|||
95
Ёпрст
17.04.13
✎
16:53
|
(94) скорее ленивый.. мне лень открыть пофигуратор и проверить самому, как оно там
:) |
|||
96
r1000
17.04.13
✎
16:54
|
Ёпрст, я забил и пытаюсь уже сделать через обработку ожидания. Только тоже как то криво получается.
Делаю так в первой форме: Процедура ОткрытВводКоличестваСразу() ВыбратьТекущийЭлементСканер(ТекущийЭлемент()); Форма.ОбработкаОжидания("ОткрытВводКоличестваСразу",0); КонецПроцедуры Процедура ПослеОткрытия() Если ОткрываемСканером = 1 Тогда Форма.ОбработкаОжидания("ОткрытВводКоличестваСразу",1); КонецЕсли; КонецПроцедуры Но есть проблема. Не всегда после открытия первой формы, сразу открывается вторая с вводом количества. |
|||
97
r1000
17.04.13
✎
16:55
|
И я не могу понять. Работает штатная обработкаожидания или от формекса...
|
|||
98
Ёпрст
17.04.13
✎
16:57
|
(97) штатная.
Формековская запускается через расширениеформы или сервис или через объект Таймер |
|||
99
Ёпрст
17.04.13
✎
16:57
|
и там время не 1 секунда, мс
|
|||
100
Ёпрст
17.04.13
✎
16:58
|
а в миллисекундах
|
|||
101
r1000
17.04.13
✎
17:15
|
Использование штатной обработки как криво. Дело в том, что если быстро сканировать товары, то окно ввода количества не всегда вызывается. Тоесть обработка ожидания сбивается как бы. Как формексовскую обработку использовать ?
|
|||
102
r1000
17.04.13
✎
17:16
|
РФорма = СоздатьОбъект("РасширениеФормы");
РФорма.ОбработкаОжидания("ОткрытВводКоличестваСразу",10); Так ? |
|||
103
Ёпрст
17.04.13
✎
17:26
|
почти:
Перем РасшФ; ....... Процедура ПриОткрытии() РасшФ= СоздатьОбъект("РасширениеФормы"); РасшФ.УстановитьФорму(Форма); РасшФ.ОбработкаОжидания("ОткрытВводКоличестваСразу",10); |
|||
104
Злопчинский
18.04.13
✎
04:38
|
нихрена не вкуриваю - то вам надо окошко чтобы вводить количество, то вы очень быстро сканируете - вам что - тогда не надо количество водить..? ты уж определись С ПРОЦЕССОМ. а потом лепи к нему автоматизацию. а то у тебя и процесс хз какой и автоматизация такая же получится
|
|||
105
r1000
18.04.13
✎
11:58
|
Да. не нужно вводить количество. количество по умолчанию = 1. если сканируется следующий товар, то по предыдущему товару добавляется 1 шт.
|
|||
106
r1000
18.04.13
✎
11:59
|
но конечно можно и поменять количество, если нужно.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |