Имя: Пароль:
1C
 
Оповещение
, , ,
0 Dimarik_1
 
15.11.22
12:40
Можете подсказать, каким образом мне вызвать форму, чтобы форма открылась и ждала пока я нажму на "ок или отмена" и тоглько после того как я в этой форме нажму, у меня код дальше шел. даже не знаю как пример нагуглить. Может подскажете?
1 mikecool
 
15.11.22
12:42
эээ
открытьформу с блокироватьвладельца
2 Ryzeman
 
15.11.22
12:42
В 1с нет асинхронных вызовов с ожиданиями, насколько мне известно.

Вызывай модально, если есть такая необходимость, либо переделывай логику что бы остальной код в обработке оповещения шёл
3 Ryzeman
 
15.11.22
12:43
(1) Я так понял ему выполнение кода в родительском окне нужна
4 Ryzeman
 
15.11.22
12:43
В смысле остановка выполнения кода
5 mikecool
 
15.11.22
12:43
(4) так это (1) и делает
6 mikecool
 
15.11.22
12:44
или я уже туплю ))
хрен поймешь - чего автору надо
7 Ryzeman
 
15.11.22
12:44
(5) Разве? Я всегда думал что РежимОткрытияОкнаФормы влияет на доступность интерфейса только, что ты туда кликнуть не можешь.
8 Dimarik_1
 
15.11.22
12:45
Сморите. Мне нужно отправить документ на почту. Но перед отправкой необходимо вызвать окошко, в котором почту надо указать. После того как пользователь укажет почту, продолжить код отправки
9 Dimarik_1
 
15.11.22
12:45
(1)  Модальное открытие формы это очень нехороший подход. 1С давно об этом говорит и не рекомендует так делать
10 boozin
 
15.11.22
12:49
Открываешь форму как хочешь. При нажатии кнопки отправляешь оповещение первой форме, отрабатываешь оповещение как надо
11 Ryzeman
 
15.11.22
12:49
(9) Ну, раз ты такой умный и начитанный, то мог бы нагуглить "Работа с Диалогами в языке 1С 8.3" и увидеть как правильно вести диалог с пользователем без использования модальных вызовов))

&НаКлиенте
Процедура ОтправитьМыло(Команда)
  
Оповещение = Новый ОписаниеОповещения("ПослеВводаЗначения",
      ЭтотОбъект);    

    ПоказатьВводЗначения(
        Оповещение,
        ,
        "Введите адрес почты",
        "Строка"
    );

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

&НаКлиенте
Процедура ПослеВводаЗначения(Результат, Параметры) Экспорт    

    Если Не Результат = Неопределено Тогда
        {код для проверки строки и отправки почты}        
    КонецЕсли;

КонецПроцедуры
12 boozin
 
15.11.22
12:51
Ну или как в 11 :)))
13 Dimarik_1
 
15.11.22
12:52
спасибо
14 FIXXXL
 
15.11.22
12:53
(0) в СП
ОткрытьФорму (OpenForm)
Вариант синтаксиса: По имени
Синтаксис:
ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>, <ОписаниеОповещенияОЗакрытии>, <РежимОткрытияОкна>)

тебе нужен предпоследний параметр
15 Ryzeman
 
15.11.22
14:31
(14) (5) Неа. Только что проверил. Как я и всегда думал, оно делает ровно то же самое, что и все асинхронные вызовы в 1с. Проверил на этом:

    ОткрытьФорму("Справочник.Номенклатура.ФормаГруппы",, ЭтаФорма,,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
    Сообщить("я выполнился в другом окне, хотя не должен был :(");

Код никак не останавливается и спокойно выполняется дальше. При этом сообщение на новой форме.
Если уж надо ловить действия при закрытии, и делать это через полноценную форму, то логично обработку выбора делать или ловить оповещения.
16 FIXXXL
 
15.11.22
14:39
(15) я и не предлагал ничего блокировать
надо в основной форме написать обработчик оповещения, который после закрытия формы ввода будет делать "и тоглько после того как я в этой форме нажму, у меня код дальше шел" и указать его предпоследним параметром в ОткрытьФорму()
при закрытии формы ввода нужно возвращать результат и проверять его в основной форме в обработчике оповещения закрытия формы ввода сколь угодно

у тебя же в коде обработчика оповещения не наблюдается...
17 Ryzeman
 
15.11.22
14:45
(16) >>тебе нужен предпоследний параметр
Я тут приставку "пред" пропустил :-D
18 boozin
 
15.11.22
14:51
(15) Код никак не останавливается и спокойно выполняется дальше. Так не пиши больше ничего после "ОткрытьФорму("Справочник.Номенклатура.ФормаГруппы",, ЭтаФорма,,,,, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);" :)))
19 boozin
 
15.11.22
14:52
Всю логику дальше в оповещение
20 Ryzeman
 
15.11.22
14:54
(18) Я о том, что асинхронных вызовов в 1с с ожиданием нет, и (5) всё таки не прав в контексте конкретно этого вопроса.
21 boozin
 
15.11.22
14:58
(20) "Я о том, что асинхронных вызовов в 1с с ожиданием нет". Ожидание реализуется через оповещение... Так что все есть... :)
22 Ryzeman
 
15.11.22
15:02
(21) Нет, это не то. В других языках именно явно можешь нафигачить хоть цикл асинхронных операций и в одном модуле в одной процедуре ожидать их завершения. Такого в 1с нет, по крайней мере пока что