Имя: Пароль:
1C
 
программно открыть форму
0 Prog_man
 
08.06.24
09:41
Добрый день
вроде простой вопрос, но затупил
нужно программно открыть форму, поменять значение и при закрытии оповестить основную форму.

делаю так
ПараметрыФормы = Новый Структура("Ключ", Объект.Ссылка);  
ОткрытьФорму("Документ.ПеремещениеТоваров.Форма.ФормаДокументаКомментарий", ПараметрыФормы, ЭтотОбъект);
1 Prog_man
 
08.06.24
08:58
&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
    Оповестить("ИзмененКомментарий");
КонецПроцедуры
2 Prog_man
 
08.06.24
08:58
в отладчике в обработку оповещения не попадает, подскажите как поправить код?
3 rphosts
 
08.06.24
09:39
в процедуру где открываешь форму дабавь в вызов ОткрытьФорму "Новый Оповещение(....), ну и процедуру соответствующую разумеется
4 Prog_man
 
08.06.24
09:39
(3) процедура типовая,
5 Prog_man
 
08.06.24
09:39
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)  
    
    //Вставка
    Если ИмяСобытия = "ИзмененКомментарий" Тогда    
        
          
        
    КонецЕсли;
    //КонецВставки

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

    // Подсистема "ОбменСКонтрагентами".
    ПараметрыОповещения = ОбменСКонтрагентамиКлиент.ПараметрыОповещенияЭДО_ФормаДокумента();
    ПараметрыОповещения.Форма = ЭтотОбъект;
    ПараметрыОповещения.ДокументСсылка = Объект.Ссылка;
    ПараметрыОповещения.КонтроллерСостояниеЭДО = Элементы.СостояниеЭДО;
    ПараметрыОповещения.ГруппаСостояниеЭДО = Элементы.ГруппаСостояниеЭДО;
    
    ОбменСКонтрагентамиКлиент.ОбработкаОповещения_ФормаДокумента(ИмяСобытия, Параметр, Источник, ПараметрыОповещения);
    // Конец подсистема "ОбменСКонтрагентами".
    
    СобытияФормИСКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник, Неопределено);

КонецПроцедуры
6 Prog_man
 
08.06.24
09:42
и для списка документов, при закрытии документа, этот код работает

//Вставка
    Если ИмяСобытия = "ИзмененКомментарий" Тогда    
  Элементы.Список.Обновить();
    КонецЕсли;
    //КонецВставки
7 Prog_man
 
08.06.24
10:45
вот так получилось

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

&НаКлиенте
Процедура мОбновитьФорму(Результат, ДополнительныеПараметры)  Экспорт
    ЭтаФорма.Прочитать();
КонецПроцедуры
8 Chameleon1980
 
09.06.24
17:16
(7) так в (3) еще сказали - читайте внимательней.
и откройте для себя рефакторинг в конфигураторе, который сделает все за вас, в данном случае.