Вход | Регистрация

1С:Предприятие ::

Метки: 

Как обновить значения элементов обычной формы по объекту, измененному программно?

Я
   simol
 
11.10.17 - 15:44
1) Есть обработка с обычной формой
2) У формы обработки есть реквизит "ДокОбъект" типа ДокументОбъект.хххх. Реквизиты документа выведены на форму.
3) Навешен обработчик ПодключитьОбработчикИзмененияДанных("ДокОбъект", "ДокументИзменен", Истина);
4) В Процедура ДокументИзменен() у ДокОбъект программно могут быть изменены реквизиты, выведенные на форму.

Вопросы
1) почему-то автоматически измененные реквизиты в п.4 на форме не меняюся. Если смотреть отладчиком, то у элемента формы в свойстве Значение старое значение реквизита, хотя в объекте новое. Свойстов элемента формы "Данные" заполнен корректно.
2) как одним движением обновить значения элементов формы привязанных к ДокОбъект, чтобы у них было тоже, что и в объекте? ЭтаФорма.Обновить() не помогает. Программно перебрать все элементы и самому установить значение - крайний вариант.
 
  Рекламное место пустует
   asady
 
1 - 11.10.17 - 15:46
(0) делай изменения в модуле объекта
   xXeNoNx
 
2 - 11.10.17 - 15:58
ЗначениеФормыВОбъект и наоборот..., не?
   simol
 
3 - 11.10.17 - 16:03
(1,2) Обычная форма
(1)Что в обработке ДокОбъект.Реквизит1 = Истина, что ДокОбъект.УстановитьРеквизит1() не решает проблему.
   xXeNoNx
 
4 - 11.10.17 - 16:05
(3) Тут 2 варианта:
1. Запустил обработку поменял реквизиты, записал, при след. открытии реквизиты изменились?
2. Изменять именно реквизиты формы
   simol
 
5 - 11.10.17 - 16:29
1. Мне надо в обработке продолжить работу с не записанным документом. Но, например, изменили контрагента - я программно изменил договор. В объекте он поменян ,а на форме показывается старых. После каждого изменения записывать документ костыльно
2. У меня функция изменения реквизитов в модуле документа. Там все равно показывается документ в обработке или в форме документа. Я там не знаю о существовании элементов формы.
   simol
 
6 - 11.10.17 - 16:39
Сделал костыль
роцедура ОбновитьЗначенияЭлементоыФормыПоОбъекту(ЭлементыФормы, ИмяОбъекта, ЗначениеОбъекта, ПропускатьТабличныеЧасти = Истина) 
    //Есть ситуации, когда программное измененеие реквизитов объекта не меняет то, что видно на форме. Тапример измененеие в программной подкиске ПодключитьОбработчикОжидания

    //Табличнфые части оно обновляет вроде как

    
    Для каждого ЭлементФормы Из ЭлементыФормы Цикл
        Если ПустаяСтрока(ЭлементФормы.Данные) Тогда
            Продолжить;
        КонецЕсли;    
        МассивПути = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(ЭлементФормы.Данные, ".", Истина);
        Если МассивПути.Количество() < 2 Тогда
            Продолжить;
        КонецЕсли;    
        Если МассивПути[0] <> ИмяОбъекта Тогда
            Продолжить;
        КонецЕсли;    
        
        Если ТипЗнч(ЭлементФормы) = Тип("ТабличноеПоле") Тогда
            Если Не ПропускатьТабличныеЧасти Тогда
                ЭлементФормы.ОбновитьСтроки();
            КонецЕсли;    
        Иначе
            Если МассивПути.Количество() = 2 Тогда
                ЭлементФормы.Значение = ЗначениеОбъекта[МассивПути[1]];
            Иначе
                Путь = "";
                Для ИндексМассива = 2 По МассивПути.ВГраница() Цикл
                    Путь = Путь + "." + МассивПути[ИндексМассива];
                КонецЦикла;    
                Путь = Сред(Путь, 2);
                ЭлементФормы.Значение = ОМ.ПолучитьЗначениеРеквизита(ЗначениеОбъекта[МассивПути[1]], Путь);
            КонецЕсли;
        КонецЕсли;    
    КонецЦикла; 
    
КонецПроцедуры

   asady
 
7 - 11.10.17 - 17:24
(6) тебе же в (1) я написал - зачем всё это?

вызывай в модуле формы процедуру модуля объекта и в ней меняй реквизиты объекта - элементы формы обновятся автоматически.
   simol
 
8 - 12.10.17 - 15:42
(7)В указанной в (1) комбинации не меняет автоматом, в этом и проблема
Есть какой-то глюк видать, если изменять в процедуре подключенной по ПодключитьОбработчикИзмененияДанных
   h-sp
 
9 - 12.10.17 - 15:50
(8) наверно процедура процедуре подключенная по ПодключитьОбработчикИзмененияДанных какая-то левая


Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует