8.х Мониторинг API событий из 1С

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем sn.delui, 6 апр 2010.

  1. TopicStarter Overlay
    sn.delui
    Offline

    sn.delui

    Регистрация:
    20 авг 2008
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Постановка задачи:
    Имеется внешнее устройство, которое при различных событиях шлет API сообщения.
    Необходимо ловить эти сообщения в 1С

    Сама 1С ловить такое не может, поэтому нужно писать внешнюю компоненту (фактически транслятор), которая будет через PeekMessage ловить эти сообщения и через ExternalEvent пересылать их в 1С.

    Вопрос:
    Как и где организовать постоянный мониторинг получаемых сообщений?
    Если например в компоненте сделать метод Activate и положить в него следующий код:
    While PeekMessage(Msg,0,0,0,pm_remove) do
    begin
    iEvent.ExternalEvent(c_AddinName, '22222','22222');
    end;

    то 1ска виснет (вернее постоянно бегает по этому циклу).

    Подскажите пожалуйста.
    Заранее спасибо за ответы.
  2. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Вам надо установить обработчик ожидания и интервал вызова обработчика. Т.е. проверять не постоянно, а с какой-то периодичностью.
  3. TopicStarter Overlay
    sn.delui
    Offline

    sn.delui

    Регистрация:
    20 авг 2008
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Спасибо, но этот метод накладывает ограничение на частоту проверки: если значение второго параметра меньше 1 (это ведь 1 секунда?), то третий параметр должен быть Истина (т.е провека осуществится всего лишь раз)
    Возможно ли как-нибудь обойти это?
  4. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    1С - это учетная система и она не приспособлена для подобных задач.
    Что за такая необходимость в подобном частом опросе?
  5. TopicStarter Overlay
    sn.delui
    Offline

    sn.delui

    Регистрация:
    20 авг 2008
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    Интеграция Коллцентра и 1С.
    От коллцентра приходят сообщения: взодящий звонок, трубку взяли, трубку положили, и т.п, и необходимо обрабатывать эти сообщения в 1ске, и в зависимости от сообщений делать те или иные действия.
    В принципе одной секунды должно хватить, но тогда есть другой вопрос:
    Я не очень понимаю, PickMessage ведь наверное берет сообщения из какого-то стека (ну или что-то в этом роде). После обработки, он удалит сообщение из стека. Что считается "обработкой" сообщения? Может быть в данной ситуации лучше использовать GetMessage? А как потом руками удалять сообщения из стека после использования GetMessage?
    И еще вопрос: на момент считывания в стеке наверняка будет не одно сообщение. Как организовать перебор всех этих сообщений?
  6. Pasha
    Offline

    Pasha Опытный в 1С

    Регистрация:
    25 авг 2007
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    Бывают и другие задачи... Меня, например, старый знакомый все мучает вопросами про роботизированный склад, чтобы его как прикрутить к 1С, или, наоборот, 1С прикрутить к складу.... Всвязи с кризисом идея немного поугасла, но недавно опять всплыла. У него опять или воровать начали или кладовщики-комплектовщики снова жестко косячат.
  7. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Кхм, а зачем это сразу в 1С пихать? Посмотрите, как реализованы системы доступа, например. Их интеграция с 1С не предполагает моментального оповещения учетной системы.

    А что понимается под роботизированным складом?
  8. Pasha
    Offline

    Pasha Опытный в 1С

    Регистрация:
    25 авг 2007
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    Ну так для общего ознакомления - www.unitronics.com/Content.aspx?page=Mini
    только, насколько я понимаю, платформу было решено взять АББшную, я тогда на переговоры эти не поехал, честно говоря очень скептически к подобной затее отнесся. Но идея бродит и тлеет. У нас ведь с ихней (буржуйской) софтиной складской работать - все равно мост к 1С городить. Или дублировать товарооборот вручную.
  9. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Понял, знаю эти системы немного.
    Давайте начнем с другого - что нужно с этими событиями делать? Во что они трансформируется в 1С?
  10. Pasha
    Offline

    Pasha Опытный в 1С

    Регистрация:
    25 авг 2007
    Сообщения:
    65
    Симпатии:
    0
    Баллы:
    26
    Конкретно с robotic warehouse - 1С выгружает в систему склада BOM (bill of materials), склад собирает заказ и... поскольку БАРДАК - это нормальное состояние склада ручного (давайте будем честными!!!!) и, думаю, косяки возможны и в автоматизированном, нужна динамическая обратная связь. Ну и, естественно, команда перевести зарезервированную номенклатуру в отгруженную, начать печатать документы, там всякие фактуры и пр.
    еще раз повторяю - я скептик. Нам бы научиться вордовские документы не форматировать пробелами, а уж замахиваться на всякие нанохайтеки...
  11. TopicStarter Overlay
    sn.delui
    Offline

    sn.delui

    Регистрация:
    20 авг 2008
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    что нужно?
    коллцентр регистрирует входящий звонок на линии
    у оператора на экране в 1ске сразу же появляется сообщение о входящем звонке
    он берет трубку
    коллцентр регистрирует взятие трубки
    окно о входящем звонке закрывается и создается документ "звонок"

    и т.п

    на данный момент решаю свой вопрос следующим образом: создал новый поток в dll и повесил на него постоянный опрос на появление новых событий
  12. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    :) Сколько по времени происходит сбор заказа? Может ли оператор в этом время что-то делать?
    Т.е. можно ли утверждать, что при нажатии кнопки СОБРАТЬ оператор ждет окончания сбора заказа складом?

    А нафига окно появляется средствами 1С? Повесить резидент, который будет выводит данное окно, при взятие трубки он генерит внешнее событие в 1С, которое и формирует необходимый документ.
    Т.е. 1С реагирует на событие взятия трубки, а не сам звонок. Тем самым снимется нагрузка на учетную систему и работать будет без проблем.
  13. TopicStarter Overlay
    sn.delui
    Offline

    sn.delui

    Регистрация:
    20 авг 2008
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    желание клиента все окна видеть в 1С, т.к они привыкли к ней, и она им нравится. Если уж на то пошло, то у производителей коллцентра есть свой хороший клиент, но задача стоит в том, чтобы реализовать все именно в 1С
  14. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Тогда видоизмените функционал - резидент делает внешнее событие в момент звонка.
    Но это неверное решение. К слову - какая разница, где будет окно? Если в момент звонка какое-либо окно будет открыто модально - будет вообще фигня.
  15. TopicStarter Overlay
    sn.delui
    Offline

    sn.delui

    Регистрация:
    20 авг 2008
    Сообщения:
    6
    Симпатии:
    0
    Баллы:
    1
    почему фигня? окно будет открыто модально у конкретного оператора.
    задача оператора - отвечать на звонки.
    либо он берет трубку, либо не берет и звонок отобразится в непринятых вызовах.
    видоизменять уже ничего не будем, т.к сейчас вроде удалось добиться работоспособности dll

Поделиться этой страницей