Вход | Регистрация
 

интеграция 1с с веб

интеграция 1с с веб
Я
   mishaPH
 
10.06.20 - 13:45
В общем задача такая.
1. Есть магазин и там 1с клиент. работает себе. 1с 7.7
2. есть ерп с веб и апи

1с должна периодически получать некий сигнал коннектится 1 ерп по soap млм Json и получать задачу.
долбить ерп каждую минуту с вопросом а нет ли нам что.. не есть верно. когда 400 магазинов начинают впустую делать запросы это некрасиво.

Есть ли каким образом какой-то мессенджер с апи и т.п. который поднимается на компе где 1с, коннектится к ерп и ожидает от нее сигналов?
при получении оного выдает в порт ком (1с отлавливает) или тупо файлик на диске для 1с.

надеюсь объяснил понятно
   mishaPH
 
Модератор
1 - 10.06.20 - 13:46
поднимать на стороне где 1с вебсервисы, томкеты и проч байду очень не хочется т.к. админить очень сложно
   ДенисЧ
 
2 - 10.06.20 - 13:49
ну, с телеграмом и вибером интеграция даже в платформе уже скоро появится...
   ДенисЧ
 
3 - 10.06.20 - 13:50
Или найди программиста, который напишет примитивный сервер, который будет слушать порт и реагировать на его данные. А с ерп туда слать сигнал...
   polosov
 
4 - 10.06.20 - 13:53
(0) ВНЕЗАПНО тебе понадобилась интеграционная шина 1с.
   mishaPH
 
Модератор
5 - 10.06.20 - 13:55
(4) ? странный вопрос. она есть просто хочется эффективней. (2) его надо ставить локально. привязка к тел и проч. (3) ну вот я об этом. может есть готовые решения
   Кирпич
 
6 - 10.06.20 - 13:58
(5) какое может быть готовое решение. никто не знает ничего про твои сервисы и семерки
   Кирпич
 
7 - 10.06.20 - 14:00
А так можно самому сляпать http сервер на golang или ноде.
   mishaPH
 
Модератор
8 - 10.06.20 - 14:02
(6) причем тут 1с. нужен клиент который чтото слушает и при получении сигнала что-то выдает в ком порт или файл
   mishaPH
 
Модератор
9 - 10.06.20 - 14:03
(7) Это должна быть прога простая. магазинный комп, поднимать там http сервера и обслуживать - опухнет админ с 300 магазинов
   Salimbek
 
10 - 10.06.20 - 14:04
(8) А чем отличается:
"долбить ерп каждую минуту с вопросом а нет ли нам что"

от

"коннектится к ерп и ожидает от нее сигналов"?
   mishaPH
 
Модератор
11 - 10.06.20 - 14:04
конечно можно слепить какую то хрень на яндекс диске. ондрайв и т.п. который в центре что то в каталог или кто то пишет и передает на клиента. но блин это так ненадежно
   mishaPH
 
Модератор
12 - 10.06.20 - 14:05
(10) коннект заявляет что он вот он по таким адресам такому порту  как скайп например. далее траффика нет он только слушает
   Кирпич
 
13 - 10.06.20 - 14:08
(9) пишешь http сервер из 20 строчек. Запускаешь на любом компе с DDNS. ерп шлет на него сигналы о том что там для кого то там что то готово. семерки периодически подключаются и проверяют есть там чо или нет
   Salimbek
 
14 - 10.06.20 - 14:08
(12) Видите ли - в указанной вами схеме - сия служба становится "Сервером" (а вы уверены - что везде у вас на местах белые ip-шники?). А ЕРП к ней "Клиентом" (и тут второй вопрос - ЕРП эта может выступать в роли клиента и поддерживать столько коннектов?)
   Кирпич
 
15 - 10.06.20 - 14:08
можно тупо через email
   ДенисЧ
 
16 - 10.06.20 - 14:08
Тут есть фанат дотнета с 1с... К нему обратись, пусть нарисует...
Ещё есть фанат голанга, к нему --""--

))
   Salimbek
 
17 - 10.06.20 - 14:09
А если по теме, то в такой большой очереди - лучше использовать специализированнные службы, типа того же RabbitMQ - в которые ЕРП выдает задачи, а магазины коннектятся и забирают себе свои сообщения. И пофиг этому Кролику - что к нему запросы идут каждую минуту - он на это и рассчитан.
   mishaPH
 
Модератор
18 - 10.06.20 - 14:10
(14) нет белых нет почти нигде
   etc
 
19 - 10.06.20 - 14:12
(0) помомему схема с "долблением" ERP как раз самая правильная. В обратную сторону "долбить" нецелесообразно, даже если там у всех белые IP как правильно заметил Salimbek.
Вводить дополнительную точку отказа посередине тоже рикованно.
   Кирпич
 
20 - 10.06.20 - 14:12
+(13) сервер нужен один. можешь захостится где нибудь за 100 руб и будет пахать. erp никто дергать не будеть
   etc
 
21 - 10.06.20 - 14:14
(0) сделай web/http-сервис максимально простым - без сложных запросов и алгоритмов. Он у тебя не только 400 запросов выдержит.
   Кирпич
 
22 - 10.06.20 - 14:19
+(20) да и хоститься не надо. erp же где то хостится :)
   ДенисЧ
 
23 - 10.06.20 - 14:26
Кстати, вариант с кроликом я бы обдумал...
   etc
 
24 - 10.06.20 - 14:26
Тут кстати в соседней ветке спрашивали про text/event-stream (Server-Sent Evets). Если бы 1C так умела оно тебе как раз подошло бы.
   Кирпич
 
25 - 10.06.20 - 14:30
(23) так кроликов тоже нужно устанавливать
   mishaPH
 
Модератор
26 - 10.06.20 - 14:31
(24) так вот если бы умела.. если бы это был клиент гдето на площадке а не магазин хрен знает где с 4G порой инетом да и комп старый .
   Salimbek
 
27 - 10.06.20 - 14:31
(0) "или тупо файлик на диске для 1с"

делали в таком виде: Центральная база генерирует файлы для периферийных баз и раскладывает их по папкам в каталог обмена на сервере. На сервере запущен Radius FTN-майлер.

На периферии также запущен radius, который соединяется с Центральным и забирает файлы из своей папочки и кладет их в нужную папку уже на периферии...
   Salimbek
 
28 - 10.06.20 - 14:33
(26) "а не магазин хрен знает где с 4G порой инетом да и комп старый"

Гы... история с Радиусом пошла из-за того, что периферийки были вообще без связи, и соединение было дозвоном по модему ))) Это сейчас выделенные линии, скоростные каналы и все такое...
   ДенисЧ
 
29 - 10.06.20 - 14:34
(25) Там же, где и ерп...
   ДенисЧ
 
30 - 10.06.20 - 14:34
(27) Радиус? Это сколько же лет назад? Сейчас давно моден binkd...
 
 Рекламное место пустует
   ДенисЧ
 
31 - 10.06.20 - 14:35
(28) А, модем... Тогда понятно
   Кирпич
 
32 - 10.06.20 - 14:35
(26) через email обменивайся. заведи ящик и шли письма от erp. в теме ID магазина
   Salimbek
 
33 - 10.06.20 - 14:41
+(28) Плюсы в том, что Радиус сам поддерживает докачку файлов при обрыве связи...
(30) binkd - а оно не тех же древних времен и даже древнее? У Радиуса хоть какой-то GUI есть )))
   ДенисЧ
 
34 - 10.06.20 - 14:42
(33) binkd, а не bink.
Последний коммит в кодобазу binkd'а я видел два года назад...
   ДенисЧ
 
35 - 10.06.20 - 14:43
(33) А зачем для этой хрени гуй вообще? Работает сервисом, сам поллит ноду... Создаёт файлфлаги при поступлении...
Я немного знаком с FTN-технологией...
   mishaPH
 
Модератор
36 - 10.06.20 - 15:01
(27) у нас счас ондрайв этим занят. но не надежно
   fisher
 
37 - 10.06.20 - 15:17
Для 8-ки встречал готовые ВК для этого (со встроенным веб-сервером). А для 7.7 уже не помню. Но поискать стоит.
   Кирпич
 
38 - 10.06.20 - 15:27

package main

import (
    "net/http"
    "strings"
)

/*
установить значение для магазина 100500
http://myhost.com/setevent/100500/lalala

получить значение для магазина 100500
http://myhost.com/getevent/100500
*/

func main() {
    //список магазинов
    mlist := map[string]string{
        "100500": "",
        "100501": "",
        "100502": "",
    }

    http.HandleFunc("/setevent/", func(w http.ResponseWriter, r *http.Request) {
        sp := strings.Split(r.RequestURI, "/")
        l := len(sp)
        if l > 2 {
            mg := sp[l-2]
            ev := sp[l-1]
            _, ok := mlist[mg]
            if ok {
                mlist[mg] = ev
            }
        }
    })
    http.HandleFunc("/getevent/", func(w http.ResponseWriter, r *http.Request) {
        sp := strings.Split(r.RequestURI, "/")
        l := len(sp)
        if l > 1 {
            mg := sp[l-1]
            v, ok := mlist[mg]
            if ok {
                w.Write([]byte(v))
                mlist[mg] = ""
            }
        }
    })
    http.ListenAndServe(":80", nil)
}

   Кирпич
 
39 - 10.06.20 - 15:27
примитивный сервер на go
   MyNick
 
40 - 10.06.20 - 15:30
(0) делаю просто.
На стороне веба в полях отслеживаемой таблицы есть поле updated_at (timestamp).
В 1С на плане обмена - актуальная его версия.
Подключаемся, кидаем timestamp в параметры api.
Сервер (веб) отдает записи начиная с этого времени.
Успешно загрузили в 1С, сдвинули границу. Следующее вычитывать будем с нее.
Можно долбить веб хоть каждые 10 секунд.
   p-soft
 
41 - 10.06.20 - 15:32
(0) есть веб-сервер и клиент, делал на дельфях под удаленное резервирование для 77.
   mishaPH
 
Модератор
42 - 10.06.20 - 16:23
(41) можно подробности
   Либерал
 
43 - 10.06.20 - 16:34
(0) если там еще 77 стоит в магазинах, тогда нужно юзать и для обмена такие же древние технологии))

1. эл.почтой рассылка файлов с данными из ЕРП регл.заданием - для 77 были же прекрасные длл лдя работы с эл.почтой
2. на сервере поднять фтп, туда так же файлы выкладывать, из магазинов забирать по расписанию запуская 77 с параметром "хочузабратьфайлики"

можно создать под это план обмена, и бросать из 77 квитанции в обратку
куда же надежнее и проще??
   mishaPH
 
Модератор
44 - 10.06.20 - 16:48
(43) фигня все это. фтп каталоги впн файлики. все отваливается теряется скорость опять не та
   Кирпич
 
45 - 10.06.20 - 17:00
(44) да запустил бы уже (38) и нет проблемы :)
Интересно, а Twitter такой фигней не занимается случайно
   Кирпич
 
46 - 10.06.20 - 17:03
правда там ошибочка есть небольшая, но если надо исправим
   p-soft
 
47 - 10.06.20 - 17:20
(42) есть маленький вебсервер и клиент к нему.
сервер висит службой на порту. управляется файлом параметров. может принимать и выполнять команды. на момент проекта как минимум умел по команде пихать запись в таблицу скл-сервера через хранимку, принимать по сети и сохранять в папку файл.
   p-soft
 
48 - 10.06.20 - 17:21
(47) клиент работает из командной строки, соответственно, все это отправляет/получает
   Salimbek
 
49 - 11.06.20 - 10:21
(44) Я еще раз порекомендую FTN-майлеры типа Радиуса или binkd - они изначально разрабатывались для работы с неустойчивыми и низкоскоростными каналами данных. С поддержкой докачки, с очень маленьким оверхедом. Если все же решишь попробовать - маякни, я тебе преднастроенные архивы Радиуса для сервера и клиента скину - попробуешь, посмотришь. Если понравится - дополнительных клиентов подключить - не проблема, объясню...
   pavig
 
50 - 11.06.20 - 10:35
(0)
Отдельный сервачок на голанге (да хоть отдельная конфгурация 1С с нуля с единственным http-сервисом), в который долбятся все 400 клиентов - не много, и рабочую базу нагружать не будет
Сервачок внутри себя должен знать, для кого появился пакет информации
То есть ERP сама в него тоже долбит и говорит, кому какая есть раздача
Если для очередного клиента появляется флаг, то сервачок при очередном запросе этого клиента возвращает ему этот флаг
   pavig
 
51 - 11.06.20 - 10:38
+ (50) 
Я бы написал на голанге - просто для собственного интереса
Но если бы надо было быстро, дешево и сердито, то написал бы на 1С, файловую базёнку, с нуля, оно тоже быстро удет отрабатывать

Еще вариант - на OneScript - будет быстрее, чем сервис на 1С, на уровне питона, при этом на языке 1С
   mishaPH
 
Модератор
52 - 11.06.20 - 10:57
(50) ну вот судя по всему собираемся так и сделать. отдельную базу сервер рядом с ерп которую будут насиловать 1ски из магазина а она уже будет с ерп более умно работать.
   Salimbek
 
53 - 11.06.20 - 13:05
(52) Вот ссылка: https://drive.google.com/drive/folders/1H3MppfzEG7L5qmS4p7SicXY1eGE3Or1n?usp=sharing
Радиус распаковываешь в корень диска C на сервере
Как службу можно его установить через radsvc /install от прав админа, но для начала проще просто запустить Radius.exe чтобы посмотреть - как работает, как файлами обменивается и т.д. Нужен проброс порта 24554 Новые точки - я просто добавляю в файл nodelist скопировав строчку выше и поменяв номер поинта, потом через gui делаю скомпилировать и далее прописываешь этот новый поинт в Fileboxes и в Node inspector, по умолчанию для обмена у меня используется папка c:\obmen\ - внутри папка in для файлов от перферии к серверу и папка out для файлов из сервера на периферию. Внутри подпапки для каждого из узлов

ббс - в корень диска С на клиенте. Запускаю вручную через батник starter.cmd, потому как надо было еще и 1С-ку мне одновременно запустить, а при выгрузке - сначала архивирую 1С-ку (про запас) и только потом отправляю файл. Отправка идет из папки boxes/to0 , входящее падает, соответственно в from0

Для нового периферийного узла - просто копируешь эту папку на новый комп, и правишь cfg - в начале - меняешь 41/1 на новый адрес и в конце, где 41/0 - указываешь ip-шник или dns-имя сервера вместо _server_.
Все.

Если хочется - можно установить этот binkd и как службу с тем, чтобы он сам постоянно проверял сервер, также можно настроить автозапуск команд, если что-то пришло... При желании - разобраться не сложно.


Список тем форума
Рекламное место пустует  Рекламное место пустует
2 + 2 = 3.9999999999999999999999999999999...
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.