Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Приостановка программы во время ожидания данных

251
21 декабря 2007 года
SkyMаn
1.7K / / 31.07.2007
Есть 1С Предприятие 7й версии, где нет такого понятия, как событийное программирование. И есть ActiveX, который коннектится к серверу и при получении данных - должен передать в 1С.
Ньюанс - отправка/прием будет производится не реже, чем каждые 20 секунд
Еще ньюанс - данные, которыми меняются - текстовые, конкретнее - XML.

Вопрос - как 1С-ке знать, когда данные придут?
Как сделать так, чтобы при выполнении (например) процедуры
f = obj.SetData(x)
выплнение приостановилось и ждало, пока не обработаются данные внутри обьекта obj, а после того - чтобы передались в переменную f ?
Главное условие - циклы не предлагать.
5
21 декабря 2007 года
hardcase
4.5K / / 09.08.2005
Цитата: SkyM@n

Как сделать так, чтобы при выполнении (например) процедуры
f = obj.SetData(x)
выплнение приостановилось и ждало, пока не обработаются данные внутри обьекта obj, а после того - чтобы передались в переменную f ?

Право, с 1С не знаком (наверно это к лучшему).
Может быть, реализовать логику ожидания в SetData (я полагаю это собственный ActiveX?) и не париться. Т.е. пока данные не обработаются SetData не вернет результат.

251
21 декабря 2007 года
SkyMаn
1.7K / / 31.07.2007
Ок, я т оже так думал, но просто 1С не захочет ждать. Я знаю в Паскале есть функция ReadKey (считывание клавиш) и она ставится в цикле, так как если одна будет стоять одной в программе - то просто не успеешь нажать на клавишу. В 1С так же, у нее все функции как ReadKey, у нее даже нет такого, как вывести MsgBox и ждать, пока не нажмешь на нем кнопку - то есть показал и дальше пошел интерпретировать код. Бред. Я сам не 1С-ник, вот - выпало писать ActiveX (сетевой мост) для нее, ведь она и с сетью толком не умеет работать... Такое впечатление, что это не язык программировани, а так - прикладная порграммка со встроенными скриптами... В общем, имхо, лучшего решения нет, как ставить в цикле, чего жделать я таки не буду. Сорри за многабукаф и спасибо тем, кто задумывались над сабжем.
350
25 декабря 2007 года
cheburator
589 / / 01.06.2006
Цитата: SkyM@n
В 1С так же ... у нее даже нет такого, как вывести MsgBox и ждать, пока не нажмешь на нем кнопку - то есть показал и дальше пошел интерпретировать код.


 
Код:
Предупреждение ("Какой-то текст"); // MessageBox с одной кнопкой - ОК
Вопрос ("Текст", "Заголовок", Режим, Таймаут, КнопкаПоУмолчанию); // Точно не помню параметры, но это полноценный MessageBox с произвольным набором кнопок

Дальнейшее выполнение блокируется до нажатия кнопки.
Также: ВвестиЧисло, ВвестиСтроку, ВвестиДату.
Цитата: SkyM@n
Такое впечатление, что это не язык программировани, а так - прикладная порграммка со встроенными скриптами...


Практически так и есть. Это узкоспециализированная система, заточена для работы с бухитогами/документами/справочниками и т. д.

По сабжу.

 
Код:
f = obj.SetData(x)

На какой стороне этот код исполняется?
Да впрочем, неважно. ИМХО, проблема надуманная, поскольку механизм OLE при удаленных вызовах сам блокирует выполнение, пока удаленная процедура не отработает.
251
25 декабря 2007 года
SkyMаn
1.7K / / 31.07.2007
Да, кстати, забыл отписать - проблема решена.
Оказывается, остановка происходит, пока данные не вернутся и это очевидно.
Просто мне надо было чаще спать )

2cheburator тем не менее, спасибо
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог