![]() |
![]() |
![]() |
|
Как передать переменную из документа в обработку? | ☑ | ||
---|---|---|---|---|
0
Platon
25.07.05
✎
11:02
|
Надо заполнить табличную часть документа подборкой значений из таблицы в обработке но для того чтобы эта обработка заработала нужно ей передать строковую переменную, как это сделать?
|
|||
1
ДенисЧ
25.07.05
✎
11:04
|
Прочитать про ОткрытьФорму и и второй параметр?
|
|||
2
AlexTrade
25.07.05
✎
11:05
|
ОткрытьФорму("Обработка.ОтправитьСообщение"+"#",Перем);
|
|||
3
Волшебник
25.07.05
✎
11:05
|
||||
4
Волшебник
25.07.05
✎
11:06
|
(3) Пардон, я подумал речь о 8.0
|
|||
5
AlexTrade
25.07.05
✎
11:06
|
а при открытии обработки проверяй Форма.параметр= твоя переменная
|
|||
6
AlexTrade
25.07.05
✎
11:08
|
(0)автор какая версия?
|
|||
7
Platon
25.07.05
✎
11:25
|
7.7
|
|||
8
Platon
25.07.05
✎
11:26
|
(6)7.7
|
|||
9
Platon
25.07.05
✎
11:28
|
Второй параметр имя формы. чтото не понимаю как в ней переменную передать?
|
|||
10
AlexTrade
25.07.05
✎
11:31
|
(9)смотри 2
|
|||
11
Клон
25.07.05
✎
11:31
|
А как вернуть оттуда (из обработки) переменную?
|
|||
12
Proba
25.07.05
✎
11:32
|
9) то что передается в обработку строкой
ОткрытьФорму("Обработка.ОтправитьСообщение"+"#",Перем) Можно получитьв обработке как Форма.Параметр, причем в этой переменной можно передать и список значений. А вообще слушай 1) |
|||
13
AlexTrade
25.07.05
✎
11:32
|
эту строку пишешь там от куда ты отправляешбь
ОткрытьФорму("Обработка.Твоя"+"#",Перем); |
|||
14
AlexTrade
25.07.05
✎
11:33
|
так тебе из обработки надо вернуть в док?
|
|||
15
AlexTrade
25.07.05
✎
11:34
|
если я правильно понял тебе надо переменную отправить в обработку с дока, а потом с обработки отправить в док?
|
|||
16
Platon
25.07.05
✎
11:36
|
(13)щас буду пробовать
(14)ну это потом, а сперва надо всётаки передать в обработку |
|||
17
AlexTrade
25.07.05
✎
11:38
|
даже если потом то проэто надо думать сейчас потомучто потом будет поздно, будешь переделывать с начала
|
|||
18
Platon
25.07.05
✎
11:44
|
(15) В документе формируется строка с условием SQL запроса а в обработке сам запрос с передачей результата в таблицу значений чтобы можно было эти значения выбрать для добавления в табл. часть документа.
// из списка знач в строку where=TrimAllСтрЗаменить(sz.ToSeparatedString(),",",") OR (SampleNo=")); //запрос в обработке Table.Open("SELECT * FROM Spectro1 WHERE (SampleNo="+where+");",ado,3,1); |
|||
19
Клон
25.07.05
✎
11:46
|
(12), (13) Оно бы все ничего да только возвращаемый контекст действителен пока форма обработки открыта. После закрытия вышеуказанной формы переменная обнуляется. Вот так то.
|
|||
20
Ёпрст
25.07.05
✎
11:53
|
(19) А в чем проблема то ?? Открыть обработку модально рулит :))
|
|||
21
Клон
25.07.05
✎
11:54
|
Вопрос не закрыт. Есть необходимость открыть обработку и после выполнения действия по установлению значения реквизита формы обработки вернуть назад значение этого реквизита. Как сделать?
|
|||
22
Композитор
25.07.05
✎
11:56
|
(21) Это тема для новой ветки в 20 постов.
|
|||
23
Rovan
гуру
25.07.05
✎
11:56
|
(21) Типовые конфы не смотрел? - там есть такие фокусы.
(Например при заполнении списка товаров.) |
|||
24
Клон
25.07.05
✎
11:58
|
(23) Где конкретно?
|
|||
25
Platon
25.07.05
✎
11:59
|
а вот это обязательно? "+"#" что это значит?
|
|||
26
Ёпрст
25.07.05
✎
12:04
|
(21) Да всё элементарно, Ватсон!
1.В доке (или еще где) создаешь список Пример: ПередаваемыйСписок = СоздатьОбъект(СписокЗначений); ПередаваемыйСписок.ДобавитьЗначение(Параметр1,"Параметр1"); 2.Передаешь Список в качестве параметра : ОткрытьФормуМодально("Обработка.Моя",ПередаваемыйСписок); 3.В обработке в ПриОткрытии получаешь Список как Форма.Параметр; Парам1 = Форма.Параметр.ПолучитьЗначение("Параметр1"); 4.Если необходимо вернуть обратно в док, то Необходимо записать нужные значения обратно в Форма.Параметр (в данном случае - это списокЗначений) Например в процедуре ПриЗакрытии() Форма.Параметр.УдалитьВсе();//очистили весь Форма.Параметр.ДобавитьЗначение(ВозвращаемыйПараметр,"ВозврПараметр"); 5. В доке после ОткрытьФормуМодально пишем ОткрытьФормуМодально("Обработка.Моя",ПередаваемыйСписок); ВозврПараметр = ПередаваемыйСписок.ПолучитьЗначение("ВозврПараметр"); Фсё. |
|||
27
Ёпрст
25.07.05
✎
12:08
|
+26
Лучше вместо ПриЗакрытии() в модуле формы Обработки использовать свою процедуру, ( например Выполнить() ) , в которой в конце прописать Форма.Закрыть(0) а на самой форме убрать кнопки Закрыть и Х . |
|||
28
Platon
25.07.05
✎
12:11
|
Надо не во второй параметр а в третий
Так прокатило //В документе ОткрытьПодбор("Обработка.СписокПроб",,where,1,); // В обработке where превращается в Форма.Параметр Table.Open("SELECT * FROM Spectro1 WHERE (SampleNo="+Форма.Параметр+");",ado,3,1); |
|||
29
Platon
25.07.05
✎
12:15
|
(26)Понятно объяснил :)
|
|||
30
Ёпрст
25.07.05
✎
12:15
|
(28) Да уж .... ОткрытьПодбор и ОткрытьФорму - 2 разные разницы однако ! :))
|
|||
31
Клон
25.07.05
✎
12:20
|
(26) Получается СписокЗначений передается в форму по ссылке, а переменная типа строка или число по значению? Так как с ними вариант с возвратом значения не канает.
|
|||
32
Ёпрст
25.07.05
✎
12:47
|
(31) Блин , в форму передается КонтекстФормы, из СП:
<КонтекстФормы> - имя переменной, куда можно задать значение любого типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как атрибут Форма.Параметр. После исполнения данного метода система вернет в данную переменную контекст открытой формы (необязателен); И по идее, так же можно в Форма.Параметр записать что угодно! Поентому если передавать в качестве контекста переменную (а не список) , то всё должно прокатить (только и вернуть надо переменную : Форма.Параметр = ВозвращПерем; ). |
|||
33
Клон
25.07.05
✎
12:50
|
Дружище, ты не прав.
|
|||
34
Ёпрст
25.07.05
✎
13:13
|
(33) Только что проверил! Всё работает!
Вот тебе тест для проверки: 1.Создать Отчет "Тест" с одной кнопкой Сформировать , модуль: Перем Вова; //******************************************* Процедура Сформировать() Вова="Кто у нас Вовочка ?"; ОткрытьФормуМодально("Обработка.Моя",Вова); Сообщить("Получили "+Вова); КонецПроцедуры 2. Создать Обработку "Моя" с одной кнопкой Выполнить, в модуле : //******************************************* Перем Вася; Процедура ПриОткрытии() Вася = Форма.Параметр; Сообщить("Получили "+Вася); КонецПроцедуры // ПриОткрытии() Процедура Выполнить() Вася = "тормоз"; Форма.Параметр = Вася; Сообщить("Вернули "+Вася); Форма.Закрыть(0); КонецПроцедуры 3.Запускаем Отчет Тест -- радуемся как всё работает .... :)) |
|||
35
Platon
26.07.05
✎
09:52
|
Что-то я никак не могу получить в документ значения из подбора
отправить отправил а результат никак не могу вернуть //Отправляю так "ТабЗнач" это таблица значений ОткрытьПодбор("Обработка.СписокПроб",,ТабЗнач,1,) //Получить пытаюсь так Процедура Обработка подбора(ТабЗнач) //Пишу в документе не новую строку а лишь заполняю некоторые ячейки в существующей строке знач1=ТабЗнач.знач1; ... КонецПроцедуры Покажите желательно на примере а то в ЖК ничего не понял Надо чтобы пользователь щёлкал в обработке в таблице и подставлялись значения в документ в таблицу причём множественный выбор |
|||
36
GrayT
26.07.05
✎
10:12
|
ВыполнитьВыбор в обработке есть?
Отладчик в ОбработкуПодбора попадает? |
|||
37
Platon
26.07.05
✎
10:16
|
(36) А что писасать в выполнить выбор?
В отладчике не проверял. |
|||
38
GrayT
26.07.05
✎
10:17
|
То что тебе надо в документ вернуть - хошь число, хошь ТЗ, хошь СЗ.
Счелкнул по ТЗ на форме, поймал это дело процедурой, в ней сформировал что вернуть и ВыполнитьВыбор |
|||
39
Platon
26.07.05
✎
10:26
|
(+37)Как я понимаю надо формировать отдельную таблицу значений с выбранными значениями типа:
Форма.Параметр.НоваяСтрока() Форма.Параметр.знач1=Табл.знач1 как передать обратно? ВыполнитьВыбор пример можно? а то я тугодум :) |
|||
40
GrayT
26.07.05
✎
10:33
|
Не, не путой теплое с мягкий.
То что ты передал в обработку при открытии это одно, а то что вернешь для ОбработкиПодбора это другое - они ни как не связаны. |
|||
41
GrayT
26.07.05
✎
10:35
|
"надо формировать отдельную таблицу значений...." - вот и сформируй ее и отстань от Форма.Параметр
Процедура СчелчекПоТЗнаФорме тз = СоздатьОбъект("ТЗ)" тз.НоваяКолонка...... тз.НоваяСтрок() ...... ВыполнитьВыбор(тз) |
|||
42
Platon
26.07.05
✎
10:52
|
А в самом документе через Форма.Параметр обращатся?
|
|||
43
GrayT
26.07.05
✎
10:57
|
В документе? Зачем.
1. Из документа передал параметр в обработку. 2. В обработке при открытии через Форма.Параметр сделал подготовительные дествия. 3. В обработке сделал ВыболнитьВыбор - передал 38, 41 4. В документе в ОбработкеПодбора(ВыбЗнач,..) поймал в ВыбЗнач, то что передал в п.3 |
|||
44
Platon
26.07.05
✎
13:10
|
Спасибо в теперь таблица передаётся в документ
А как можно обработать двойной щелчок на таблице значений чтобы на кнопку всёвремя не нажимать? |
|||
45
Ёпрст
26.07.05
✎
13:36
|
(44) "Повесь на ТЗ (которая у тебя на форме) свою процедуру, котрорая срабатывает при 2-ом щелчке мыши или при нажатии кнопки.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |