Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Формэкс. Процедура ПослеОткрытия() не срабатывает при модальном открытии          
igmig65 Подменю пользователя
сообщение 17.03.25, 9:51
Сообщение #1

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Из: Донецкая обл
Спасибо сказали: 170 раз
Рейтинг: 143.2

День добрый. Есть обработка подключения к постерминалу, нужно сделать чтобы она открывалась модально, на ней выводится лог выполнения: Подключение к терминалу, ожидаем карту, автоизация с банком и тд. Но не могу ее запустить процедуры из ПослеОткрытия(), в модальном режиме не срабатывает, а если вставляю процедуры в ПриОткрытии(), то все срабатывает но форма не открывается, вернее открывается уже после выполнения процедур, соответственно лог не видно. Формэкс скачал вроде последний, 198. Кто нибудь подскажет, может как по другому можно сделать, чтобы форма открывалась посередине, отцентрованно и в момент, когда форма уже открыта запустить нужные процедуры.

Сообщение отредактировал Vofka - 17.03.25, 9:54

Vofka Подменю пользователя
сообщение 17.03.25, 9:59
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14038
Из: Киев
Спасибо сказали: 4596 раз
Рейтинг: 3728.3

В 8 есть метод ПодключитьОбработчикОжидания() или что-то типа этого. Там, кажется, указывается процедура которую надо вызвать, интервал через когда вызвать, и еще что-то. Короче точно не помню, но суть должна быть понятна. В 7.7 я вообще ничего уже не помню, но быстренько загуглил, вроде как там тоже есть метод ОбработкаОжидания(). Я бы смотрел в эту сторону. Т.е. открыть форму, а в ПриОткрытии вконце добавить обработчик ожидания, который выведет лог.

Сообщение отредактировал Vofka - 17.03.25, 10:01

Спасибо сказали: igmig65,

andrew76 Подменю пользователя
сообщение 17.03.25, 12:11
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 492
Из: Казахстан
Спасибо сказали: 56 раз
Рейтинг: 56

Vofka @ Сегодня, 12:59 * ,

Это описание ОбработкиОжидания от FormEx:
РасширениеФормы->ОбработкаОжидания

ОбработкаОжидания(<?>,)
Синтаксис:
ОбработкаОжидания(Имя, Интервал)
Назначение:
Вызывает процедуру модуля формы с заданным интервалом в миллисекундах. В отличии от штатной обработки ожидания, вызывается при открытых модальных формах. Для одной формы может быть установлено сколько угодно обработок ожидания путем создания нужного количества объектов РасширениеФормы. При уничтожении объекта, для которого вызывался данный метод, соответствующая процедура обработки ожидания останавливается. Метод работает только после физического открытия окна формы.
Параметры:
<Имя> - (Строка Имя процедуры модуля текущей формы для периодического вызова (если в качестве параметра передается пустая строка, то ранее запущенный процесс прекращается))
<Интервал> - (Число Интервал вызова процедуры в миллисекундах (если в качестве параметра передается 0 (ноль)) , то ранее запущенный процесс прекращается)
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:
(Строка) Имя процедуры, которая была установлена ранее в качестве процедуры обработки ожидания.

Есть еще ,тоже от FormEx
Сервис->ОстальныеМетоды


ОбработкаОжидания(<?>,)
Синтаксис:
ОбработкаОжидания(<Имя>,<Интервал>)
Назначение:
Вызывает глобальную процедуру с заданным интервалом в миллисекундах.
ПРИМЕР:
Сервис = СоздатьОбъект("Сервис");
Сервис.ОбработкаОжидания("глПолучитьНовыеЗаявки",100);

Цитата(igmig65 @ 17.03.25, 12:51) *
не могу ее запустить процедуры из ПослеОткрытия(), в модальном режиме не срабатывает, а если вставляю процедуры в ПриОткрытии(), то все срабатывает но форма не открывается, вернее открывается уже после выполнения процедур, соответственно лог не видно.


Есть еще процедура ПослеСозданияФормы от FormEx

Процедура ПослеСозданияФормы(<?>)КонецПроцедуры
Синтаксис:
Процедура ПослеСозданияФормы(<Контекст>)КонецПроцедуры
Назначение:
Предопределенная процедура вызывается после физического создания окна формы в системе, когда окно формы создано, но еще не полностью проинициализировано и не отображено на экране.
Параметры:
<Контекст> - контекст открытой формы
ЗАМЕЧАНИЕ:
В этой процедуре (и во всех процедурах, вызываемых после нее) можно вызывать методы, которые помечены как "работает только после физического открытия окна формы".


andrew76 @ Сегодня, 14:07 * ,

Не работает ПослеОткрытия() в модальном режиме:
правда,ветка на том форуме древняя:
[необходимо зарегистрироваться для просмотра ссылки]

ещё такое есть:
v7: ОбработкаОжидания в Formex
[необходимо зарегистрироваться для просмотра ссылки]

Цитата(igmig65 @ 17.03.25, 12:51) *
когда форма уже открыта запустить нужные процедуры.


А может посадить процедуры на кнопку (кнопка на форме).
Сделать кнопку невидимой.Потом сэмулировать нажатие этой кнопки ?
Должно сработать в принципе и без formex.

Спасибо сказали: igmig65,

andrew76 Подменю пользователя
сообщение 17.03.25, 15:56
Сообщение #4

Оратор
*****
Группа: Пользователи
Сообщений: 492
Из: Казахстан
Спасибо сказали: 56 раз
Рейтинг: 56

Цитата(igmig65 @ 17.03.25, 12:51) *
Кто нибудь подскажет, может как по другому можно сделать, чтобы форма открывалась посередине, отцентрованно


