Имя: Пароль:
1C
1С v8
Как дождаться выполнения обмена и закрыть клиента?
0 SeregaMW
 
05.08.14
16:14
&НаКлиенте
Процедура ПриОткрытии(Отказ)
П = Новый Структура("Ключ", ПриОткрытииНаСервере());
Ф = ПолучитьФорму("Справочник.СценарииОбменовДанными.ФормаОбъекта",П);
Ф.Открыть();  
Ф.ВыполнитьОбмен(Ф.Команды.ВыполнитьОбмен);

Сообщить("Конец обмена");
ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры

Выкидывает сразу не дожидаясь завершения обмена.
1 ДенисЧ
 
05.08.14
16:16
Мы должны протелепатировать, что у тебяв ВыполнитьОбъект()?
Мож, у тебя там фоновое задание пытается запуститься
2 Широкий
 
05.08.14
16:16
Может надо модально открыть?
Или завершать работу из твоего справочника
3 SeregaMW
 
05.08.14
16:21
(1)

Процедура ВыполнитьОбмен(Команда) Экспорт;
    
    ЭтоНовый = (Объект.Ссылка.Пустая());
    
    Если Модифицированность ИЛИ ЭтоНовый Тогда
        
        Записать();
        
    КонецЕсли;
    
    НомерОбрабатываемойСтроки     = 1;
    КоличествоСтрок = Объект.НастройкиОбмена.Количество();
    
    ПодключитьОбработчикОжидания("ВыполнитьОбменДаннымиНаКлиенте", 0.1, Истина);
    
КонецПроцедуры
4 SeregaMW
 
05.08.14
16:22
(2) Думаю модально не поможет, из справочника закрывать не кошерно.
5 SeregaMW
 
05.08.14
16:23
(0) Как бы дождаться выполнение
Ф.ВыполнитьОбмен(Ф.Команды.ВыполнитьОбмен);
что бы уже после ее отработки, программа начала читать следующие строки кода.
6 Широкий
 
05.08.14
16:24
(4) Пробовал?
7 Широкий
 
05.08.14
16:24
Как вариант кидай оповещение из формы справочника
8 SeregaMW
 
05.08.14
16:29
(6) Модально он просто форму открывает и ждет пока я ее закрою что продолжить выполнять код
9 hhhh
 
05.08.14
16:31
(8) еще хуже здесь. Надо еще дождаться выполнения Ф.Открыть();

то есть не открыта форма, а вы уже фигачите Выполнить Обмен.
10 ДенисЧ
 
05.08.14
16:46
(3) ПодключитьОбработчикОжидания
Как бэ вот и ответ...