Передача данных между формами
Показывать по
10
20
40
сообщений
- 1
- 2
07.05.2010
12:27
#1
"Здравствуйте, все!
Задача такая:
1. внешняя обработка имеет несколько форм.
2. при выборе строки табличного поля 1ой формы, открывается 2ая форма. Необходимо заполнить элементы 2ой формы данными из этой строки. Я делаю так:
Форма2 = ВнешниеОбработки.ПолучитьФорму("C:\Рабочая\ComCenter\ComCenter.epf", "ФормаРедакторПлатежа");
Форма2.ИНН = "Hello world!";
Форма2.ОткрытьМодально();
... и т.д.
3. после редактирования данных в форме "ФормаРедакторПлатежа", по нажатию кнопки ОК, требуется заполнить данную строку новыми данными.
Как мне передать данные в 1ую форму? М.б. использовать переменные типа Экспорт? Надо запускать метод Обновить()?
Спасибо за помощь. "
Задача такая:
1. внешняя обработка имеет несколько форм.
2. при выборе строки табличного поля 1ой формы, открывается 2ая форма. Необходимо заполнить элементы 2ой формы данными из этой строки. Я делаю так:
Форма2 = ВнешниеОбработки.ПолучитьФорму("C:\Рабочая\ComCenter\ComCenter.epf", "ФормаРедакторПлатежа");
Форма2.ИНН = "Hello world!";
Форма2.ОткрытьМодально();
... и т.д.
3. после редактирования данных в форме "ФормаРедакторПлатежа", по нажатию кнопки ОК, требуется заполнить данную строку новыми данными.
Как мне передать данные в 1ую форму? М.б. использовать переменные типа Экспорт? Надо запускать метод Обновить()?
Спасибо за помощь. "
07.05.2010
13:14
#2
"> 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.ИНН = "Hello world!";
> Форма2.ОткрытьМодально();
>
> ... и т.д.
Вы уже в обработке. Так что можно написать проще (и правильнее)
Форма2 = ЭтотОбъект.ПолучитьФорму("ФормаРедакторПлатежа");
> 3. после редактирования данных в форме "ФормаРедакторПлатежа", по нажатию кнопки ОК, требуется заполнить данную строку новыми данными.
>
> Как мне передать данные в 1ую форму? М.б. использовать переменные типа Экспорт? Надо запускать метод Обновить()?
Можно использовать либо использовать Экспортные переменные в модуле объекта, либо реквизиты.
Можно еще передать в открываемую форму объект Форма (Форма2.ФормаВладелец = ЭтаФорма;) и тогда из Формы2 можно получить прямой доступ к элементам Формы1.
Еще вариант - подключить обработчик подбора и открывать форму в режиме подбора (Форма2 = ЭтотОбъект.ПолучитьФорму("ФормаРедакторПлатежа", ЭтаФорма);)
Выбирайте, что вам больше по душе
"
07.05.2010
14:07
#3
Огромное спасибо за столь подробное и понятное объяснение (жаль что не предусмотрена возможность повысить репутацию), реализовал через ВладелецФормы.
))
Решил для самообразования попробовать достучаться до реквизитов обработки, но ничего не вышло и с "ЭтотОбъект" проблема. Как код должен выглядеть?
Решил для самообразования попробовать достучаться до реквизитов обработки, но ничего не вышло и с "ЭтотОбъект" проблема. Как код должен выглядеть?
07.05.2010
14:29
#4
"ЭтотОбъект - это ключевое слово (свойство). Внутри самого объекта можно не писать (я просто для конкретного указания пишу, когда могут возникнут сомнения)
Иначе говоря, все что написано ниже - одно и тоже, но по-разному:
Форма2 = ВнешниеОбработки.ПолучитьФорму("C:\Рабочая\ComCenter\ComCenter.epf", "ФормаРедакторПлатежа");
Форма2 = ЭтотОбъект.ПолучитьФорму("ФормаРедакторПлатежа");
Форма2 = ПолучитьФорму("ФормаРедакторПлатежа");
> достучаться до реквизитов обработки, но ничего не вышло
Реквизиты обработки всегда доступны (если то именно реквизиты обработки, а не формы) для всех форм этой обработки. (надеюсь вы добавляли реквизит там же где добавляете формы)"
Иначе говоря, все что написано ниже - одно и тоже, но по-разному:
Форма2 = ВнешниеОбработки.ПолучитьФорму("C:\Рабочая\ComCenter\ComCenter.epf", "ФормаРедакторПлатежа");
Форма2 = ЭтотОбъект.ПолучитьФорму("ФормаРедакторПлатежа");
Форма2 = ПолучитьФорму("ФормаРедакторПлатежа");
> достучаться до реквизитов обработки, но ничего не вышло
Реквизиты обработки всегда доступны (если то именно реквизиты обработки, а не формы) для всех форм этой обработки. (надеюсь вы добавляли реквизит там же где добавляете формы)"
07.05.2010
14:39
#5
"Реквизиты добавляю в том же окне, где и формы. Т.е. добавляю реквизиты обработки. Разве есть возможность создать реквизиты формы?
На счет
Форма2 = ЭтотОбъект.ПолучитьФорму("ФормаРедакторПлатежа");
Форма2 = ПолучитьФорму("ФормаРедакторПлатежа");
Генерится ошибка: Процедура или функция с указанным именем не определена (ПолучитьФорму), также и с ЭтотОбъект.
П.С. прошу прощения, если туплю"
На счет
Форма2 = ЭтотОбъект.ПолучитьФорму("ФормаРедакторПлатежа");
Форма2 = ПолучитьФорму("ФормаРедакторПлатежа");
Генерится ошибка: Процедура или функция с указанным именем не определена (ПолучитьФорму), также и с ЭтотОбъект.
П.С. прошу прощения, если туплю"
07.05.2010
15:05
#6
"Согласно задаче:
> 1. внешняя обработка имеет несколько форм.
> 2. при выборе строки табличного поля 1ой формы, открывается 2ая форма
Этот код
> Форма2 = ЭтотОбъект.ПолучитьФорму("ФормаРедакторПлатежа");
Должен писаться в модуле 1-ой формы. А где его пишите вы?
"
> 1. внешняя обработка имеет несколько форм.
> 2. при выборе строки табличного поля 1ой формы, открывается 2ая форма
Этот код
> Форма2 = ЭтотОбъект.ПолучитьФорму("ФормаРедакторПлатежа");
Должен писаться в модуле 1-ой формы. А где его пишите вы?
"
07.05.2010
15:16
#7
Значит, я пытался обратиться к реквизитам обработки.
ЭтотОбъект я и писал в 1ой форме, но почему-то он не понимает, что это ключевое слово и не предлагает список методов.
ЭтотОбъект я и писал в 1ой форме, но почему-то он не понимает, что это ключевое слово и не предлагает список методов.
07.05.2010
15:43
#8
Вы при добавлении формы что указали:
"Форма обработки"
"Произвольная форма"
Если последнее - то поэтому и не работает. На закладке реквизиты формы есть (бывает) реквизит, выделенный жирным - основной реквизит формы. К нему имеется полный доступ. Так вот у вас должен быть такой реквизит со ссылкой на вашу обработку (создайте форму типа "Форма обработки") и скопируйте оттуда реквизит в ваши формы - и будет счастье.
"Форма обработки"
"Произвольная форма"
Если последнее - то поэтому и не работает. На закладке реквизиты формы есть (бывает) реквизит, выделенный жирным - основной реквизит формы. К нему имеется полный доступ. Так вот у вас должен быть такой реквизит со ссылкой на вашу обработку (создайте форму типа "Форма обработки") и скопируйте оттуда реквизит в ваши формы - и будет счастье.
07.05.2010
16:01
#9
Действительно, я создавал произвольные формы. Но чем они отличаются и когда какую лучше использовать? Могу ли я посреди работы изменить тип формы на форму обработки?
07.05.2010
16:08
#10
Произвольная практически никогда не используется (кроме общих форм)
Если посмотрите любую форму конфигурации у них всегда есть основной реквизит.
Так что по-умолчанию лучше создавать "Форму обработки" - доступен общий модуль и реквизиты обработки.
У меня исключений небыло, т.е. я не менял основной реквизит, но о нем помню. Теоретически можно написать обработку по редактированию документа и присвоить её тип ДокументОбъект и наслаждаться всеми прелестями "формы документа".
Если посмотрите любую форму конфигурации у них всегда есть основной реквизит.
Так что по-умолчанию лучше создавать "Форму обработки" - доступен общий модуль и реквизиты обработки.
У меня исключений небыло, т.е. я не менял основной реквизит, но о нем помню. Теоретически можно написать обработку по редактированию документа и присвоить её тип ДокументОбъект и наслаждаться всеми прелестями "формы документа".
- 1
- 2
Читают тему
(гостей: 1)