Имя: Пароль:
1C
1С v8
Вызов процедуры формы из внешней обработки
,
0 volkVVV
 
22.07.15
12:56
Доброго времени суток.
Есть модуль формы справочника Номенклатура, мне необходимо вызвать процедуру ПриЗакрытии() из внешней обработки.
Подскажите плиз, как это сделать можно?
1 palpetrovich
 
22.07.15
13:02
скопировать нужное из этой процедуры себе в обработку - самое простое
2 volkVVV
 
22.07.15
13:04
(1) дело в том, что процедура ПриЗакрыти() тянет за собой еще процедуры
3 palpetrovich
 
22.07.15
13:08
(2) сам не пробовал, попробуй ты :)
ТекОбъект = ТекСсылкаНоменклатуры.ПолучитьОбъект();
ТекОбъект.ПриЗакрытии();
4 1Сергей
 
22.07.15
13:10
А у процедуры ПриЗакрытии() есть ключевое слово Экспорт?
5 ixijixi
 
22.07.15
13:10
Форма.Закрыть() она  и потянет вызов предопределенной процедуры
6 Альбатрос
 
22.07.15
13:12
Решение в (1)
7 palpetrovich
 
22.07.15
13:13
(5) а, открыть форму до этого - не обяз?
8 volkVVV
 
22.07.15
13:15
(4) Нет, но могу сделать, но дело в том, что все равное ее не увидит.
9 Лефмихалыч
 
22.07.15
13:18
(0) вынести нужный код в экспортную процедуру общего модуля и вызывать из обоих мест эту новую общую процедуру
10 volkVVV
 
22.07.15
13:19
(5) такой вариант подходит, а как быть например с процедурой ПриЗаписи()?
11 volkVVV
 
22.07.15
13:20
(7) без разницы, главное вызвать процедуру.
12 palpetrovich
 
22.07.15
13:47
(11) прикольно, особенно если программно создаешь стотыщэлементов :)
13 volkVVV
 
22.07.15
13:49
(12) да не, в данном случае немного, поэтому прокатит
14 volkVVV
 
22.07.15
13:51
Пока Выборка.Следующий() Цикл        
        Спр = Выборка.Ссылка.ПолучитьОбъект();
        Если НЕ Спр.ЭтоГруппа Тогда
            Если Спр.БазоваяЕдиницаИзмерения.Наименование <> "" Тогда
                Если Спр.ВидНоменклатуры.Наименование <> "" Тогда
                    Форма = Выборка.Ссылка.ПолучитьФорму("ФормаЭлемента");
                    Форма.Открыть();
                    Форма.Записать();
                    Форма.Закрыть();
                КонецЕсли;
            КонецЕсли;
            
        КонецЕсли;
    КонецЦикла;
15 volkVVV
 
22.07.15
13:52
вот такой у мну цикл, не пойму, почему метод Форма.Записать() вызывает процедуру модуля объекта ПередЗаписью(), а не процедуру модуля формы ПередЗаписью(), мне нужна именно она
16 palpetrovich
 
22.07.15
13:58
(15) запусти отладчик из элемента номенклатуры ПередЗаписью() - глянь какая из них идет первой
17 mehfk
 
22.07.15
14:00
потому что еще есть записатьвформе()
18 volkVVV
 
22.07.15
14:02
(16) первая идет процедура модуля формы ПередЗаписью(), затем процедура модуля объекта и еще раз процедура модуля формы
19 volkVVV
 
22.07.15
14:06
(17) т.е. вызвать этот метод вместо Форма.Записать()?
20 volkVVV
 
22.07.15
14:12
(17) гуд, сработало. Спасибо вам добрые люди

Пока Выборка.Следующий() Цикл        
        Спр = Выборка.Ссылка.ПолучитьОбъект();
        Если НЕ Спр.ЭтоГруппа Тогда
            Если Спр.БазоваяЕдиницаИзмерения.Наименование <> "" Тогда
                Если Спр.ВидНоменклатуры.Наименование <> "" Тогда
                    Форма = Выборка.Ссылка.ПолучитьФорму("ФормаЭлемента");
                    ФормаН = Форма.ЭтаФорма;
                    ФормаН.Открыть();
                    ФормаН.ЗаписатьВФорме();
                    ФормаН.Закрыть();
                КонецЕсли;
            КонецЕсли;
            
        КонецЕсли;
    КонецЦикла;