Имя: Пароль:
1C
 
Как передать переменную из документа в обработку?
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-ом щелчке мыши или при нажатии кнопки.
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн