Имя: Пароль:
1C
1C 7.7
v7: Передача параметров между обработками.
,
0 Knowledge
 
02.09.13
11:36
-------------------------------------------------------------------------------------------------------
Вызывающая обработка:
Процедура Сформировать()
ПолноеИмяФайла  = ……
Сп_Параметры = СоздатьОбъект("СписокЗначений");
    Сп_Параметры.ДобавитьЗначение(ВыбНачПериода);
    Сп_Параметры.ДобавитьЗначение(ВыбКонПериода);
    ОткрытьФорму("Отчет",Сп_Параметры,ПолноеИмяФайла);
    Результат = Сп_Параметры.ТЗ_По_Машинам;
    Сп_Параметры.Форма.Закрыть();
КонецПроцедуры// Сформировать

Вызываемая обработка:
Процедура ПриОткрытии()
    Параметры = Форма.Параметр;
    Если ПустоеЗначение(Параметры) = 0  Тогда
        ДатаНачала = Параметры.ПолучитьЗначение(1);
        ДатаКонца = Параметры.ПолучитьЗначение(2);
        Сформировать();// Формирует ТЗ_По_Машинам;
        //СтатусВозврата(0);
        //Форма.Закрыть();
    КонецЕсли;    
КонецПроцедуры // ПриОткрытии

В вызывающей  процедуре после вызова функции «ОткрытьФорму("Отчет",Сп_Параметры,ПолноеИмяФайла);»  становиться доступен контекст вызываемой формы, чтобы  передать ТЗ_По_Машинам  нужно разместить эту таблицу значений на форме и открыть её (форму). При этом на экране появляется  форма диалога вызываемой обработки.

Вопрос:  Можно ли передать ТЗ_По_Машинам  в вызываемую обработку так, чтобы не было видно
форма диалога вызываемой обработки?
1 ДенисЧ
 
02.09.13
11:37
Чо?
Зачем её на форму выпихивать?
2 mikecool
 
02.09.13
11:37
можно, в Сп_Параметры
3 skunk
 
02.09.13
11:38
да
4 mikecool
 
02.09.13
11:38
(3) приз за самый лаконичный ответ в студию! )
5 Ёпрст
 
02.09.13
11:38
статусВозврата(0) воткни в приоткрытии
6 Cthulhu
 
02.09.13
11:53
(5): только предупреди человека, что при таком финте ушами из самой обработки в параметре нихрена не приедет.. а то вдруг ему надо и взад чонить вернуть из обработки, ммм?..
7 Knowledge
 
02.09.13
12:05
(1) если не разместить на форме, то ТЗ_По_Машинам   не будет в контексте формы в вызывающей  обработке.
(5)если  СтатусВозврата(0);- тогда форма не откроется и её контекст не будет доступен в вызывающей  обработке. Я пробовал.
8 Knowledge
 
02.09.13
12:08
(6) правильно думаешь мне нужно вернуть таблицу значений ТЗ_По_Машинам, которая формируется в вызываемой обработке.
9 skunk
 
02.09.13
12:10
зачем тебе доступ к контексту?
10 Knowledge
 
02.09.13
12:14
(9) а как получить  в вызывающей обработке таблицу значений ТЗ_По_Машинам, которая формируется в вызываемой обработке.
11 Knowledge
 
02.09.13
12:20
(1) пардон можно присвоить ТЗ_По_Машинам в Форма.Папраметр, Но все равно вызываемю форму нужно открыть.
12 uno-group
 
02.09.13
12:21
Странненько всегда возвращала при статусвозврата(0) ты там где надо пихаешь. в приоткрытии() форма.параметр="веть возврощает же"; Может если его пытаться засунуть в призакрытии то естественно так как форма не открывалась то она и не закрывается и эта процедура не отрабатывает. на крайняк мозно через глобальную переменную
13 skunk
 
02.09.13
12:22
(10)ну например все через тот-же параметр формы
14 skunk
 
02.09.13
12:22
(11)не надо
15 skunk
 
02.09.13
12:23
тебе надо сформировать переделать немного
16 Ёпрст
 
02.09.13
12:24
(11) зачем ?
17 Knowledge
 
02.09.13
12:28
(14-16) Если поставлю СтатусВозврата(0) в вызываемой обработке, то в вызывающей обработке в Сп_Параметры так и останется исходный список значений и не будет доступа к ТЗ_По_Машинам  , которая мне нужна.
18 Ёпрст
 
02.09.13
12:29
(17) у тебя её при любом раскладе не будет в коде в (0)
19 Ёпрст
 
02.09.13
12:29
открывай поделку модально
20 Ёпрст
 
02.09.13
12:30
только, зачем её открывать - хз.
21 skunk
 
02.09.13
12:31
(17)да что ты прицепился к этой тз на форме ...
22 Knowledge
 
02.09.13
12:41
(17) Всё разобрался:
Вызывающая обработка:
Процедура Сформировать()
ПолноеИмяФайла  = ……
Сп_Параметры = СоздатьОбъект("СписокЗначений");
    Сп_Параметры.ДобавитьЗначение(ВыбНачПериода);
    Сп_Параметры.ДобавитьЗначение(ВыбКонПериода);
    ОткрытьФормуМодально("Отчет",Сп_Параметры,ПолноеИмяФайла);
ТЗ_По_Машинам  = Сп_Параметры ;
КонецПроцедуры// Сформировать

Вызываемая обработка:
Процедура ПриОткрытии()
    Параметры = Форма.Параметр;
    Если ПустоеЗначение(Параметры) = 0  Тогда
        ДатаНачала = Параметры.ПолучитьЗначение(1);
        ДатаКонца = Параметры.ПолучитьЗначение(2);
        Сформировать();// Формирует ТЗ_По_Машинам;
Форма.Парамет р = ТЗ_По_Машинам;
        СтатусВозврата(0);
    КонецЕсли;    
КонецПроцедуры // ПриОткрытии
23 Knowledge
 
02.09.13
12:43
Всем спасибо
24 Cthulhu
 
02.09.13
15:18
(23): неужто код (22) возвращает в параметрем (в место открытия формы) ТЗ?..
(подсказка: если использовать "Форма.Закоыть()" вместо "СтатусВозврата(0)" - то вернет то, что ты присвоил параметру)
Ошибка? Это не ошибка, это системная функция.