Для вывода окна по центру в форме обработки пропишите следующую процедуру :
(если используете компоненту FormEx)

Процедура ПослеОткрытия()
   Окно = СоздатьОбъект("Окна");
   Окно.ЦентрироватьОкно(Форма);
   Форма.Обновить();
КонецПроцедуры


У меня этот код отработал отлично.Каждый раз при запуске обработки,окно строго по центру экрана.

andrew76 @ Сегодня, 17:48 * ,

Можно там же поэкспериментировать со стилем окна:

Процедура ПослеОткрытия()
   Окно = СоздатьОбъект("Окна");
   Окно.ЦентрироватьОкно(Форма);
   Окно.СтильОкна(Форма,2); //стиль от 0 до 2, 1 и 2 -без заголовка окна,2 - по моему модальный режим
   Форма.Обновить();
КонецПроцедуры


Что-нибудь получилось ? Дальше мне искать ? Чи не трэба ?

Цитата(igmig65 @ 17.03.25, 12:51) *
Кто нибудь подскажет


Так этот вопрос ещё актуален ? Истина уже близко !

Спасибо сказали: igmig65,

igmig65 Подменю пользователя
сообщение 17.03.25, 16:05
Сообщение #5

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Из: Донецкая обл
Спасибо сказали: 170 раз
Рейтинг: 143.2

andrew76 @ Сегодня, 15:56 * ,
Сегодня ночью буду пробовать, отпишусь..

andrew76 Подменю пользователя
сообщение 17.03.25, 16:34
Сообщение #6

Оратор
*****
Группа: Пользователи
Сообщений: 492
Из: Казахстан
Спасибо сказали: 56 раз
Рейтинг: 56

igmig65 @ Сегодня, 19:05 * ,

Не спешите ! Все решится гораздо раньше !
Есть в FormEx нужный функционал - почти как в 1с 8-ке !
Прописываете вызовы ваших процедур в процедуру (я ее назвал- "ВашаПроцедура"-назовите её как хотите) и вызываете её методом - ВыполнитьПроцедуру !

Должно работать !

Процедура ПослеОткрытия()
  
    Окно = СоздатьОбъект("Окна");
    Окно.ЦентрироватьОкно(Форма);
    //Окно.СтильОкна(Форма,2);
    Форма.Обновить();
    Сервис = СоздатьОбъект("Сервис");
    Сервис.ВыполнитьПроцедуру(Контекст, "ВашаПроцедура"); // да,да,вот она !

КонецПроцедуры


ВыполнитьПроцедуру(<?>,,)
Синтаксис:
ВыполнитьПроцедуру(<Контекст>,<ИмяПроцедуры>,<СписокАргументов>)
Назначение:
Метод предназначен для выполнения процедуры в заданном контексте.
Возвращает 1 в случае успеха, 0 - в противном случае.
ПРИМЕР:
Перем Конт;
Сервис = СоздатьОбъект("Сервис");
ОткрытьФорму("Обработка.Демо", Конт);
Список = СоздатьОбъект("СписокЗначений");
Список.ДобавитьЗначение("Первый параметр");
Список.ДобавитьЗначение("Второй параметр");
Список.ДобавитьЗначение("Третий параметр");
Сервис.ВыполнитьПроцедуру(Конт, "Выполнить", Список);

Только все эти фишки (фичи) - от FormEx !

Спасибо сказали: igmig65,

igmig65 Подменю пользователя
сообщение 17.03.25, 18:01
Сообщение #7

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Из: Донецкая обл
Спасибо сказали: 170 раз
Рейтинг: 143.2

При открытии создаю расширение формы:
//==============================
Процедура ПослеОткрытия()
    Сформировать();
КонецПроцедуры
Процедура ЗагрузитьФормэкс()
    Если ЗагрузитьВнешнююКомпоненту("FormEx.dll") = 0 Тогда
        Предупреждение("Неудачная попытка загрузить FormEx.dll");
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;
    //ФормаРасш.Maximize = 1;
КонецПроцедуры
Процедура ПриОткрытии()
    ЗагрузитьФормэкс();
        ФормаРасш = СоздатьОбъект("РасширениеФормы");
    ФормаРасш.ОбработкаОжидания("ПослеОткрытия",10);
    ФормаРасш.ОбработкаОжидания("",0);
КонецПроцедуры

//============================
вот так все норм отработало, всем спс..

Спасибо сказали: andrew76,

andrew76 Подменю пользователя
сообщение 17.03.25, 18:08
Сообщение #8

Оратор
*****
Группа: Пользователи
Сообщений: 492
Из: Казахстан
Спасибо сказали: 56 раз
Рейтинг: 56

igmig65 @ Сегодня, 21:01 * ,


ну тогда палец,который на форме форума.

Спасибо сказали: igmig65,

igmig65 Подменю пользователя
сообщение 17.03.25, 18:15
Сообщение #9

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Из: Донецкая обл
Спасибо сказали: 170 раз
Рейтинг: 143.2

andrew76 @ Сегодня, 18:08 * ,
Да, пардон, думал всем поставил, кстати форму открываю модально, поэтому центровать не пришлось.
Тему можно закрыть, еще раз всем спс..

tibank Подменю пользователя
сообщение 02.04.25, 14:37
Сообщение #10

Общительный
**
Группа: Пользователи
Сообщений: 14
Спасибо сказали: 3 раз
Рейтинг: 3

andrew76 @ 17.03.25, 17:34 * ,
Если форма открывается не модально, можно проще
Перем Конт;

ОткрытьФорму("Обработка.Демо", Конт);
Конт.ВашаПроц(Парам1, Парам2,....);


Но formex должен быть загружен

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.04.25, 2:26
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!