Имя: Пароль:
1C
1С v8
Обновить форму Спраочинка номенкалатуры во внешней обработке УТ 11
0 breezee
 
02.03.15
10:50
Помогите, пожалуйста.
Имеется внешняя обработка по заполнению справочника номенклатура для УТ 11, пытаюсь обновить форму после записи не получается
Код:
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
    Для каждого Элемент из ОбъектыНазначенияМассив цикл
    ВыполнитьКомандуНаСервере(Элемент);
        КонецЦикла;
                
      КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(Элемент)
        ЭлементОбъект=Элемент.получитьОбъект();
        
        ЗаполнитьНаименованиеПоШаблонуКлиент("Оба", Истина,ЭлементОбъект);
             ЭлементОбъект.Записать();                
    ЭлементОбъект.Прочитать();
    ЭлементОбъект.ПолучитьФорму("ФормаЭлемента").Обновить();
       //форма1=ЭлементОбъект.ПолучитьФорму("ФормаЭлемента") ;
       ////форма1.обновитьОтображениеДанных();                                                    
    КонецПроцедуры
1 butterbean
 
02.03.15
10:56
какую форму ты собираешься обновлять?? неоткрытую форму элемента справочника??
2 breezee
 
02.03.15
10:58
(1) Она неоткрытая если я выполняю заполнение из формы списка(тогда все нормально), если я из самого элемента заполняю-то обновляется только после "Перечитать данные"
3 breezee
 
02.03.15
11:09
Для документов был метод Оповестить(ОбновитьДокументИбПриЗаписи), в модулях номенклатуры посмотрел и ничего подобного не увидел, может я не там смотрю?
4 breezee
 
02.03.15
11:21
Попытался возвращать форму на киенте для каждого элемента и обновлять её на клиенте. Ничего не вышло.
5 breezee
 
02.03.15
11:25
Разве ни кто не делал внешнюю обработку для заполнения справочников? Хэлп ми плиз!
6 breezee
 
02.03.15
11:37
Еще АП!
7 breezee
 
02.03.15
12:00
В модуле формы после записи было
Оповестить("Запись_Номенклатура", ПараметрыЗаписи, Объект.Ссылка);
Вставил в обработку-не работает. где посмотреть Обработчик оповещений?
8 breezee
 
02.03.15
12:09
Может я совсем идиот и делаю все неправильно? Может у кого есть пример или хоть какие-нибудь соображения, а то за всю тему только 1 человек отписался, неужели ни у кого вообще нет идей?
9 hhhh
 
02.03.15
12:20
(7) ну в той форме должно сработать событие ОбработкаОповещения. Оно есть там?
10 breezee
 
02.03.15
12:29
(9) Я вставил после заполнения, но не сработало. Так же пробовал открывать и закрывать форму программно, но тоже изменений не видно. Вот последние изменения
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
    Для каждого Элемент из ОбъектыНазначенияМассив цикл
        ПараметрыЗаписи=новый Структура;
    ВыполнитьКомандуНаСервере(Элемент);
        Форма1=Элемент.ПолучитьФорму("ФормаЭлемента");
        Если форма1.открыта()Тогда
        форма1.закрыть();
        форма1.обновитьотображениеданных();
        форма1.открыть();
        КонецЕсли;
    КонецЦикла;
            ОбновитьОтображениеДанных();
        
      КонецПроцедуры
11 breezee
 
02.03.15
12:38
Все, разобрался. Если у кого-нибудь будет похожее задание:
1)Нужно получить форму элемента
2)Проверить открыта ли форма(если обработка запущена в форме списка то смысла перечитывать её нет)
3)Перечитать форму
Вот так это выглядит:
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
    Для каждого Элемент из ОбъектыНазначенияМассив цикл
        ВыполнитьКомандуНаСервере(Элемент);
        ФормаТекущегоЭлемента=Элемент.ПолучитьФорму("ФормаЭлемента");
        Если ФормаТекущегоЭлемента.открыта()Тогда
        ФормаТекущегоЭлемента.Прочитать();
        КонецЕсли;
    КонецЦикла;        
      КонецПроцедуры
Всем спасибо, тема закрыта.
2 + 2 = 3.9999999999999999999999999999999...