Взаимодействия сторонней системы с 1с
Всем привет. Есть сторонняя система. Доступ к ней происходит через API. Какие есть в 1с возможности мгновенного оповещения?
Что надо? В этой системе пробивается чек, так вот в 1с надо чтобы этот чек был пробит на кассовом аппарате.
Пока что пришло в голову только подключить обработчик ожидания и опрашивать эту систему каждые 5 секунд например, ну и если есть данные, то печатать чек.
Может кто сможет посоветовать что-то другое?
Что надо? В этой системе пробивается чек, так вот в 1с надо чтобы этот чек был пробит на кассовом аппарате.
Пока что пришло в голову только подключить обработчик ожидания и опрашивать эту систему каждые 5 секунд например, ну и если есть данные, то печатать чек.
Может кто сможет посоветовать что-то другое?
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Ну вот еще! Че это я буду каждые пять секунд свою систему нагружать? Потребность возникает в сторонней системе - пусть она и беспокоится сама...
Вкратце так:
1. Сторонняя система генерирует событие, по которому происходит HTTP-запрос в 1С (ил WS).
2. На стороне 1С реализован HTTP-сервис, который обрабатывает HTTP-запрос сторонней системы - формирует документ, отправляет на печать и т.д.
Ну то есть - пусть сторонняя система меня вежливо просит, а я буду ей отвечать взаимностью. Но сам я за ней бегать не собираюсь...
Пока что пришло в голову только подключить обработчик ожидания и опрашивать эту систему каждые 5 секунд например, ну и если есть данные, то печатать чек.
Ну вот еще! Че это я буду каждые пять секунд свою систему нагружать? Потребность возникает в сторонней системе - пусть она и беспокоится сама...
Вкратце так:
1. Сторонняя система генерирует событие, по которому происходит HTTP-запрос в 1С (ил WS).
2. На стороне 1С реализован HTTP-сервис, который обрабатывает HTTP-запрос сторонней системы - формирует документ, отправляет на печать и т.д.
Ну то есть - пусть сторонняя система меня вежливо просит, а я буду ей отвечать взаимностью. Но сам я за ней бегать не собираюсь...
Ну на самом деле, это надо нам как 1сникам)) Но поменять систему можно. Любопытен вопрос как реализован обмен в режиме реального времени в битрикс24. Там ведь не публикуются никакие веб сервисы и прочее. И обработчика ожидания нет.
(3) Это придется публиковать 1с на веб вервисе. и придется в систему как-то передавать эту ссылку.
А тут желательно, чтобы настройка была на стороне 1с.
(3) Это придется публиковать 1с на веб вервисе. и придется в систему как-то передавать эту ссылку.
А тут желательно, чтобы настройка была на стороне 1с.
(1) Стояла та же задача.
Правильно сделать так как подсказывают коллеги сверху, т.е. на стороне сайта сделать сервис, который при оплате заказа будет посылать в 1с событие(в идеале номер заказа и флаг что он оплачен), по которому всё это дело будет отправлять на печать чек.
По факту, система сайта для меня тёмный лес, привлекать каких-либо программистов итд, бюджет не позволяет. поэтому сделал как обычно, по нашему, просто вписал в обмен с сайтом что если статус у заказа поменялся(с не оплаченного на оплаченный) то создавать и печатать чек, да получилось коряво, но работает, вроде никто не жалуется.
Правильно сделать так как подсказывают коллеги сверху, т.е. на стороне сайта сделать сервис, который при оплате заказа будет посылать в 1с событие(в идеале номер заказа и флаг что он оплачен), по которому всё это дело будет отправлять на печать чек.
По факту, система сайта для меня тёмный лес, привлекать каких-либо программистов итд, бюджет не позволяет. поэтому сделал как обычно, по нашему, просто вписал в обмен с сайтом что если статус у заказа поменялся(с не оплаченного на оплаченный) то создавать и печатать чек, да получилось коряво, но работает, вроде никто не жалуется.
(22) Тогда есть вариант на их стороне дописать веб сервис, который при оплате будет отправлять вам какой-то флаг. Вам на стороне 1с, нужно будет написать веб сервис, чтоб принять от них информацию, для данного метода вам необходимо будет опубликовать веб сервис(не всю базу, а только один веб сервис)
Либо второй вариант, тот который предложили вы, опрашивать их систему.
Либо второй вариант, тот который предложили вы, опрашивать их систему.
(1) Один из вариантов может выглядеть так:
1. из 1С которая пробивает чек мы запускаем обработку которая
2. На VB или любом языке которым владеем создаем COM - Объект "MyObject.Connect" с методом WaitForData();
3. Отлавливаем событие Сторонней системы : либо внутри WaitForData(), либо из сторонней системы записываем данные в файл,
4. WaitForData() не делает return до тех пор пока не получит данные для печати чека; это можно сделать с помощью WaitForSingleObject()
это гарантирует замирание обработки 1С до момента return
1. из 1С которая пробивает чек мы запускаем обработку которая
ПередаточноеЗвено = СоздатьОбъект("MyObject.Connect");
НапечататьЧек = ПередаточноеЗвено.WaitForData();
2. На VB или любом языке которым владеем создаем COM - Объект "MyObject.Connect" с методом WaitForData();
3. Отлавливаем событие Сторонней системы : либо внутри WaitForData(), либо из сторонней системы записываем данные в файл,
4. WaitForData() не делает return до тех пор пока не получит данные для печати чека; это можно сделать с помощью WaitForSingleObject()
это гарантирует замирание обработки 1С до момента return
(7) Что значит КАКИМИ? Точно такими же, по которым 1С поймет, что вот этот чек из сторонней системе должна пробивать именно она, а не другая система 1С (при вашем варианте, когда 1С сама опрашивает сторонние системы на предмет события). Ведь какой-то идентификационный механизм должен быть предусмотрен? Может идентификаторы систем, может маппинг критериев документов - все зависит от логики вашей системы.
Весь вопрос только в том - чья сторона будет заниматься идентификацией. В остальном - никакой разницы.
Весь вопрос только в том - чья сторона будет заниматься идентификацией. В остальном - никакой разницы.
(8)Уважаемый, не кричите. Не хотите, не участвуйте в общении. Вас никто не заставляет. Но делать из меня идиота, не очень хорошо. Я впервые столкнулся с подобной задачей. Поэтому и спрашиваю. Ваши сообщения звучат примерно так:
Вопрос: "Как ездить на машине?"
Ваш ответ: "Берешь и едешь, также как и все."
Вместо: "Включаешь первую передачу, плавно отпускаешь сцепление и прибавляешь одновременно газ. Для того, чтобы тронуться с места, этого достаточно".
Понимаете разницу?
Если Вас настолько раздражает эта тема, просто пройдите мимо.
Вопрос: "Как ездить на машине?"
Ваш ответ: "Берешь и едешь, также как и все."
Вместо: "Включаешь первую передачу, плавно отпускаешь сцепление и прибавляешь одновременно газ. Для того, чтобы тронуться с места, этого достаточно".
Понимаете разницу?
Если Вас настолько раздражает эта тема, просто пройдите мимо.
(11) Давайте-ка тут без указаний, ага? Это задача по обычной интеграции и встроенным механизмам 1С. Перефразируя ваш пример, вы напоминаете водителя автомобиля, который пришел с вопросом "Как правильно поменять колесо? Не кричите, а то я только сцепление пока выучил."
Вот у вас есть идея:
Или вы еще вообще не продумывали, на бумажке схемы не чертили, а сразу сюда?
Мне вот жутко интересно...
Вот у вас есть идея:
Пока что пришло в голову только подключить обработчик ожидания и опрашивать эту систему каждые 5 секунд например, ну и если есть данные, то печатать чек.
Вы её реализовали? Вы её продумывали? Что вас в ней смущает?
Или вы еще вообще не продумывали, на бумажке схемы не чертили, а сразу сюда?
Мне вот жутко интересно...
http-сервис - самое то в данном случае. При публикации 1С указываешь, что публикуешь ТОЛЬКО один http сервис. В файле default.vrd явно указываешь пользователя "site" которому запрещено все, кроме конкретного http сервиса. И получается что по опубликованному адресу нельзя сделать ничего кроме как дернуть http-сервис/ Еще неплохо будет закрыть url средствами веб-сервера. Начиная от авторизации и заканчивая строгим указанием ip адресов с которых можно обращаться. При такой реализации http-сервис будет безопасен для системы. Т.е. войти извне и начудить будет невозможно. Если 1С внутри, то на внешнем ip настроить проброс портов и сделать чтобы обращение шло на какой-нибудь левый порт. Ну чтобы не бомбили почем зря. Как-то так.
А насколько быстро нужно "пробить" чек? Ведь для онлайн-чеков можно и раз в час запускать регламент. А если нужно мгновенно, то 5 сек - это, ИМХО, достаточно большое количество времени. А так - после обмена со сторонней системой бить чеки, периодичность обмена на свое усмотрение. Будет как в битриксе.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот