1. Nastya_R 12.09.19 10:48 Сейчас в теме

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

Добрый день! Подскажите, пожалуйста, из документа открываю свою произвольную форму, там ввожу какие-то данные и как их передать обратно на форму документа, чтоб заполнить табличную часть. Заранее спасибо!
Найденные решения
3. user614822 29 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. user614822 29 12.09.19 10:59 Сейчас в теме
Не ясно вы свою форму открываете при уже открытой основной форме документа?
4. Nastya_R 12.09.19 11:13 Сейчас в теме
3. user614822 29 12.09.19 11:02 Сейчас в теме
Если Управляемые формы то данные хранить лучше в реквизитах объекта, тогда не придется таскать их отдельным кодом с клиента на сервер и обратно...
Они будут в таком варианте автоматически меняться, когда это необходимо...
Вот и меняйте такие данные в своей форме при условии что дополнительная форма принадлежит тому же документу, а основная форма также будет видеть прекрасно все изменения реквизитов объекта.
Если форма из внешней обработки, то при закрытии надо записать данные во временное хранилище и создать оповещение о закрытии этой формы.
А основная форма должна ловить это оповещение...
И при получении считывать данные из временного хранилища с дальнейшими действиями над полученными данными...
12. rusdenol 12.09.19 12:04 Сейчас в теме
(3) "а основная форма также будет видеть прекрасно все изменения реквизитов объекта"
Боюсь, что основная форма не будет видеть эти изменения, т.к. УФ работает не напрямую с объектом, а с его имитацией, и чтобы загрузить изменения сделанные в другой форме, да ещё не получить при этом конфликт блокировок нужно изрядно попотеть
13. user614822 29 12.09.19 12:07 Сейчас в теме
(12)
Сошласен...
Но в текущем диалоге , эта тема уже все равно не актуальна - формы принадлежат различным объектам, и потому по любому через оповещение и временное хранилище....
14. SlavaKron 12.09.19 12:14 Сейчас в теме
(3)
надо записать данные во временное хранилище

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

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

Вакансии

Программист 1С
Екатеринбург
зарплата от 120 000 руб. до 120 000 руб.
Полный день

Бизнес-аналитик 1С
Москва
зарплата от 140 000 руб. до 200 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 130 000 руб.
Полный день


Программисты 1С УТ / БУЗ/ЗУП / БИТ ФИНАНС
Москва
зарплата от 100 000 руб. до 180 000 руб.
Полный день