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

1С:Предприятие :: 1С:Предприятие 8 общая

Изменение реквизита в теле обработчика ПодключитьОбработчикИзмененияДанных

Изменение реквизита в теле обработчика ПодключитьОбработчикИзмененияДанных
Я
   БМ21
 
02.04.18 - 22:35
1С:Предприятие 8.2 (8.2.19.130)
Запускается в режиме толстого клиента.

Есть внешняя обработка, в ней в событии главной формы "ПриОткрытии", подключаю обработчик события ПодключитьОбработчикИзмененияДанных на реквезит, к примеру реквзит1 вот так:
ЭтаФорма.ПодключитьОбработчикИзмененияДанных("реквезит1", "обработчик", Истина);

В теле процедуры обработчик необходимо изменить значение реквезита "реквезит2" , присваиваю ему значение но элемент управления формы связанный с реквезитом реквезит2 не обновляется на форме(элемент надпись), если же в процедуре обработчике события формы "ОбновлениеОтображения" написать строку реквезит2=реквезит2. То значение обновляется. Почему так происходит? И как правильно изменить реквезит? Если менять значение реквизита в обработчике события "ОбработкаОповещения" то тоже не изменяется элемент на форме связанный с реквезитом. Пробовал после изменения реквизита вызвать ЭтаФорма.Обновить();. НЕ помогло.
 
 
   Cyberhawk
 
1 - 02.04.18 - 22:52
Сколько платят за решение вопроса?
   БМ21
 
2 - 02.04.18 - 23:05
Cyberhawk, сколько я готов заплатить за решение этого вопроса? - Не сколько это же форум я думал тут на такие простые вопросы бесплатно отвечают.
Если я не правильно вас понял, и вопрос в том сколько мне платят за создание обработки этой? То ответ не сколько, помогаю человеку автоматизировать работу. Реализовал нужный функционал начал перепроверять и понял что в обстоятельствах что указаны в начале темы, значение в эл-те формы не обновляется. Можно сделать "огород": для всех реквизитов что обновляются в обработчике ПодключитьОбработчикИзмененияДанных скопировать их в обработчик ОбновлениеОтображения и заново там им присваивать значение но это будет не правильно, а хотелось бы сделать нормально..
   tesseract
 
3 - 02.04.18 - 23:24
(2) Это старый тролль.

Этот обработчик только на табличное поле реагирует, если у тебя "Реквизит1" там не находиться - то никакого сообщения ты не получишь. Используй обычную обработку "приИзменении" поля формы.
   БМ21
 
4 - 02.04.18 - 23:40
(2) , у меня реагирует обработчик на реквизит, обычный вне табличного поля, и в доках написано что должен реагировать.
Эта часть кода работает, то есть процедура-обработчик которая подкл. через ПодключитьОбработчикИзмененияДанных, выполняется но не обновляется вид элемента формы, текст надписи , при этом если на форму поместить кнопку и по клику на нее поменять таким же кодом значение реквезита то все отработает как надо.
   tesseract
 
5 - 02.04.18 - 23:47
(4) В каких доках ?  В офф документации - только на изменения в табличном поле -https://its.1c.ru/db/metod8dev#content:2836:hdoc

Чем тебя просто стандартные события не устраивают?
   БМ21
 
6 - 03.04.18 - 00:02
(5) , из синтаксис-помшника, "ПодключитьОбработчикИзмененияДанных(<ИмяДанных>, <ИмяПроцедуры>, <ОтслеживатьПодчиненныеДанные>)
Параметры:

<ИмяДанных> (обязательный)

Тип: Строка.
Имя данных (путь к данным), изменения которых необходимо отслеживать. Могут быть указаны данные, связанные с реквизитами формы, табличными частями, а также подчиненные данные - реквизиты этих объектов. Например, "Реквизит1.Наименование".
Параметр может содержать только один путь к данным, т.е. метод применяется для одного реквизита.". А на сайте как я понял конкретный пример для отслеживания изменения списка.
Вот у меня код:
Процедура КнопкаВыполнитьНажатие(Кнопка)
        Реквезит2 = "Значение установлено через кнопку";
КонецПроцедуры

Процедура ПриОткрытии()
    ЭтаФорма.ПодключитьОбработчикИзмененияДанных("Реквезит1", "ИзменитьЗеачениеРеквизита2");
    
КонецПроцедуры


Процедура ИзменитьЗеачениеРеквизита2(ПутьКДанным)
  Сообщить("Значение реквезита Реквезит1 изменилось");
  Реквезит2 = "Значение установлено через обработчик";
КонецПроцедуры



Реквезит2 - Реквезит формы типа строка,
Реквезит1 - Реквезит формы типа строка.

На форме кнопка, надпись, и поле ввода.
У поля ввода в свойстве данные стоит Реквезит1,
у надписи в поле данные стоит Реквезит2, при нажатии кнопки
надпись меняется на "Значение установлено через кнопку" при изменении текста в поле ввода, в сообщениях системных строка отображается "Значение реквезита Реквезит1 изменилось". Но надпись остается пустая.
   БМ21
 
7 - 03.04.18 - 00:04
(6), по стандартным событиям, т.к значения реквизитов меняются и программно и пользователем. А когда значение реквизита меняется программно события при изменении не выполняется. Поэтому таким методом.
   hhhh
 
8 - 03.04.18 - 06:39
(7) ну вставь строчку в процедуру ИзменитьЗеачениеРеквизита2
Надпись = ТомуТо;

чего-ты паришься. Перечитывать все надписи на форме каждую секунду - это идиотизм, согласись. Всё равно 1с-ники на это не пойдут.

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