Имя: Пароль:
1C
1C 7.7
v7: открытие формы из формы 1с 7.7
0 jah1111
 
25.09.20
15:23
помогите разобраться в очередном извращении :)

Дано:
обработка, открывается из документа в модальном окне
в ней:  - кнопка с процедурой ОткрытьМодальноеОкно2()
        - Процедура ПослеОткрытия() в которой прописана процедура ОткрытьМодальноеОкно2()
        // два разных вызова модальногОокна2 предусмотрено и соображений: если из процедуры - первый ввод, а по кнопке - если надо изменить то, что ввели при первом вводе
если нажимаю по кнопке, то все нормально, параметр передается из модальногоокна1 в модальноеокно2
если процедура срабатывает из процедуры ПослеОткрытия() то в отладчике переменная контекста имеет пустое значение и обработка не срабатывает корректно.
1 Ёпрст
 
25.09.20
15:30
(0) любое открытие из модальной формы будет открыто модально. Дальше думай.
Зы: модальность зло
2 АЛьФ
 
25.09.20
15:31
2(1) Не любое :)
3 АЛьФ
 
25.09.20
15:34
2(0) Обязательно надо, чтобы второе модальное открывалось первый раз при открытом первом? Может все же в ПриОткрытии делать?
4 jah1111
 
25.09.20
15:39
(3) прописывал процедуру в ПриОткрытии(). В мольном окне формы по непонятной мне причине отключился формекс, смешались все слои  в кучу...
разве что попробовать получить параметр в ПриОткрытии(), а саму а вызов модальногоокна2 прописать в ПослеОткрытия()
5 jah1111
 
25.09.20
15:43
(4) извините, второе предложение бред, просто запутался.

я не понимаю почему по кнопке все отлично работает а по процедуре  - нифига?
6 jah1111
 
25.09.20
15:56
(3) обязательно, данные из модалОкна2 должны попадать в модалОкно1. и оттуда уже в таблицу документа.
в общем, структура такая:
кнопка "Новая строка" -> Модальное окно с несколькими элементами диалога значение которых меняются по кнопках, которые вызывают модалОкно2(обработка поиска в БД). При вводе новой строки модалОкно2 вызывается автоматически поочередно для каждого элемента диалога, кнопка Ок в модалОкне2 и строка готова.
7 АЛьФ
 
25.09.20
16:45
2(6) А как данные передаются между окнами?
8 jah1111
 
25.09.20
17:15
(7)  в родительской форме:

    Конт = глВзятьКонтекст(Контекст);
    
    СЗ = СоздатьОбъект("СписокЗначений");
    СЗ.ДобавитьЗначение(Конт,        "Контекст");
    СЗ.ДобавитьЗначение(Команда,    "Команда"); // Разным кнопкам  - разная команда. Передается в дочернюю форму.
          
    ОткрытьФормуМодально("Обработка.ДанныеСтроки",СЗ);

в дочерней форме:

    Докум = Форма.Параметр.Получить("Контекст");
    Команда = Форма.Параметр.Получить("Команда");


ну и пример передачи назад:

Докум.Товар = ТоварИзМодальнойФормы;


Когда вызываю второе модальное окно из процедуры ПриОткрытии() первого модального окна, обработка фунциклирует нормально, но слои на форме все вперемешку и формексовские шрифты не работают.
9 Ёпрст
 
25.09.20
18:24
не нужна тебе модальная форма, в лучшем случае, подбор открывать
10 Злопчинский
 
25.09.20
18:27
Смотря какая версия формекса
В модальном режиме были версии в которых ПослеОткрытия в модальном не работал. Надо юзать ПослеСоздания()
11 АЛьФ
 
28.09.20
10:46
2(8) Не надо работать с контекстом родительского окна, переданным через параметр. Возвращай из дочерней формы все нужные значения в том же списке и в родительском уже все обрабатывай.