Как открыть свою, произвольную форму из документа и при закрытии этой формы передать какое-то значение?

1. Nastya_R 12.09.19 10:48 Сейчас в теме
Добрый день! Подскажите, пожалуйста, из документа открываю свою произвольную форму, там ввожу какие-то данные и как их передать обратно на форму документа, чтоб заполнить табличную часть. Заранее спасибо!
По теме из базы знаний
Найденные решения
3. YannikAlx 43 12.09.19 11:02 Сейчас в теме
Если Управляемые формы то данные хранить лучше в реквизитах объекта, тогда не придется таскать их отдельным кодом с клиента на сервер и обратно...
Они будут в таком варианте автоматически меняться, когда это необходимо...
Вот и меняйте такие данные в своей форме при условии что дополнительная форма принадлежит тому же документу, а основная форма также будет видеть прекрасно все изменения реквизитов объекта.
Если форма из внешней обработки, то при закрытии надо записать данные во временное хранилище и создать оповещение о закрытии этой формы.
А основная форма должна ловить это оповещение...
И при получении считывать данные из временного хранилища с дальнейшими действиями над полученными данными...
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. rusdenol 12.09.19 11:29 Сейчас в теме
(1)
1. Когда открываете форму, обязательно указываете в качестве владельца ту форму, из которой открывается Ваша форма.
2. На своей форме при нажатии на вашу кнопку (по которой должно передаваться значение) пишете код Закрыть(ДанныеКоторыеНужноПередать);
3. На форме документа находите процедуру "ОбработкаОповещения" и там по аналогии с написанным там кодом добавляете свой код
7. Nastya_R 12.09.19 11:38 Сейчас в теме
(6) Первые два пункта у меня уже реализованы. Не могли бы вы поподробнее третий пункт описать?
8. rusdenol 12.09.19 11:48 Сейчас в теме
(7) При методе Закрыть(), вызывается процедура "ОбработкаОповещения" (можно почитать в синтаксис помощнике о ней), в ней есть 3 стандартных параметра, ИмяСобытия, Параметр, Источник. Нас интересуют Параметр - это то, что Вы передали при закрытии и Источник - это Ваша форма, откуда был передан параметр. Делаете проверку
Если Источник = [ВашаФорма] Тогда
...тут ваш код или лучше вызов отдельной процедуры с вашим кодом
КонецЕсли
9. Nastya_R 12.09.19 11:54 Сейчас в теме
(8) Спасибо! А не могли бы вы ещё подсказать как открыть форму не на весь экран а всего лишь небольшое окошко?
11. rusdenol 12.09.19 11:58 Сейчас в теме
(9) У метода ОткрытьФорму есть параметр РежимОткрытияОкна - его нужно указать. В синтакс-помощнике это есть
2. YannikAlx 43 12.09.19 10:59 Сейчас в теме
Не ясно вы свою форму открываете при уже открытой основной форме документа?
4. Nastya_R 12.09.19 11:13 Сейчас в теме
3. YannikAlx 43 12.09.19 11:02 Сейчас в теме
Если Управляемые формы то данные хранить лучше в реквизитах объекта, тогда не придется таскать их отдельным кодом с клиента на сервер и обратно...
Они будут в таком варианте автоматически меняться, когда это необходимо...
Вот и меняйте такие данные в своей форме при условии что дополнительная форма принадлежит тому же документу, а основная форма также будет видеть прекрасно все изменения реквизитов объекта.
Если форма из внешней обработки, то при закрытии надо записать данные во временное хранилище и создать оповещение о закрытии этой формы.
А основная форма должна ловить это оповещение...
И при получении считывать данные из временного хранилища с дальнейшими действиями над полученными данными...
12. rusdenol 12.09.19 12:04 Сейчас в теме
(3) "а основная форма также будет видеть прекрасно все изменения реквизитов объекта"
Боюсь, что основная форма не будет видеть эти изменения, т.к. УФ работает не напрямую с объектом, а с его имитацией, и чтобы загрузить изменения сделанные в другой форме, да ещё не получить при этом конфликт блокировок нужно изрядно попотеть
13. YannikAlx 43 12.09.19 12:07 Сейчас в теме
(12)
Сошласен...
Но в текущем диалоге , эта тема уже все равно не актуальна - формы принадлежат различным объектам, и потому по любому через оповещение и временное хранилище....
14. SlavaKron 12.09.19 12:14 Сейчас в теме
(3)
надо записать данные во временное хранилище

Необязательно. Достаточно передать саму открываемую форму в качестве дополнительного параметра в описание оповещения о закрытии. Тогда, после закрытия в процедуре, указанной для оповещения о закрытии, будет доступна закрываемая форма со всеми проделанными изменениями.
15. YannikAlx 43 12.09.19 12:21 Сейчас в теме
(14) Ну мы же не знаем , а что там эта форма будет менять? может таблицу значений в пару гигов....
Временное хранилище - универсальный вариант...
А для поменять 1 букву конечно есть частные случаи...
Но автор не удосужилась описать чего она там менять намерена...
5. Nastya_R 12.09.19 11:14 Сейчас в теме
Не совсем поняла как это реализовать. Можно поподробнее или на примере)
10. YannikAlx 43 12.09.19 11:56 Сейчас в теме
Вы не описали подробно вашу ситуацию....

Что конкретно неясно в моем предложении?
Я давал самые общие принципы, не зная ваших нужд... и я их по-прежнему не знаю...
16. independ 1520 12.09.19 13:06 Сейчас в теме
Достаточно в дочерней форме через ВладелецФормы.Объект.ИмяРеквизита=, при условии, что дочерняя форма открыта с указанием владельцаформы
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот