Взаимодействия сторонней системы с 1с

1. pyrkin_vanya 488 19.10.20 09:58 Сейчас в теме
Всем привет. Есть сторонняя система. Доступ к ней происходит через API. Какие есть в 1с возможности мгновенного оповещения?

Что надо? В этой системе пробивается чек, так вот в 1с надо чтобы этот чек был пробит на кассовом аппарате.

Пока что пришло в голову только подключить обработчик ожидания и опрашивать эту систему каждые 5 секунд например, ну и если есть данные, то печатать чек.

Может кто сможет посоветовать что-то другое?
По теме из базы знаний
Найденные решения
29. nomad_irk 76 20.10.20 09:30 Сейчас в теме
(28)Регламентное задание. Проверяем наличие файла, если результат положительный, то что-то там делаем.
1С не он-лайн учетная система, поэтому задержка в любом случае будет.
pyrkin_vanya; +1 Ответить
35. serg33rus 28 20.10.20 09:59 Сейчас в теме
(31) Тогда только регламентное задание. Тем более, что API у внешней системы есть, как я понял. С какой-то периодичностью ломиться к этому API и получать данные.
pyrkin_vanya; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. FatPanzer 19.10.20 10:30 Сейчас в теме
(1)
Пока что пришло в голову только подключить обработчик ожидания и опрашивать эту систему каждые 5 секунд например, ну и если есть данные, то печатать чек.

Ну вот еще! Че это я буду каждые пять секунд свою систему нагружать? Потребность возникает в сторонней системе - пусть она и беспокоится сама...

Вкратце так:
1. Сторонняя система генерирует событие, по которому происходит HTTP-запрос в 1С (ил WS).
2. На стороне 1С реализован HTTP-сервис, который обрабатывает HTTP-запрос сторонней системы - формирует документ, отправляет на печать и т.д.

Ну то есть - пусть сторонняя система меня вежливо просит, а я буду ей отвечать взаимностью. Но сам я за ней бегать не собираюсь...
vv2; ong1990; user1464234; +3 Ответить
4. pyrkin_vanya 488 19.10.20 10:37 Сейчас в теме
Ну на самом деле, это надо нам как 1сникам)) Но поменять систему можно. Любопытен вопрос как реализован обмен в режиме реального времени в битрикс24. Там ведь не публикуются никакие веб сервисы и прочее. И обработчика ожидания нет.


(3) Это придется публиковать 1с на веб вервисе. и придется в систему как-то передавать эту ссылку.

А тут желательно, чтобы настройка была на стороне 1с.
9. Ганс 19.10.20 11:29 Сейчас в теме
(1) Стояла та же задача.
Правильно сделать так как подсказывают коллеги сверху, т.е. на стороне сайта сделать сервис, который при оплате заказа будет посылать в 1с событие(в идеале номер заказа и флаг что он оплачен), по которому всё это дело будет отправлять на печать чек.
По факту, система сайта для меня тёмный лес, привлекать каких-либо программистов итд, бюджет не позволяет. поэтому сделал как обычно, по нашему, просто вписал в обмен с сайтом что если статус у заказа поменялся(с не оплаченного на оплаченный) то создавать и печатать чек, да получилось коряво, но работает, вроде никто не жалуется.
10. pyrkin_vanya 488 19.10.20 11:32 Сейчас в теме
(9)Как вы оповестили 1с об этом?
12. Ганс 19.10.20 11:40 Сейчас в теме
(10) у вас ведь есть обычный обмен между битриксом и 1с? вот в него я и дописывал, естественно на стороне 1с.
13. pyrkin_vanya 488 19.10.20 11:42 Сейчас в теме
(12)Увы, битрикс тут не причем. Битрикса нет. Это вообще посторонняя система. Это не интернет магазин. Короче к битриксу даже никакого отношения не имеет. К ней есть доступ только по API. Нужно написать с нуля примерно такую же синхронизацию.
15. Ганс 19.10.20 11:43 Сейчас в теме
(13) вам от туда приходят какие-то данные? Или только по вашему запросу?(когда вы обращаетесь в этот источник он отвечает вам, отправляя данные?)
16. pyrkin_vanya 488 19.10.20 11:44 Сейчас в теме
(14)
подключение из сторонней программы через comconnection или черз web/http сервисы


Придется 1с публиковать на веб-сервисе?
18. Vladimir-R 168 19.10.20 11:45 Сейчас в теме
(16) если через сервисы, да; через com - нет
19. pyrkin_vanya 488 19.10.20 11:46 Сейчас в теме
(18)

Но для связи по COM все равно нужен статический IP-адрес. Разрешение от файервола и прочее.

Это, к сожалению, не вариант.
17. pyrkin_vanya 488 19.10.20 11:45 Сейчас в теме
(15)Ну пока ничего не приходит. Вот как раз и вопрос в том, а какие есть средства, чтобы приходило?
21. Ганс 19.10.20 11:47 Сейчас в теме
(17)Есть вариант что-то дописывать в сторонней системе?
22. pyrkin_vanya 488 19.10.20 11:52 Сейчас в теме
(21)В принципе есть. Вроде программисты на той стороне лояльные к этому проекту. Если будет схема взаимодействия с 1с из этой системы, то думаю, они подправят ее.
23. Ганс 19.10.20 11:59 Сейчас в теме
(22) Тогда есть вариант на их стороне дописать веб сервис, который при оплате будет отправлять вам какой-то флаг. Вам на стороне 1с, нужно будет написать веб сервис, чтоб принять от них информацию, для данного метода вам необходимо будет опубликовать веб сервис(не всю базу, а только один веб сервис)

Либо второй вариант, тот который предложили вы, опрашивать их систему.
26. Vitaly1C8 19.10.20 14:19 Сейчас в теме
(1) Один из вариантов может выглядеть так:
1. из 1С которая пробивает чек мы запускаем обработку которая
ПередаточноеЗвено = СоздатьОбъект("MyObject.Connect");
НапечататьЧек = ПередаточноеЗвено.WaitForData();


2. На VB или любом языке которым владеем создаем COM - Объект "MyObject.Connect" с методом WaitForData();

3. Отлавливаем событие Сторонней системы : либо внутри WaitForData(), либо из сторонней системы записываем данные в файл,

4. WaitForData() не делает return до тех пор пока не получит данные для печати чека; это можно сделать с помощью WaitForSingleObject()
это гарантирует замирание обработки 1С до момента return
27. nomad_irk 76 19.10.20 14:22 Сейчас в теме
(26)Это все и средствами 1С реализовать.
28. pyrkin_vanya 488 20.10.20 09:27 Сейчас в теме
29. nomad_irk 76 20.10.20 09:30 Сейчас в теме
(28)Регламентное задание. Проверяем наличие файла, если результат положительный, то что-то там делаем.
1С не он-лайн учетная система, поэтому задержка в любом случае будет.
pyrkin_vanya; +1 Ответить
30. pyrkin_vanya 488 20.10.20 09:32 Сейчас в теме
(29) ну по сути как я и писал в самом начале. Обработчик ожидания сработает также.
33. nomad_irk 76 20.10.20 09:35 Сейчас в теме
(30)Верно, но обработчик ожидания - это в момент "простоя", а регл. задание - в любом случае.
Если БСП, то можно внешнюю обработку наваять, у меня так отложенное проведение документов работает для обмена.
pyrkin_vanya; +1 Ответить
34. pyrkin_vanya 488 20.10.20 09:35 Сейчас в теме
(29)я видел внешнюю обработку, которая подключала Dll и как раз в ней реализовано именно то что мне надо. Увы не обладаю другими языками и коллег таких нет в окружении, чтобы такую dll написать. Но это был хороший вариант.
2. Vladimir-R 168 19.10.20 10:20 Сейчас в теме
Изменить сторонюю систему так, чтобы по событию в той системе она подключалась к 1С и пробивала чек через 1С
5. pyrkin_vanya 488 19.10.20 11:15 Сейчас в теме
(2)А каким образом эта система поймет что нужно послать данные именно в определенную 1с? Какие есть для этого средства?
6. FatPanzer 19.10.20 11:22 Сейчас в теме
(5) Каким её запрограммируете - таким и поймет.
7. pyrkin_vanya 488 19.10.20 11:24 Сейчас в теме
(6)
Каким её запрограммируете - таким и поймет.

Можете привести примеры конкретные какими средствами такое делается?
8. FatPanzer 19.10.20 11:28 Сейчас в теме
(7) Что значит КАКИМИ? Точно такими же, по которым 1С поймет, что вот этот чек из сторонней системе должна пробивать именно она, а не другая система 1С (при вашем варианте, когда 1С сама опрашивает сторонние системы на предмет события). Ведь какой-то идентификационный механизм должен быть предусмотрен? Может идентификаторы систем, может маппинг критериев документов - все зависит от логики вашей системы.

Весь вопрос только в том - чья сторона будет заниматься идентификацией. В остальном - никакой разницы.
11. pyrkin_vanya 488 19.10.20 11:35 Сейчас в теме
(8)Уважаемый, не кричите. Не хотите, не участвуйте в общении. Вас никто не заставляет. Но делать из меня идиота, не очень хорошо. Я впервые столкнулся с подобной задачей. Поэтому и спрашиваю. Ваши сообщения звучат примерно так:

Вопрос: "Как ездить на машине?"
Ваш ответ: "Берешь и едешь, также как и все."
Вместо: "Включаешь первую передачу, плавно отпускаешь сцепление и прибавляешь одновременно газ. Для того, чтобы тронуться с места, этого достаточно".
Понимаете разницу?
Если Вас настолько раздражает эта тема, просто пройдите мимо.
20. FatPanzer 19.10.20 11:46 Сейчас в теме
(11) Давайте-ка тут без указаний, ага? Это задача по обычной интеграции и встроенным механизмам 1С. Перефразируя ваш пример, вы напоминаете водителя автомобиля, который пришел с вопросом "Как правильно поменять колесо? Не кричите, а то я только сцепление пока выучил."

Вот у вас есть идея:
Пока что пришло в голову только подключить обработчик ожидания и опрашивать эту систему каждые 5 секунд например, ну и если есть данные, то печатать чек.
Вы её реализовали? Вы её продумывали? Что вас в ней смущает?
Или вы еще вообще не продумывали, на бумажке схемы не чертили, а сразу сюда?
Мне вот жутко интересно...
14. Vladimir-R 168 19.10.20 11:43 Сейчас в теме
подключение из сторонней программы через comconnection или черз web/http сервисы
24. serg33rus 28 19.10.20 12:49 Сейчас в теме
http-сервис - самое то в данном случае. При публикации 1С указываешь, что публикуешь ТОЛЬКО один http сервис. В файле default.vrd явно указываешь пользователя "site" которому запрещено все, кроме конкретного http сервиса. И получается что по опубликованному адресу нельзя сделать ничего кроме как дернуть http-сервис/ Еще неплохо будет закрыть url средствами веб-сервера. Начиная от авторизации и заканчивая строгим указанием ip адресов с которых можно обращаться. При такой реализации http-сервис будет безопасен для системы. Т.е. войти извне и начудить будет невозможно. Если 1С внутри, то на внешнем ip настроить проброс портов и сделать чтобы обращение шло на какой-нибудь левый порт. Ну чтобы не бомбили почем зря. Как-то так.
31. pyrkin_vanya 488 20.10.20 09:33 Сейчас в теме
(24)это нужно веб сервер ставить. Настраивать. Это не вариант.
35. serg33rus 28 20.10.20 09:59 Сейчас в теме
(31) Тогда только регламентное задание. Тем более, что API у внешней системы есть, как я понял. С какой-то периодичностью ломиться к этому API и получать данные.
pyrkin_vanya; +1 Ответить
25. starik-2005 3050 19.10.20 13:06 Сейчас в теме
А насколько быстро нужно "пробить" чек? Ведь для онлайн-чеков можно и раз в час запускать регламент. А если нужно мгновенно, то 5 сек - это, ИМХО, достаточно большое количество времени. А так - после обмена со сторонней системой бить чеки, периодичность обмена на свое усмотрение. Будет как в битриксе.
32. pyrkin_vanya 488 20.10.20 09:33 Сейчас в теме
(25)ну задержка в 5 - 10 секунд приемлема.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот