Имя: Пароль:
1C
1С v8
Получить параметр формы
0 Lepochkin
 
19.07.11
11:44
Пишу в основном на семерке, потом задаю глупый вопрос. Открываю форму внешней обработки, ей передаю параметр. В семерке что бы получить параметр я пишу просто Форма.Параметр, а как это делается в восьмерке, что-то никак не найду.
1 Ork
 
19.07.11
11:47
(0) Покажи как параметр передаешь?

Чисто интресно стало.
2 Lepochkin
 
19.07.11
11:48
во = ВнешниеОбработки.Создать(Кат+"ВнешниеФункции.epf");
       ФормаВО=ВО.ПолучитьФорму();
       Параметр = Новый Структура;
       Параметр.Вставить("Имя1","Знач1");

       ОткрытьФормуМодально(ФормаВО,Параметр);
3 Sarmen
 
19.07.11
11:49
"Знач1" - точно в кавычках? так и передаёшь значение? в кавычках?
4 Lepochkin
 
19.07.11
11:50
а вот как мне в процедуре перед открытием этот параметр получить. если я в корне не прав, то покажите как нужно
5 Ork
 
19.07.11
11:50
(2) Что-то вы недоговариваете... В восьмерке нет процедуры ОткрытьФормуМодально.
6 Sarmen
 
19.07.11
11:50
теоретически обратиться к параметру так:
Параметры.Имя1
7 Lepochkin
 
19.07.11
11:50
(5)А как же у меня тогда форма открывается )))
8 Lepochkin
 
19.07.11
11:51
(6) Пробовал. Пишет что переменная Параметры не определена
9 Sarmen
 
19.07.11
11:52
так у тебя форма значит не управляемая?
10 Lepochkin
 
19.07.11
11:52
(3)Не принципиально что я за значение передаю. Вопрос как получить
11 Lepochkin
 
19.07.11
11:52
(9)Это уже интересней. Откройте глаза семерошнику где галку поставить что бы управляемой стала
12 Ork
 
19.07.11
11:53
(7) Даже затрудняюсь что-либо понять. А тем более объяснить.
В восьмерке есть методы формы Открыть и ОткрытьМодально.
Метода ОткрытьФормуМодально - нет. Может у тебя платформа какая эксклюзивная?
13 Reset
 
19.07.11
11:55
(12) Есть такая процедура (не метод)
14 Sarmen
 
19.07.11
11:55
ОткрытьФормуМодально - есть, но туда в первый параметр передаётся имя формы, а не форма.
15 Lepochkin
 
19.07.11
11:55
У формы нет метода открыть я не спорю. Тоесть ФормаВО.ОткрытьФормуМодально нет,
16 Reset
 
19.07.11
11:55
+(13) Глобального контекста
17 Lepochkin
 
19.07.11
11:56
Дак параметр то как получить???
18 Sarmen
 
19.07.11
11:58
Если ты форму уже получил (ФормаВО), то и обращайся к её параметрам напрмямую, а потом открывай форму.
Примерно так:
ФормаВО.Параметры.Имя1 = "Знач1";
ФормаВО.ОткрытьМодально();
19 Lepochkin
 
19.07.11
12:26
(18)Не понял...
20 Lepochkin
 
19.07.11
12:32
Вот что в СП
ОткрытьФормуМодально (OpenFormModal)
Вариант синтаксиса: По названию
Синтаксис:
ОткрытьФормуМодально(<ИмяФормы>, <Параметры>, <Владелец>)
Дак как этот четров <Параметры> получить, в процедуре ПередОткрытием. И кстати мне его потом же нужно будет изменить. В семерке это опять же делалось просто Форма.Параметр=НовоеЗначение
21 Sarmen
 
19.07.11
12:35
ФормаВО=ВО.ПолучитьФорму();    -  вот это что такое? что за код?
Этот код "Получает форму или управляемую форму".
После того как ты форму получил - тебе становится доступным контекст формы, включая её параметры (если они есть! они точно есть у тебя в форме? эти параметры?) и ты можешь обращаться к  параметрам этой формы: ФормаВО.Параметры.<Имя параметра> (если форма - управляемая, в обычной форме - параметров нет). Ответь - форма управляемая?
Далее, после заполнения параметров - просто открыть форму с заполненными параметрами ФормаВО.ОткрытьФормуМодально();
22 Lepochkin
 
19.07.11
12:38
Просвети плиз как ее сделать управляемой. Потому что у меня видимо она не управляемая.
23 Reset
 
19.07.11
12:39
Предугадывая след вопрос, сразу отвечу на (11) - нигде.
Только создав новую форму.
24 Reset
 
19.07.11
12:39
Эх не успел до вопроса)
25 Sarmen
 
19.07.11
12:41
Если у тебя в форме нет параметров, значит это - обычная форма. И обращаться надо не к параметрам, а к реквизитам формы или объекта. И значит функция ОткрытьФормуМодально(<ИмяФормы>, <Параметры>, <Владелец>) в этом случае не подходит. Не используй её!
26 Sarmen
 
19.07.11
12:42
Делай так:
ФормаВО = ВО.ПолучитьФорму();
ФормаВО.Имя1 = "Знач1";
ФормаВО.ОткрытьМодально();
27 Reset
 
19.07.11
12:43
Тут в параллельных темах очень толково описана ситуация с новичком и методами X,Y,Y

Очевидно, тут тоже попытка решить чтото элементарное через опу, скрывая цель и заставляя всех искать именно решение через опу вместо первоначальной цели.
28 Lepochkin
 
19.07.11
12:47
(27) Я просто думаю как семерошник. И постоянно думаю, нафига надо было так переделывать язык.
А сделать нужно следующее. Передать во внешнюю обработку какой-то параметр, обработать его и вернуть полученное значение после обработки обратно.
29 Reset
 
19.07.11
12:49
используй реквизит
пример в (26)
30 Sarmen
 
19.07.11
12:49
(4) "а вот как мне в процедуре перед открытием этот параметр получить":

Процедура ПередОткрытием()

   // Сообщить значение реквизита
   Сообщить(Строка(Имя1));

КонецПроцедуры

т.е. обращаться к реквизитам объекта или формы можно напрямую:   Имя1
Или через объект или форму:
  ЭтотОбъект.Имя1    или ЭтаФорма.Имя1
31 Reset
 
19.07.11
12:51
(29)+
для возвращения используй Закрыть(возвращаемоеЗначение)
можно возвращать еще разными способами (зависит от контекста задачи)
32 Sarmen
 
19.07.11
12:52
(28) для получения результата обработки форму открывать так:

Результат = ФормаВО.ОткрытьМодально();

а для закрытия формы обработки используй (31)
33 Lepochkin
 
19.07.11
12:57
Спасибо. Свою задачу решил, хотя и не понял как получить параметр после ОткрытьФормуМодально(). Ну да ладно на досуге поковыряюсь
34 Reset
 
19.07.11
13:00
(33) Вот так: Параметры.Имя
Ты скажешь, что у тебя нет параметры, и пойдет сказ про белого бычка.
35 Sarmen
 
19.07.11
13:05
он уже в (8) сказал, что нет Параметры

наверно он понимает, что "параметр" - это то, что он передает в обработку, и этот же "параметр" (только изменённый) ему и должна вернуть обработка.
36 Reset
 
19.07.11
13:11
(35) Та я ж понял уже. Путаница слова параметр и объекта языка Параметры, причем мы пытались разобраться со вторым, а не с первым (бессмысленное занятие, т.к. форма обычная)
Про это я и язвил в (27)