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

УФ. Как обновить открытую форму документа после внешней обработки заполнения

УФ. Как обновить открытую форму документа после внешней обработки заполнения
Я
   LevelUP
 
16.09.21 - 12:05
Здравствуйте!
Пишу обработку заполнения документа. Вариант запуска "ОткрытьФорму" клиентский (надо взаимодействовать с пользователем). В коде обработки изменяю объект и записываю его. При закрытии обработки открытая форма документа без изменений. ОповеститьОбИзменении(ссылка); не помогло
Вопрос: можно автоматически обновить форму документа?
Было бы лучше вообще, конечно, не записывать объект, а изменения передать в открытую форму, а там пользователь уже, если захочет, запишет его. Но это, наверное, недостижимо в рамках внешних обработок заполнения.
   assasu
 
1 - 16.09.21 - 12:07
надо курить "КопироватьДанныеФормы"
   runoff_runoff
 
2 - 16.09.21 - 12:56
(0) достижимо в рамках обработок заполнения в расширении..
   runoff_runoff
 
3 - 16.09.21 - 12:57
(0) не верю.. если я пишу в обработке заполнения Объект.Контрагент = Вася.. то в исходной форме появляется Вася без всякого дополнительного обновления..
   DimaDmitriy
 
4 - 16.09.21 - 16:15
Передавай при открытии обработки форму документа, как владельца формы.
А в обработке на клиенте напиши:
ВладелецФормы.ОбновитьИнтерфейс();
   1Сергей
 
5 - 16.09.21 - 16:16
Что за конфа-то?
   LevelUP
 
6 - 16.09.21 - 18:54
(1) Можно примерчик в контексте темы?
   LevelUP
 
7 - 16.09.21 - 18:55
(2) Да, если бы делал расширением, то подобных вопросов бы не возникло. Но в данном случае, почему-то, решил пойти именно через механизм дополнительных обработок.
   LevelUP
 
8 - 16.09.21 - 18:57
(4) Там не передашь..
Сама конфа все передает, кроме ссылок ни о чем речи нет
Вот с сайта ИТС:
"для назначаемых отчетов и обработок – в форме обработки добавить параметр ОбъектыНазначения типа Произвольный. В этот параметр передается массив ссылок на объекты, для которых выполняется дополнительная обработка."
   LevelUP
 
9 - 16.09.21 - 18:59
(5) ЗУП КОРП 3
   LevelUP
 
10 - 16.09.21 - 19:02
Так-то можно извратиться через ПолучитьОкна() например, и вызвать у найденной формы ххх.Обновить()
Думал, может там как-то проще можно, через какие-нибудь оповещения (не силен в них).
   DimaDmitriy
 
11 - 16.09.21 - 19:59
(10) Как вариант, только через: ПолучитьФорму().
Да и не такой уж это большой изврат - пару строк кода)
   Гений 1С
 
12 - 16.09.21 - 20:28
(0) недостижимо, у меня была тема
   rozer76
 
13 - 16.09.21 - 21:49
В обработке оповещения 

управляемой формы
Расширение управляемой формы для справочника (Managed form extension for catalogs) - Прочитать (Read)
Синтаксис: Прочитать()
Описание: Обновляет объект управляемой формы.
Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент.
   LevelUP
 
14 - 17.09.21 - 09:35
(13) В этом случае все равно придется менять конфу или делать расширение.
   DimaDmitriy
 
15 - 17.09.21 - 09:37
Есть решение, но, к сожалению, только для записанного объекта.

Простое ПолучитьФорму() - как оказалось, всегда возвращает новую форму, а не уже открытую.

Для того, чтобы получить открытую форму придётся идти через ПолучитьОкна() и найти по заголовку нужный элемент.
ОткрытыеОкна = ПолучитьОкна();
Для каждого Окно из ОткрытыеОкна Цикл
   Если НЕ СтрНайти(Окно.Заголовок,НаименованиеДокумента) = 0 Тогда
      ФормаЭлемента = Элемент.Содержимое[0];
   КонецЕсли;
КонецЦикла;

В теории, можно отфильтровать по содержимому, найти там ссылку на документ.

А потом просто вызываем метод формы:

ФормаЭлемента.Прочитать();

Все это выполняется на клиенте.

Только что проверил в ERP-шке, из внешней обработки - всё робит.
   LevelUP
 
16 - 17.09.21 - 09:45
(15) Да-да.
Я в (10) писал про ПолучитьОкна(), тоже был опыт фильтрования форм по заголовкам и по идентификаторам.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.