Передача данных между формами

Новая тема
Показывать по 10 20 40 сообщений
"Здравствуйте, все!
Задача такая:
1. внешняя обработка имеет несколько форм.
2. при выборе строки табличного поля 1ой формы, открывается 2ая форма. Необходимо заполнить элементы 2ой формы данными из этой строки. Я делаю так:
  Форма2 = ВнешниеОбработки.ПолучитьФорму("C:\Рабочая\ComCenter\ComCenter.epf", "ФормаРедакторПлатежа");
  Форма2.ИНН = "Hello world!";
  Форма2.ОткрытьМодально();

... и т.д.
3. после редактирования данных в форме "ФормаРедакторПлатежа", по нажатию кнопки ОК, требуется заполнить данную строку новыми данными.

Как мне передать данные в 1ую форму? М.б. использовать переменные типа Экспорт? Надо запускать метод Обновить()?

Спасибо за помощь. "
"> 2. при выборе строки табличного поля 1ой формы, открывается 2ая форма. Необходимо заполнить элементы 2ой формы данными из этой строки. Я делаю так:
>    Форма2 = ВнешниеОбработки.ПолучитьФорму("C:\Рабочая\ComCenter\ComCenter.epf", "ФормаРедакторПлатежа");
>    Форма2.ИНН = "Hello world!";
>    Форма2.ОткрытьМодально();
>
> ... и т.д.
Вы уже в обработке. Так что можно написать проще (и правильнее)
Форма2 = ЭтотОбъект.ПолучитьФорму("ФормаРедакторПлатежа");
> 3. после редактирования данных в форме "ФормаРедакторПлатежа", по нажатию кнопки ОК, требуется заполнить данную строку новыми данными.
>  
> Как мне передать данные в 1ую форму? М.б. использовать переменные типа Экспорт? Надо запускать метод Обновить()?
Можно использовать либо использовать Экспортные переменные в  модуле объекта, либо реквизиты.
Можно еще передать в открываемую форму объект Форма (Форма2.ФормаВладелец = ЭтаФорма;) и тогда из Формы2 можно получить прямой доступ к элементам Формы1.
Еще вариант - подключить обработчик подбора и открывать форму в режиме подбора (Форма2 = ЭтотОбъект.ПолучитьФорму("ФормаРедакторПлатежа", ЭтаФорма);)
Выбирайте, что вам больше по душе :)
"
Огромное спасибо за столь подробное и понятное объяснение (жаль что не предусмотрена возможность повысить репутацию), реализовал через ВладелецФормы. :)))

Решил для самообразования попробовать достучаться до реквизитов обработки, но ничего не вышло и с "ЭтотОбъект" проблема. Как код должен выглядеть?
"ЭтотОбъект - это ключевое слово (свойство). Внутри самого объекта можно не писать (я просто для конкретного указания пишу, когда могут возникнут сомнения)
Иначе говоря, все что написано ниже - одно и тоже, но по-разному:
Форма2 = ВнешниеОбработки.ПолучитьФорму("C:\Рабочая\ComCenter\ComCenter.epf", "ФормаРедакторПлатежа");
Форма2 = ЭтотОбъект.ПолучитьФорму("ФормаРедакторПлатежа");
Форма2 = ПолучитьФорму("ФормаРедакторПлатежа");

> достучаться до реквизитов обработки, но ничего не вышло
Реквизиты обработки всегда доступны (если то именно реквизиты обработки, а не формы) для всех форм этой обработки. (надеюсь вы добавляли реквизит там же где добавляете формы)"
"Реквизиты добавляю в том же окне, где и формы. Т.е. добавляю реквизиты обработки. Разве есть возможность создать реквизиты формы?

На счет
Форма2 = ЭтотОбъект.ПолучитьФорму("ФормаРедакторПлатежа");
Форма2 = ПолучитьФорму("ФормаРедакторПлатежа");

Генерится ошибка: Процедура или функция с указанным именем не определена (ПолучитьФорму), также и с ЭтотОбъект.

П.С. прошу прощения, если туплю"
"Согласно задаче:
> 1. внешняя обработка имеет несколько форм.
> 2. при выборе строки табличного поля 1ой формы, открывается 2ая форма
Этот код
> Форма2 = ЭтотОбъект.ПолучитьФорму("ФормаРедакторПлатежа");
Должен писаться в модуле 1-ой формы. А где его пишите вы?

http://s55.radikal.ru/i149/1005/01/efe77401b219.jpg"
Значит, я пытался обратиться к реквизитам обработки.

ЭтотОбъект я и писал в 1ой форме, но почему-то он не понимает, что это ключевое слово и не предлагает список методов.
Вы при добавлении формы что указали:
"Форма обработки"
"Произвольная форма"
Если последнее - то поэтому и не работает. На закладке реквизиты формы есть (бывает) реквизит, выделенный жирным - основной реквизит формы. К нему имеется полный доступ. Так вот у вас должен быть такой реквизит со ссылкой на вашу обработку (создайте форму типа "Форма обработки") и скопируйте оттуда реквизит в ваши формы - и будет счастье.
Действительно, я создавал произвольные формы. Но чем они отличаются и когда какую лучше использовать? Могу ли я посреди работы изменить тип формы на форму обработки?
Произвольная практически никогда не используется (кроме общих форм)
Если посмотрите любую форму конфигурации у них всегда есть основной реквизит.
Так что по-умолчанию лучше создавать "Форму обработки" - доступен общий модуль и реквизиты обработки.
У меня исключений небыло, т.е. я не менял основной реквизит, но о нем помню. Теоретически можно написать обработку по редактированию документа и присвоить её тип ДокументОбъект и наслаждаться всеми прелестями "формы документа".
Читают тему
(гостей: 1)

Быстрый переход