День добрый. Есть обработка подключения к постерминалу, нужно сделать чтобы она открывалась модально, на ней выводится лог выполнения: Подключение к терминалу, ожидаем карту, автоизация с банком и тд. Но не могу ее запустить процедуры из ПослеОткрытия(), в модальном режиме не срабатывает, а если вставляю процедуры в ПриОткрытии(), то все срабатывает но форма не открывается, вернее открывается уже после выполнения процедур, соответственно лог не видно. Формэкс скачал вроде последний, 198. Кто нибудь подскажет, может как по другому можно сделать, чтобы форма открывалась посередине, отцентрованно и в момент, когда форма уже открыта запустить нужные процедуры.
В 8 есть метод ПодключитьОбработчикОжидания() или что-то типа этого. Там, кажется, указывается процедура которую надо вызвать, интервал через когда вызвать, и еще что-то. Короче точно не помню, но суть должна быть понятна. В 7.7 я вообще ничего уже не помню, но быстренько загуглил, вроде как там тоже есть метод ОбработкаОжидания(). Я бы смотрел в эту сторону. Т.е. открыть форму, а в ПриОткрытии вконце добавить обработчик ожидания, который выведет лог.
Vofka @ Сегодня, 12:59
,
Это описание ОбработкиОжидания от FormEx:
РасширениеФормы->ОбработкаОжидания
ОбработкаОжидания(<?>,)
Синтаксис:
ОбработкаОжидания(Имя, Интервал)
Назначение:
Вызывает процедуру модуля формы с заданным интервалом в миллисекундах. В отличии от штатной обработки ожидания, вызывается при открытых модальных формах. Для одной формы может быть установлено сколько угодно обработок ожидания путем создания нужного количества объектов РасширениеФормы. При уничтожении объекта, для которого вызывался данный метод, соответствующая процедура обработки ожидания останавливается. Метод работает только после физического открытия окна формы.
Параметры:
<Имя> - (Строка Имя процедуры модуля текущей формы для периодического вызова (если в качестве параметра передается пустая строка, то ранее запущенный процесс прекращается))
<Интервал> - (Число Интервал вызова процедуры в миллисекундах (если в качестве параметра передается 0 (ноль)) , то ранее запущенный процесс прекращается)
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:
(Строка) Имя процедуры, которая была установлена ранее в качестве процедуры обработки ожидания.
Есть еще ,тоже от FormEx
Сервис->ОстальныеМетоды
ОбработкаОжидания(<?>,)
Синтаксис:
ОбработкаОжидания(<Имя>,<Интервал>)
Назначение:
Вызывает глобальную процедуру с заданным интервалом в миллисекундах.
ПРИМЕР:
Сервис = СоздатьОбъект("Сервис");
Сервис.ОбработкаОжидания("глПолучитьНовыеЗаявки",100);
Процедура ПослеОткрытия()
Окно = СоздатьОбъект("Окна");
Окно.ЦентрироватьОкно(Форма);
Форма.Обновить();
КонецПроцедуры
Процедура ПослеОткрытия()
Окно = СоздатьОбъект("Окна");
Окно.ЦентрироватьОкно(Форма);
Окно.СтильОкна(Форма,2); //стиль от 0 до 2, 1 и 2 -без заголовка окна,2 - по моему модальный режим
Форма.Обновить();
КонецПроцедуры
igmig65 @ Сегодня, 19:05
,
Не спешите ! Все решится гораздо раньше !
Есть в FormEx нужный функционал - почти как в 1с 8-ке !
Прописываете вызовы ваших процедур в процедуру (я ее назвал- "ВашаПроцедура"-назовите её как хотите) и вызываете её методом - ВыполнитьПроцедуру !
Должно работать !
Процедура ПослеОткрытия()
Окно = СоздатьОбъект("Окна");
Окно.ЦентрироватьОкно(Форма);
//Окно.СтильОкна(Форма,2);
Форма.Обновить();
Сервис = СоздатьОбъект("Сервис");
Сервис.ВыполнитьПроцедуру(Контекст, "ВашаПроцедура"); // да,да,вот она !
КонецПроцедуры
При открытии создаю расширение формы:
//==============================
Процедура ПослеОткрытия()
Сформировать();
КонецПроцедуры
Процедура ЗагрузитьФормэкс()
Если ЗагрузитьВнешнююКомпоненту("FormEx.dll") = 0 Тогда
Предупреждение("Неудачная попытка загрузить FormEx.dll");
СтатусВозврата(0);
Возврат;
КонецЕсли;
//ФормаРасш.Maximize = 1;
КонецПроцедуры
Процедура ПриОткрытии()
ЗагрузитьФормэкс();
ФормаРасш = СоздатьОбъект("РасширениеФормы");
ФормаРасш.ОбработкаОжидания("ПослеОткрытия",10);
ФормаРасш.ОбработкаОжидания("",0);
КонецПроцедуры
andrew76 @ Сегодня, 18:08
,
Да, пардон, думал всем поставил, кстати форму открываю модально, поэтому центровать не пришлось.
Тему можно закрыть, еще раз всем спс..
andrew76 @ 17.03.25, 17:34
,
Если форма открывается не модально, можно проще
Перем Конт;
ОткрытьФорму("Обработка.Демо", Конт);
Конт.ВашаПроц(Парам1, Парам2,....);
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua