Имя: Пароль:
1C
 
Как передать параметр (ТЗ) в уже открытую форму?
0 KiLLER
 
19.05.05
13:18
Из формы документа открваю форму для подбора товара по минимаьному остатку, формирую ТЗ, и хочу при закрытии формы подбора передать ТЗ в форму из которой был открыт подбор, а у меня получается только открытие новой формы документа и передача именно в нее.
Ключ уникальности задан = 123 (к примеру)

Фрм = ДокументОбъект.ПолучитьФорму("ФормаДокумента",,123);
Фрм.ТаблицаДляПередачи = ЭтаФорма.ТЗ;    
Фрм.Открыть();

Что не так?
1 sanitar
 
19.05.05
13:49
Все гораздо проще.

       vvvv код исходной формы vvvv


// второе поле -- владелец, третье -- код уникальности формы подбора
Форма=ПолучитьОбщуюФорму("ТвояФормаПодбора",ЭтаФорма,"МояФормаПодбора123");
Форма.Открыть();


       vvvv код формы подбора vvvv


ЭтаФорма.ОповеститьОВыборе(ВыбраннаяТаблицаЗначений);
ЭтаФорма.Закрыть();


       vvvv опять код исходной формы vvvv


Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)

 если Источник.КлючУникальности="МояФормаПодбора123" тогда
   
    // обрабатываешь переменную ЗначениеВыбора -- это твоя таблица

 иначеесли Источник.КлючУникальности="ещечтото" тогда
 ....
 иначе
 ...
 конецесли;  

КонецПроцедуры
2 sanitar
 
19.05.05
13:52
Идея в том что у любой формы есть процедуры ОповеститьОВыборе и ОбработкаВыбора.

Причем первая процедура формы X вызывает вторую у формы Y (которая является владельцем формы X), передавая ей в качестве параметров выбранное значение  и собственные характеристики.

Так что для связки достаточно открыть форму подбора, указав ей в качестве владельца форму, которой этот подбор нужен и дальше можно баловаться.
3 KiLLER
 
19.05.05
16:15
Пишет в ответ:

{Документ.ЗаказПоставщику.Форма.ФормаДокумента(170)}: Ошибка при вызове метода контекста (ПолучитьОбщуюФорму): Недопустимое значение параметра (параметр номер "1")
Форма=ПолучитьОбщуюФорму("ФормаЗаполненияПоМинимальномуОстатку",ЭтаФорма,ДокументОбъект.Дата);
по причине:
Недопустимое значение параметра (параметр номер "1")
4 sanitar
 
19.05.05
17:21
ПолучитьОбщуюФорму я привел для примера.
Это в случае если форма с таким названием лежит в ветке "общие" (имхо самое правильное место для форм подбора).

Если она у тебя хранится в ветке документа, тада применяй метод документа получитьформу()

Остальное без изменений
5 Ветеран
 
19.05.05
17:48
ВладелецФормы.ТаблицаДляПередачи = ТЗ;
6 sanitar
 
19.05.05
17:56
Ветеран:
имхо с точки зрения идеологии это не есть совсем правильно...
заводить отдельный реквизит ради того чтобы принимать в него значения подбора...
7 Факер_S
 
19.05.05
17:58
можно завести переменную экспорт и ей присваивать значения
8 Ветеран
 
19.05.05
18:19
(6) ВладелецФормы - это свойство формы ...
9 sanitar
 
20.05.05
06:20
Я знаю. Разница в происходящих процессах:

1) Через Обработку выбора
Форма 1 открывает форму 2, потом просыпается по приходе сигнала от нее, принимает данные и обрабатывает их как только хочет.

2) Через реквизит владельца формы:
Форма 1 открывает форму 2, форма 2 чего-то пишет форме 1 в реквизит и закрывается.

Первый вариант ИМХО гибче и идейно правильней.
10 KiLLER
 
20.05.05
13:34
Большое спасибо...!
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший