![]() |
![]() |
![]() |
|
Обновление формы документа после программного изменения реквизита на ней | ☑ | ||
---|---|---|---|---|
0
mixperez
25.07.16
✎
13:33
|
Приветствую, есть документ реализации, на нем есть реквизит. Данный реквизит программно изменяется при проведении другого документа. Форма документа реализации при этом остается открытой. Как без закрытия и открытия формы документа реализации увидеть изменения данного реквизита. Т.е. необходимо программно обновить форму, чтобы увидеть новые данные, которые были изменены.
Пробовал подписываться на событие формы документа Реализации РеквизитПриИзменениии, т.е. &НаКлиенте Процедура Реквизит(Элемент) ЭтаФорма.Прочитать(); КонецПроцедуры Не срабатывает. |
|||
1
Fish
гуру
25.07.16
✎
13:42
|
Оповестить и ОбработкаОповещения?
|
|||
2
mixperez
25.07.16
✎
13:45
|
Пытался, только процедура по программному изменению реквизита из другого документа выполняется в модуле менеджера другого документа и там ошибка:
{Документ.СчетФактураВыданный.МодульМенеджера(729,2)}: Процедура или функция с указанным именем не определена (Оповестить) <<?>>Оповестить("РеквизитИзменен"); (Проверка: Сервер) |
|||
3
Fish
гуру
25.07.16
✎
13:59
|
(2) Правильно. Потому что у Оповестить:
Доступность: Тонкий клиент, веб-клиент, толстый клиент. |
|||
4
mixperez
25.07.16
✎
14:23
|
Отлично, а какое нибудь событие на форме, на которой изменяется программно реквизит можно отловить, после того как реквизит изменен?
РеквизитПриИзменении - не отрабатывает |
|||
5
mixperez
25.07.16
✎
14:49
|
Up
|
|||
6
aleks_default
25.07.16
✎
15:18
|
<<Данный реквизит программно изменяется при проведении другого документа>>.
А сообщения об изменении объекта другим пользователем не возникает? Хотя, при программном изменении по-моему нет Короче, овнокод детектед. |
|||
7
mixperez
25.07.16
✎
15:45
|
А сообщения об изменении объекта другим пользователем не возникает? - Нет не возникает.
Реквизит данной формы документа программно изменяется при проведении другого документа. Процедура описана в модуле менеджера другого документа и вызвана в обработке проведения в модуле объекта этого документа. Все события выполняются на сервере, поэтому и не могу использовать оповестить. Если в целом - Из документа реализации мы регистрируем счет фактуру, проводим ее и после проведения изменяется реквизит в форме документа реализации. |
|||
8
aleks_default
25.07.16
✎
15:50
|
Если в целом - Из документа реализации мы регистрируем счет фактуру, проводим ее и после проведения изменяется реквизит в форме документа реализации.
Ну так это нужно делать в контексте Документа реализации а не из проведения счет-фактуры. Т. е. з документа реализации в транзакции вызываешь проведение СФ(хотя это тоже не кошерно), если проводится - меняешь здесь же реквизит, нет - нет. |
|||
9
mixperez
25.07.16
✎
15:58
|
Т. е. из документа реализации в транзакции вызываешь проведение СФ(хотя это тоже не кошерно), если проводится - меняешь здесь же реквизит, нет - нет.
А зачем программно вызывать проведение СФ, если смысл в том, что пользователь сам должен переходить на форму документа СФ по гиперссылке и вводить все необходимые данные на ней, и на основании даты проведения - меняется один из реквизитов документа реализации, он меняется на значение даты проведения счет фактуры |
|||
10
mixperez
25.07.16
✎
16:00
|
Сам реквизит принимает нужное значение, алгоритм отрабатывает как надо. Вот только форму документа реализации как обновить(она остается открытой), чтобы пользователь смог увидеть изменения на ней сразу, а не только закрыв и открыв ее заново.
|
|||
11
aleks_default
25.07.16
✎
16:00
|
(9)Я откуда знаю зачем. Это у тебя так в (0) написано.
|
|||
12
aleks_default
25.07.16
✎
16:08
|
В любом случае при проведении одного документа менять реквизиты другого нельзя.
Можно отображать в форме одного документа реквизит от другого - для этого есть метод ОповеститьОбИзменении |
|||
13
hhhh
25.07.16
✎
16:24
|
(9) ну в процедуру обработки этой гиперссылки и встаьте. Типа Объект.Реквизит = ТекущаяДата();
|
|||
14
mixperez
25.07.16
✎
16:33
|
(13) Оно там и вставлялось. Реквизит менялся - все было ok.
|
|||
15
mixperez
25.07.16
✎
16:38
|
Проблема решена, всем спасибо за участие. В обработке проведения мне эта процедура самому не нравилась. Учел все.
Перенес исполнение процедуры в обработку ПослеЗаписи в модуле формы СФ, который выполняется на клиенте, после использовал оповестить и в модуле формы ДокументаРеализации в ОбработкеОповещения проверяю это событие и ЭтаФорма.Прочитать() - отрабатывает! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |