Имя: Пароль:
1C
1C 7.7
v7: разница между #Записать Провести? Закрыть и Записать() Провести() Форма.Закрыть(
0 Mashinist
 
10.10.12
18:51
Ситуация такая
Из формы документа А открывается другой документ Б через ОткрытьФорму(...)

В открытом документе если на кнопке ОК написано #Записать Провести? Закрыть, то в форме документа А после закрытия документа Б возникает событие ОбработкаПодбора()

Но если заменить кнопку на вызов своих процедур (т.к. нужно контролировать процесс), то это событие не возникает. А т.к. документ А заполняется по документам Б, то все получается плохо...
А было хорошо, когда было #Записать Провести? Закрыть

Может можно как-то вызвать ОбработкаПодбора как-то...
1 Fragster
 
гуру
10.10.12
18:52
переходите на v8, там это реализовано
2 zak555
 
10.10.12
18:52
не хорчешь наживать на ОК ?
3 zak555
 
10.10.12
18:53
Парам.Форма.СрокаДействияФормы = "Записать Провести";
4 Mashinist
 
10.10.12
18:54
(2) Хочу контролировать процесс Записи и Проведения
Т.е. на на кнопку ОК повесил процедуру где выполняются по сути те же действия

Записать()
Провести()
Форма.Закрыть()

А результат получается разный...
5 Classic
 
10.10.12
18:56
(4)

В семерке функция Записать() не вызывает обработку функции ПриЗаписи(). Она просто пишет.

Это насколько я помню
6 Mashinist
 
10.10.12
19:00
(3) Что за СрокаДействияФормы ? что-то я в СП такого не нахожу
7 Mashinist
 
10.10.12
19:02
Ага.. кажется нашел что такое СтрокаДействийФормы
Сейчас попробую
8 Cthulhu
 
10.10.12
19:17
(5): да. но не трагедия. "ПриЗаписи(); Если СтатусВозврата()=1 Тогда Записать(); Провести(); КонецЕсли;"
9 Mashinist
 
10.10.12
19:18
(3) Спасибо за наводку
В какой-то мере помогло...

Проблема осталась с кнопкой "Провести"

Когда пишешь в тексте СтрокаДействийФормы ="Провести"
то дальнейший код не отрабатывает

Т.е. я раньше писал так

Провести()
Если Проведен() = 1 Тогда
// ряд действий

Теперь я написал
СтрокаДействийФормы ="Провести"
Если Проведен() = 1 Тогда
// ряд действий

В Если не попадает вообще
10 Cthulhu
 
10.10.12
19:21
(9): вешай в строку действий процедуру, которая и проводит, и дальше что надо делает.
11 Ork
 
10.10.12
19:26
(9) Вообще говоря Провести() тоже может возвращать результат. Вот его и нужно проверять. А уж если хочется проверить именно проведенность - тогда через ТекущийДокумент().
12 ЧеловекДуши
 
10.10.12
19:35
Вечер нечегонепонимаю :)
13 Mashinist
 
10.10.12
19:36
значит суть такова

МояПроцедураПровести()
СтрокаДействийФормы ="Провести"
Если Проведен() = 1 Тогда
// ряд действий
...
КонецПроцедуры

все проходит по порядку, только документ реально проводится после окончания процедуры

Но ситуация до конца не решается

Было три кнопки
ОК (#Записать Провести? Закрыть), Провести(#Провести) и Закрыть(#Закрыть)

Вот так все было хорошо
Нажимаем ОК, документ проводится, закрывается и вызывается ОбработкаПодбора в вызываемом документе

Нажимаем Провести документ проводится. Нажимаем Закрыть документ закрывается и вызывается ОбработкаПодбора в вызываемом документе

Теперь я на кнопку Провести вешаю свою процедуру, где пишу

МояПроцедураПровести()
СтрокаДействийФормы ="Провести"
КонецПроцедуры

Кнопка Закрыть(#Закрыть) так и осталась
Нажимаю Провести документ проводится. Нажимаем Закрыть документ закрывается, но вот бработкаПодбора в вызываемом документе НЕ ОТРАБАТЫВАЕТ!!!
Вот лажа
14 ЧеловекДуши
 
10.10.12
19:36
При чем тут форма одного документа вызываемая из другого и при этом во втором вызывается еще и третья :)
15 ЧеловекДуши
 
10.10.12
19:38
(13)Зачем тебе, что бы отрабатывала обработка подбора во втором документе, если пользователь интерактивно работает только с первым, и понятие не имеет об втором?
16 Mashinist
 
10.10.12
19:46
Короче
Тема закрыта
Разобрался

Все в том, что не вызывалось у меня

   Форма.ВыполнитьВыбор(ТекущийДокумент());

Вот эта штука и дергает вызывающий документ

забывать стал 7-ку

"В 8-ке это реализовано " :-)
17 Cthulhu
 
10.10.12
19:51
мнда...
18 KRV
 
10.10.12
19:56
(17)  букву "а" пропустил? )))
2 + 2 = 3.9999999999999999999999999999999...