Имя: Пароль:
1C
1С v8
v8: Выбор события
,
0 12345Kostya
 
04.03.13
18:50
При ОнКлик:
Процедура ОсновныеДействияФормыОсновныеДействияФормыЗакрыть(Кнопка)
   ЭтаФорма.Закрыть(1);
КонецПроцедуры

А получается что нажатием на крестик параметр не передается, как быть?
1 Rie
 
04.03.13
18:51
(0) Вешаться?
Тебе что нужно-то?
2 IamAlexy
 
04.03.13
18:52
(0) неее.. против эволюции не попрешь..
ты вынужден сдохнуть..
никакой помощи...
3 12345Kostya
 
04.03.13
18:53
(1) Мне нужно чтобы чтобы передавалась единица если форма закрыта
4 Rie
 
04.03.13
18:54
(3) Куда передавалась, откуда передавалась? Что и как вызывается?
5 Rie
 
04.03.13
18:55
+(4) Ощути разницу между модальной и немодальной формами.
6 12345Kostya
 
04.03.13
18:58
форма открыта модально, из двух разных кнопок я закрываю с параметром 1 в одной, а с параметром 0 в другой. Но при нажатии на крестик в модально открытой форме вообще никакой параметр не передается. А мне при нажатии на крестик нужно передавать 1.
7 Tymoha
 
04.03.13
18:59
(6) при нажатии на крестик тебе возвращается "неопределено"
8 12345Kostya
 
04.03.13
19:02
(7) да
9 kosts
 
04.03.13
19:16
Попробуй перехватить событие перед закрытием или при закрытии. И в них сделай Закрыть(1).
10 kosts
 
04.03.13
19:17
Так же параметр можно передать через реквизит формы.
11 12345Kostya
 
05.03.13
09:32
Процедура ОсновныеДействияФормыОсновныеДействияФормыСохранить(Кнопка)
   ЭтотОбъект.Записать();
   ФлажокОткл = 0;
   ЭтаФорма.Закрыть(ФлажокОткл);
КонецПроцедуры

Процедура ОсновныеДействияФормыОсновныеДействияФормыЗакрыть(Кнопка)
   ФлажокОткл = 1;
   ЭтаФорма.Закрыть(ФлажокОткл);
КонецПроцедуры

Как быть? если нажали на крестик.
12 kosts
 
05.03.13
09:54
(11) >Как быть? если нажали на крестик.
В событии "перед закрытием" сделай:
Отказ = Истина;
13 kosts
 
05.03.13
09:58
Перем Закрывать;
Процедура ОсновныеДействияФормыОсновныеДействияФормыСохранить(Кнопка)
   ЭтотОбъект.Записать();
   ФлажокОткл = 0;
   ЭтаФорма.Закрыть(ФлажокОткл);
Закрывать = Истина;
КонецПроцедуры

Процедура ОсновныеДействияФормыОсновныеДействияФормыЗакрыть(Кнопка)
   ФлажокОткл = 1;
   ЭтаФорма.Закрыть(ФлажокОткл);
Закрывать = Истина;
КонецПроцедуры

Процедура ПередЗакрытием(Отказ)
Если Не Закрывать Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры


Закрывать = Ложь;
14 Wobland
 
05.03.13
09:58
(13) первое нажатие на крест не закроет. хрень какая-то..
15 Wobland
 
05.03.13
09:59
(14) и второе тоже. реализация вполне, но идея - таки хрень
16 kosts
 
05.03.13
10:02
Но проще через реквизит формы данные передать.

Форма = Об.ПолучитьФорму();
Зн = Форма.ОткрытьМодально();
Если зн <> Неопределено Тогда
   ЗначениеПараметра = Форма.Реквизит1;
КонецЕсли;
17 kosts
 
05.03.13
10:02
(15) Хрен, согласен, как вариант.
18 kosts
 
05.03.13
10:24
Кстати (9) тоже работает:

Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
   
   Закрыть(101);
   
КонецПроцедуры


+ еще один способ в свойствах формы убрать галочку "Разрешить закрытие", тогда кнопки крестик вообще нету...

Всего четыре способа, выбирай на вкус =)
19 12345Kostya
 
05.03.13
10:40
Сделал вот так:
Отказ = ?(Элемент.ТекущиеДанные.Ссылка.ПолучитьФорму("ФормаДокументаДляЛотус").ОткрытьМодально() = Неопределено, Истина, Ложь); // Это вызов формы которую я закрываю крестом или кнопкой "Закрыть"

Процедура ОсновныеДействияФормыОсновныеДействияФормыСохранить(Кнопка)
   ЭтотОбъект.Записать();
   ФлажокОткл = 0;
   ЭтаФорма.Закрыть(ФлажокОткл);
КонецПроцедуры
20 cw014
 
05.03.13
10:46
(19) Мдаааааа
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший