Имя: Пароль:
1C
1С v8
Вопрос перед открытием внешней обработки
, ,
0 Масянька
 
21.08.19
14:21
День добрый!
Внешняя обработка (УФ).
Как задать вопрос и в зависимости от ответа - открывать форму или нет?
Спасибо.
1 Euguln
 
21.08.19
14:26
ПриОткрытии (OnOpen)
Синтаксис:
ПриОткрытии(<Отказ>)
Параметры:
<Отказ>
Тип: Булево.
Признак отказа от открытия формы. Если в теле процедуры-обработчика установить данному параметру значение Истина, то открытие формы произведено не будет.
Значение по умолчанию: Ложь.
Описание:
Возникает на клиенте при открытии формы, до показа окна пользователю. Следует учитывать, что открытие в данном обработчике другой формы влечет за собой сначала активацию открываемой формы, а затем активацию текущей формы.
2 Масянька
 
21.08.19
14:28
(1) А вопрос-то где задавать?
3 НадюшаЯЯ
 
21.08.19
14:30
Сначала открывать форму вопроса, затем если да открывать форму обработки
4 Ёпрст
 
21.08.19
14:30
(2) в этой проце
5 Ёпрст
 
21.08.19
14:30
если ответ отрицательный, отказ = истина
6 Масянька
 
21.08.19
14:30
(3) Не понял...
7 Масянька
 
21.08.19
14:31
(5) Ты добрый - кинь примером, плиз...
У меня уже крыша едет от оповещений...
8 1Садовник
 
21.08.19
14:32
(2) во внешней обработке сделай 2 формы. Первая с вопросом - всегда открывается при запуске. Вторую форму показывай только если правильно ответили в 1й форме.
9 Масянька
 
21.08.19
14:32
(5) У меня вот:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ЗаголовокВопроса = "Внимание!";
    ТекстВопроса = "Данная обработка изменяет данные.
    |Рекомендуется сделать архив информационной базы.
    |Продолжать?";
    Оповещение = Новый ОписаниеОповещения("Продолжать", ЭтотОбъект, Параметры);
    ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет, ЗаголовокВопроса);        
КонецПроцедуры

Дальше - затык...
10 unbred
 
21.08.19
14:35
у обработки может быть не одна форма,прикинь)
11 НадюшаЯЯ
 
21.08.19
14:36
(9) этот код не поможет вам. Т.к нужна модальность чтобы все сработало, а вопрос вы задаете немодальный а значит процедура при открытии сработает
12 Масянька
 
21.08.19
14:37
(10) Да ладно...
13 RomanYS
 
21.08.19
14:37
(9) Если синхронные вызовы запрещены, то проще сделать(8)
14 Масянька
 
21.08.19
14:37
(11) А какой поможет?
15 НадюшаЯЯ
 
21.08.19
14:37
в (8) более подробно все описано
16 НадюшаЯЯ
 
21.08.19
14:37
(14) поможет создание двух форм, одна первая будет копировать форму вопроса, а вторая открываться по кнопке "Да"
17 Cyberhawk
 
21.08.19
14:39
(11) Поможет - в обработчик оповещения передать форму и там ее же и закрывать
18 Масянька
 
21.08.19
14:40
(17) А можно попросить код?
19 Масянька
 
21.08.19
14:40
+ (18) Хоть приблизительно...
20 Cyberhawk
 
21.08.19
14:40
(18) Можно
21 RomanYS
 
21.08.19
14:41
(17) Это не соответствует ТЗ))) Форма же откроется. Закрывать не честно)
22 НадюшаЯЯ
 
21.08.19
14:41
(18) &НаКлиенте
Процедура ПриОткрытии(Отказ)
    ЗаголовокВопроса = "Внимание!";
    ТекстВопроса = "Данная обработка изменяет данные.
    |Рекомендуется сделать архив информационной базы.
    |Продолжать?";
    Оповещение = Новый ОписаниеОповещения("Продолжать", ЭтотОбъект, Параметры);
    ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет, ЗаголовокВопроса);  
КонецПроцедуры

&НаКлиенте
Процедура Продолжать(Результат, Параметры) Экспорт
    Если Результат = КодВозвратаДиалога.Нет Тогда
        Закрыть();
    КонецЕсли;

КонецПроцедуры
23 НадюшаЯЯ
 
21.08.19
14:42
Не могу понять, что у вас вызывает затруднение
24 Ёпрст
 
21.08.19
14:43
на вот, балуйся


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Если НЕ ОткрыватьБезВопроса Тогда
        Отказ = Истина;
        Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопроса", ЭтаФорма);
        ПоказатьВопрос(Оповещение, "Открыть документ?", РежимДиалогаВопрос.ДаНет, 0);
    КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПослеЗакрытияВопроса(Результат, Параметры) Экспорт
    Если Результат = КодВозвратаДиалога.Да Тогда
        ОткрыватьБезВопроса = Истина;
        ЭтаФорма.Открыть();
    КонецЕсли;
КонецПроцедуры
25 Cyberhawk
 
21.08.19
14:44
(21) Ну тогда чтоб совсем честно - отказ в ПриОткрытии в зависимости от переменной / реквизита формы, первый раз отказ = истина, потом если на вопрос ответили правильно то снова ОткрытьФорму.
Но это ебля какая-то.
26 Cyberhawk
 
21.08.19
14:45
Если строго-настрого нельзя показывать форму, поверх которой задается вопрос, тогда конечно же через две формы кошернее
27 Ёпрст
 
21.08.19
14:45
28 НадюшаЯЯ
 
21.08.19
14:47
(25) почему бы и не поебаться?)
29 RomanYS
 
21.08.19
14:50
(25) в (21) конечно шутка. Но если (24) работает, то "е.ля" минимальная. Хотя выглядит конечно странновато.
30 Ёпрст
 
21.08.19
14:53
(29) работает
31 RomanYS
 
21.08.19
14:57
(30) ОткрыватьБезВопроса реквизит формы или переменная объявленная на клиенте? Хотя, наверное, оба варианта должны тогда работать
32 Масянька
 
21.08.19
15:04
(30) Как всегда - огромное спасибо!
Будешь в наших краях - маякни.