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

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

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

Для того, чтобы получить открытую форму придётся идти через ПолучитьОкна() и найти по заголовку нужный элемент.

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

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

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

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

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

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