Имя: Пароль:
1C
1С v8
Обратиться к открытой форме документа
,
0 ddigg
 
08.08.13
17:18
В обработке есть процедуры
Процедура Пр1()
  Форма1 = ПолучитьФорму("Документ.Платежка1.Форма.ФормаДокумента");
  Форма1.Дата = ТекущаяДата();
  Форма1.Открыть();
КонецПроцедуры

и

Процедура Пр2()
  //??
КонецПроцедуры

Вначале вызывается Пр1(), которая открывает форму. А потом через время Пр2() , которая должна поменять дату Форма1.Дата = ТекущаяДата();

Но как обратиться к уже открытой форме? Подскажите новичку..
1 Maxus43
 
08.08.13
17:21
почему всё не в пр1? до открытия формы поменять может?
2 Ёпрст
 
08.08.13
17:21
самое тупое, сделать переменную Форма1 - глобальной для модуля, т.е Перем Форма1 воткнуть в начало модуля.
3 Maxus43
 
08.08.13
17:21
и смысл менять у формы? может у объекта менять данные?
4 Ёпрст
 
08.08.13
17:21
ну и в пр2 проверять, что в переменной.
5 ddigg
 
08.08.13
17:22
>почему всё не в пр1? до открытия формы поменять может?

Пр2() вызывается через время, то есть когда телефонный звонок окончился..
6 Волчара2010
 
08.08.13
17:25
ЭтаФорма
7 Волчара2010
 
08.08.13
17:29
вот намуя тебе это надо?
8 ddigg
 
08.08.13
17:34
(7) закинуть в открытую сейчас форму время окончания звонка "снаружи". ну и потом ее можно вручную спокойно закрыть и сохранить..
9 Trainee
 
08.08.13
17:43
Вот такой вот код видел:

//Зададим ключ поиска документа, из которого вызвана данная обработка,
             //чтобы получить ссылку на редактирумый документ в удобном виде для
            //функции ОткрытьФорму()
             КлючПоиска = Новый Структура("Ключ", Элемент);

             //Но нам не надо открывать новую форму (окно) для изменяемого документа, а
            //Нам надо все изменения показать в уже открытых у клиента окнах
            Окна = ПолучитьОкна();
             Для каждого Окно из Окна Цикл

                //Окно изменяемого документа будет точно не основным, а вспомогательным, поэтому
                //сразу пропускаем основное окно, а далее идем на не очень хороший способ поиска открытого окна
                //изменяемого документа. Мы просто переберем все окна, а в заголовке, которых будет встречаться
                //Наименование, номер и дата нужного документа - будем изменять
                Если НЕ Окно.Основное
                    И Найти(Окно.Заголовок, Элемент) Тогда
                    //Передадим ключ поиска (можно сказать ссылку на объект) и данные о найденном открытом окне
                    //в функцию ОткрытьФорму()
                     //Код находится в цикле на тот случай, если открытых окон изменяемого документа больше одного
                    Форма = ОткрытьФорму("Документ.*ИмяДокумента*.Форма.ФормаДокумента",КлючПоиска,,,Окно);

                     //Далее мы получаем объект только, что повторно открытой формы и помещаем её в переменную
                    //В объекте содержатся все реквизиты (элементы) формы
                    НовыйОбъект = Форма.Объект;

                    
                    
            //Мы помещаем объект формы в переменную,
                     //так как должны передать её в процедуру на сервере,
                     //где нельзя изменять объект формы, зато можно править переменную содержащую его
                    //ЗаполнитьОбъект(НовыйОбъект);

//Заполняем чем-то                    

                    
                     //После выполнения процедуры на сервере мы получаем изменную переменную НовыйОбъект,
                     //которую необходимо передать в уже полученную нами форму
                    КопироватьДанныеФормы(НовыйОбъект, Форма.Объект);
10 Serg_1960
 
08.08.13
18:01
Выключи комп, иди отдохни.

У тс всё гораздо проще - ему достаточно расшарить переменную Форма1 - прописать переменную, сделав её видимой в процедурах и функциях обработки.
Закон Брукера: Даже маленькая практика стоит большой теории.