Имя: Пароль:
1C
1C 7.7
v7: Передача значений через Контекст
,
0 Ыщъ
 
25.12.13
15:15
Обработка1 с реквизитом "МестоХранения" вызывает Обработку2, передает ей Контекст:

ОткрытьФорму("Отчет", Контекст, КаталогИБ() + "ExtForms\SelectCell.ert");

В Обработке2:

Процедура Выбрать()
    МХ = СокрП(Откуда.МестоХранения);
    Если ПустаяСтрока(МХ) = 0 Тогда
        МХ = МХ + ",";
    КонецЕсли;
    МХ = МХ + Ячейка.Код;
    Откуда.МестоХранения = МХ;
    Форма.Закрыть();
КонецПроцедуры

//---------------------------------------------------------------------------------------
Процедура ПриОткрытии()
    Откуда = Форма.Параметр;
    Сформировать();
КонецПроцедуры;

В итоге:
В Обработка2 МестоХранения = ""
Значение появляется в момент повторного вызова Обработка2.

Модально открывать Обработка2 нельзя. Что делать?
1 Fedor-1971
 
25.12.13
15:19
Как вариант: передай код склада, зачем весь контекст гонять?
2 Ыщъ
 
25.12.13
15:20
(1) Как передать?
3 acanta
 
25.12.13
15:20
Загонять все передаваемые параметры в список значений и передавать контекстом его.
4 palpetrovich
 
25.12.13
15:22
так наверное
ОткрытьФорму("Отчет", МестоХранения, КаталогИБ() + "ExtForms\SelectCell.ert");
5 Fedor-1971
 
25.12.13
15:23
ОткрытьФорму("Отчет", МестоХранения.Код...
6 Ыщъ
 
25.12.13
15:28
Проблема в том, что немодально Обработка1 не ждёт отработки Обработки2 и двигает дальше.
Попытка передать через глобальную переменную с циклом ожидания вешает всё.

    глБуферОбмена = "ВыбратьЯчейку";
    ОткрытьФорму("Отчет", Контекст, КаталогИБ() + "ExtForms\SelectCell.ert");
    Пока глБуферОбмена = "ВыбратьЯчейку" Цикл
        мПауза(1);
    КонецЦикла;
    МестоХранения = глБуферОбмена;

Форма Обработка2 открывается и всё - висяк
7 Ыщъ
 
25.12.13
15:30
+(6)
В Обработка2
ГлБуферОбмена = МХ;
вместо:
Откуда.МестоХранения = МХ;
8 Ыщъ
 
25.12.13
15:38
Дух Ёпрста кто умеет вызывать?
Покамлайте, плз.
9 КонецЦикла
 
25.12.13
16:27
Вообще непонятно в чем проблема...
В ТиС есть масса примеров всяких открытий всяких обработок
Обработка2 - Это служебная обработка? Какая на нее возложена функция?
10 Ыщъ
 
25.12.13
16:33
(9) Вернуть в Обработка1 выбранную ячейку ТРВД на форме Обработка2
11 ADirks
 
25.12.13
16:35
(0) ВК предлагать?
12 acanta
 
25.12.13
16:46
ОткрытьПодбор()
ВыполнитьВыбор()
было?
13 acanta
 
25.12.13
16:48
+ОбработкаПодбора() при этом обработки сохраняют связь кто кого вызвал и контексты тоже по-моему работают..Немодально. можно заказать множественный подбор - т.е. вообще не закрывать вторую.
14 Хряк
 
25.12.13
16:54
Процедура Выбрать()
    МХ = СокрП(Откуда.МестоХранения);
    Если ПустаяСтрока(МХ) = 0 Тогда
        МХ = МХ + ",";
    КонецЕсли;
    МХ = МХ + Ячейка.Код;
    Откуда.МестоХранения = МХ;

    Форма.Откуда.Обновить();//!!!!!

    Форма.Закрыть();
КонецПроцедуры
15 fedoss
 
25.12.13
16:55
(14) Откуда.Форма.Обновить();
16 Хряк
 
25.12.13
16:55
блин
Откуда.Форма.Обновить();
17 КонецЦикла
 
25.12.13
17:43
(10) Выбор интерактивный? Почему тогда не модально открыть?
18 GreyK
 
25.12.13
17:55
(0) Догадайся с трёх раз зачем в глобальнике ТиС существует функция ГлВзятьКонтекст().
19 Эльниньо
 
25.12.13
18:47
(17) Модально не покажет ТРВД.
20 Злопчинский
 
25.12.13
20:07
(6) > Проблема в том, что немодально Обработка1 не ждёт отработки Обработки2 и двигает дальше.
.
ничего подобного.
.
//---------------------------------------------------------------------------------------

Процедура ПриОткрытии()
    Откуда = Форма.Параметр;
    СтатусВозврата(0); //собака порылась!!1
    Сформировать();    //всякие действия вычислительные
КонецПроцедуры;

В итоге родительская обработка вызовет дочку - отработает ПриОткрытии() вернется в родительскую - родительская только после этого пойдет дальше
21 Эльниньо
 
25.12.13
21:57
(18) Не тот случай.
22 Ыщъ
 
26.12.13
11:50
(20) Всё бы хорошо, но мне в дочке надо произвести некие действия:
Процедура Выбрать() на кнопке.

Помогло (15). Спасибо. Ларчик просто открывался, а я дятел.