Предупреждение ("Какой-то текст"); // MessageBox с одной кнопкой - ОК
Вопрос ("Текст", "Заголовок", Режим, Таймаут, КнопкаПоУмолчанию); // Точно не помню параметры, но это полноценный MessageBox с произвольным набором кнопок
Приостановка программы во время ожидания данных
Ньюанс - отправка/прием будет производится не реже, чем каждые 20 секунд
Еще ньюанс - данные, которыми меняются - текстовые, конкретнее - XML.
Вопрос - как 1С-ке знать, когда данные придут?
Как сделать так, чтобы при выполнении (например) процедуры
f = obj.SetData(x)
выплнение приостановилось и ждало, пока не обработаются данные внутри обьекта obj, а после того - чтобы передались в переменную f ?
Главное условие - циклы не предлагать.
Цитата: SkyM@n
Как сделать так, чтобы при выполнении (например) процедуры
f = obj.SetData(x)
выплнение приостановилось и ждало, пока не обработаются данные внутри обьекта obj, а после того - чтобы передались в переменную f ?
Право, с 1С не знаком (наверно это к лучшему).
Может быть, реализовать логику ожидания в SetData (я полагаю это собственный ActiveX?) и не париться. Т.е. пока данные не обработаются SetData не вернет результат.
Ок, я т оже так думал, но просто 1С не захочет ждать. Я знаю в Паскале есть функция ReadKey (считывание клавиш) и она ставится в цикле, так как если одна будет стоять одной в программе - то просто не успеешь нажать на клавишу. В 1С так же, у нее все функции как ReadKey, у нее даже нет такого, как вывести MsgBox и ждать, пока не нажмешь на нем кнопку - то есть показал и дальше пошел интерпретировать код. Бред. Я сам не 1С-ник, вот - выпало писать ActiveX (сетевой мост) для нее, ведь она и с сетью толком не умеет работать... Такое впечатление, что это не язык программировани, а так - прикладная порграммка со встроенными скриптами... В общем, имхо, лучшего решения нет, как ставить в цикле, чего жделать я таки не буду. Сорри за многабукаф и спасибо тем, кто задумывались над сабжем.
Цитата: SkyM@n
В 1С так же ... у нее даже нет такого, как вывести MsgBox и ждать, пока не нажмешь на нем кнопку - то есть показал и дальше пошел интерпретировать код.
Код:
Дальнейшее выполнение блокируется до нажатия кнопки.
Также: ВвестиЧисло, ВвестиСтроку, ВвестиДату.
Цитата: SkyM@n
Такое впечатление, что это не язык программировани, а так - прикладная порграммка со встроенными скриптами...
Практически так и есть. Это узкоспециализированная система, заточена для работы с бухитогами/документами/справочниками и т. д.
По сабжу.
Код:
f = obj.SetData(x)
На какой стороне этот код исполняется?
Да впрочем, неважно. ИМХО, проблема надуманная, поскольку механизм OLE при удаленных вызовах сам блокирует выполнение, пока удаленная процедура не отработает.
Оказывается, остановка происходит, пока данные не вернутся и это очевидно.
Просто мне надо было чаще спать )
2cheburator тем не менее, спасибо