Имя: Пароль:
IT
 
Обращение к элементам формы через модуль документа
0 demmix
 
14.06.13
12:08
Здравствуйте.
Вопрос, как обратиться к элементам формы(а конкретнее реквизит в форме) перезаписать его и обновить форму. Задача при открытой форме нажать "провести" и динамически поменять этот реквизит (реквизит НЕ документа,а создан в форме)
1 Ёпрст
 
14.06.13
12:10
меняй в самой форме, в модуле документа менять не надо при этом ничего.
2 viktor_vv
 
14.06.13
12:13
(0) А в чем тайный смысл сего действа ? Ну поенял ты реквизит формы, закрыл документ, открыл и что там будет в этом реквизите?
3 demmix
 
14.06.13
12:17
нет,открыта форма, нажимаю провести,форма не закрыта, но данное остается старым.При закрытии и потом открытие реквизит обновляется,но нежно динамически в форме при проведении изменить
4 Ёпрст
 
14.06.13
12:24
Либо в формуле текста "пасти" обновление формы, либо тупо в кнопке
Провести();ОбновитьЧтоТоНаФорме()
5 catena
 
14.06.13
12:28
Хм...
У меня в общем модуле в подписке на событие записи регистра бухгалтерии работает так:
Если Источник.Отбор.Регистратор.Значение.Ссылка.ПолучитьФорму().Открыта() Тогда
   УстановитьКнопкуРегистрацииВИнтеграции(Источник.Отбор.Регистратор.Значение.Ссылка.ПолучитьФорму().ЭлементыФормы.ДействияФормы);
КонецЕсли;    

Думаю и в модуле документа должно работать.
6 demmix
 
14.06.13
12:41
Если Документы.ИмпЗаказСМР.ПолучитьФорму("ФормаДокумента").Открыта() Тогда
             Документы.ИмпЗаказСМР.ПолучитьФорму("ФормаДокумента").ЭлементыФормы.ТекущийСтатус = 123;
           Документы.ИмпЗаказСМР.ПолучитьФорму("ФормаДокумента").Обновить();
  КонецЕсли;

ошибка вылетает "Интерактивные операции недоступны"
7 catena
 
14.06.13
12:50
(6)"Документы.ИмпЗаказСМР." - а у метаданных нет формы. Форма есть у объекта. Даже у ссылки на объект.
8 demmix
 
14.06.13
12:56
Объект = ЭтотОбъект;          
       Если Объект.ПолучитьФорму("ФормаДокумента").Открыта() Тогда
             Объект.ПолучитьФорму("ФормаДокумента").ЭлементыФормы.ТекущийСтатус = 123;
           Объект.ПолучитьФорму("ФормаДокумента").Обновить();
       КонецЕсли;


результат тот же...а при проведении документа ни какие события формы не используются??
9 Шапокляк
 
14.06.13
13:04
(8) ЭтаФорма.Обновить() не?
10 demmix
 
14.06.13
13:08
ЭтаФорма.Обновить()в модуле формы вызывается,с модуля документа не будет работать
11 catena
 
14.06.13
13:12
(8)Я ж сказала - ссылка. Всё работает.

Если ЭтотОбъект.Ссылка.ПолучитьФорму().Открыта() Тогда
       ЭтотОбъект.Ссылка.ПолучитьФорму().ЭлементыФормы.ПолеВвода1.Значение = "123";
КонецЕсли;
12 catena
 
14.06.13
13:17
Хм... у меня и с объектом работает. Форма у вас какая, уточните исходные данные.
13 anddro
 
14.06.13
13:24
У формы есть обработчик события ПослеЗаписи.
Вот в нем и надо обновлять значения элементов формы, не связанные с данными объекта.

Пытаться менять данные формы из модуля объекта или подписчика на событие это может и работает (просто в голову не могло прийти проверять, так это или нет), но это, мягко будет сказано, моветон.
14 Mitriy
 
14.06.13
13:27
(0) руки оторвать...
15 demmix
 
14.06.13
13:28
Да я так и сделал,спасибо(13)

не знаю почему не работает, форма вроде ничем не отличается от других(12)
16 demmix
 
14.06.13
13:30
не надо руки отрывать,я начинающий и не знал что событие формы "после записи" выполняется после "обработки проведения"(14)
17 catena
 
14.06.13
13:32
(13)А бывает необходимость.
К сожалению, подписки на событие ПослеЗаписи() нет, а прописывать в каждом документе как-то лениво.
18 anddro
 
14.06.13
13:36
(16) с этим все просто: один раз сделай в тестовом документе обработчики событий в форме и в модуле: ПередЗаписью,ПриЗаписи, ОбработкаПроведения (есть только в модуле), ПослеЗаписи (есть только в форме), поставь точки останова и проведи под отладчиком. И будешь знать, что и в каком порядке вызывается.

(17) зато есть вызовы стандартных функций из общих модулей. Вот лучше в них вставлять свои "закладки". Получение (создание) формы из подписчика - это очень плохо для производительности при групповой обработке документов.
19 catena
 
14.06.13
13:53
(18)Не нашла общей типовой функции для после записи. Честно искала. Мою природную лень сложно побороть :)
20 catena
 
14.06.13
13:55
+(19)А групповых обработок у нас не бывает, мы вынуждены работать строго одним днем.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.