Имя: Пароль:
1C
1С v8
Програмное нажатие кнопки на открываемой форме
0 Kurbash
 
13.05.15
20:01
Всем привет. Открываю форму:

дд=ОткрытьФорму("Документ.ВыработкаСотрудников.ФормаОбъекта", ПараметрыФормы);

как теперь можно вызвать обработчик "Провести и закрыть"?

дд.Закрыть(); канает но док не записывается.
дд.ЭтотОбъект.-там нет Записать()....

как быть?
1 DrShad
 
13.05.15
20:03
А зачем ее вообще открывать?
2 Kurbash
 
13.05.15
20:04
надо:)
3 jsmith82
 
13.05.15
20:04
проведи и закрой, хуле
4 jsmith82
 
13.05.15
20:04
в смысле проведи и открой потом
5 jsmith82
 
13.05.15
20:05
так может прокатит, хотя хз
я обычно так не делаю
Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение));
Закрыть();
6 Ma3eIIa
 
13.05.15
20:06
(0) ты в дд. бери объект сам, а не форму
7 jsmith82
 
13.05.15
20:07
(6) а перечитывание данных объекта?
8 Kurbash
 
13.05.15
20:07
док создается, я открываю форму для заполнения параметрами и значениями из формы-родителя
9 jsmith82
 
13.05.15
20:07
в 8.1, вроде, форма становилась "старой"
в уф не помню...
10 Ma3eIIa
 
13.05.15
20:17
&НаКлиенте
Процедура Команда1(Команда)
   Закрыть1();
   ЭтаФорма.ОбновитьОтображениеДанных();
КонецПроцедуры

&НаСервере
Процедура Закрыть1()
   док = ДанныеФормыВЗначение(ЭтотОбъект, Тип("ДокументОбъект.ВыработкаСотрудников") );
   док.Записать( РежимЗаписиДокумента.Проведение );
КонецПроцедуры
11 Kurbash
 
13.05.15
20:18
спасибо
12 jsmith82
 
13.05.15
20:20
(10) форма же "устареет"
13 Kurbash
 
13.05.15
20:21
да, пишет неооствествие параметра 1
14 Ma3eIIa
 
13.05.15
20:21
(12) разве ?
15 Ma3eIIa
 
13.05.15
20:22
(13) плохо
16 Ma3eIIa
 
13.05.15
20:22
(13) там есть прикол блин. ща гуглю
17 jsmith82
 
13.05.15
20:22
&НаКлиенте
Процедура Команда1(Команда)
    ЭтаФорма.Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение));
КонецПроцедуры
18 jsmith82
 
13.05.15
20:23
(10) может, не ДанныеФормыВЗначение, а РеквизитФормыВЗначение, если уж на то пошло
19 jsmith82
 
13.05.15
20:23
док = РеквизитФормыВЗначение("Объект");
20 jsmith82
 
13.05.15
20:24
но даже если так, форма "устареет"
21 Kurbash
 
13.05.15
20:26
(17) Метод Записать не обнаружен
22 jsmith82
 
13.05.15
20:27
так наверно

дд=ОткрытьФорму("Документ.ВыработкаСотрудников.ФормаОбъекта", ПараметрыФормы);

дд.ПровестиИЗакрыть();

//в форме:
&НаКлиенте
Процедура ПровестиИЗакрыть() Экспорт
    ЭтаФорма.Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение));
КонецПроцедуры
23 Ma3eIIa
 
13.05.15
20:27
24 jsmith82
 
13.05.15
20:27
(21) ну как так не обнаружен
у меня обнаружен
25 jsmith82
 
13.05.15
20:30
ТС, проверь (22)
26 Kurbash
 
13.05.15
20:30
не канает что то Пишет что метод ПровестиИЗакрыть не обнаружен
27 jsmith82
 
13.05.15
20:31
хм. блин. щас сам сделаю. ты чо-то не то мутишь )
28 jsmith82
 
13.05.15
20:35
ха. экспортные процедуры клиента недоступны
чо за нах
тогда предлагаю следующий вариант
в параметрах формы прописываешь флаг проведения при открытии
29 Ma3eIIa
 
13.05.15
20:35
тебе нужно провести и отобразить или наоборот ?
30 Ma3eIIa
 
13.05.15
20:36
если ты открываешь форму. ты же можешь нажать проведение и закрытие. если это пользователь
31 Kurbash
 
13.05.15
20:37
32 Kurbash
 
13.05.15
20:38
гляньте сразву все поймете
33 Ma3eIIa
 
13.05.15
20:39
&НаКлиенте
Процедура дд(Команда)
   Закрыть1();
   ЭтаФорма.ОбновитьОтображениеДанных();
КонецПроцедуры

&НаСервере
Процедура Закрыть1()
   док = ДанныеФормыВЗначение(ЭтотОбъект.Объект, Тип("ДокументОбъект.Документ2") );
   док.Записать( РежимЗаписиДокумента.Проведение );
КонецПроцедуры

все так работает
34 jsmith82
 
13.05.15
20:41
// создать реквизит формы "ФлагПроведения" (булево)
// в форме:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    ЭтаФорма.ФлагПроведения = Параметры.ФлагПроведения;
    
КонецПроцедуры

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

&НаКлиенте
Процедура ПровестиИЗакрыть()

    ЭтаФорма.Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение));

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

// вызов формы
ПараметрыФормы = Новый Структура("ФлагПроведения", Истина);
ОткрытьФорму("Документ.ВыработкаСотрудников.Форма.ФормаДокумента", ПараметрыФормы);
35 jsmith82
 
13.05.15
20:41
(33) как ты команду вызовешь?
36 Kurbash
 
13.05.15
20:42
файл мой смотрели?
37 Kurbash
 
13.05.15
20:43
с флагом-конфигурацию менять не враиант
38 jsmith82
 
13.05.15
20:44
ёпт. так тебе код формы тоже менять нельзя?
39 Kurbash
 
13.05.15
20:45
в фокнфигурации нет
40 jsmith82
 
13.05.15
20:46
короче, ёпт
41 Ma3eIIa
 
13.05.15
20:47
http://prntscr.com/74tha5
все работает
42 jsmith82
 
13.05.15
20:47
дд=ОткрытьФорму("Документ.ВыработкаСотрудников.ФормаОбъекта", ПараметрыФормы);    
дд.Записать(Новый Структура("РежимЗаписи", РежимЗаписиДокумента.Проведение));
    дд.Закрыть();
43 jsmith82
 
13.05.15
20:47
работает заепись
44 Ma3eIIa
 
13.05.15
20:47
&НаКлиенте
Процедура дд(Команда) Экспорт
   Закрыть1();
   ЭтаФорма.ОбновитьОтображениеДанных();
КонецПроцедуры

вот так. и все ок
45 jsmith82
 
13.05.15
20:48
ТС, проверь (42)
46 Kurbash
 
13.05.15
20:56
(45) копипастом-не фига не работает..
47 Kurbash
 
13.05.15
20:57
все, джогнал, всем  спасибо
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс