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

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

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

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

от

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

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

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

На периферии также запущен radius, который соединяется с Центральным и забирает файлы из своей папочки и кладет их в нужную папку уже на периферии...
28 Salimbek
 
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 магазина
33 Salimbek
 
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-технологией...
36 mishaPH
 
модератор
10.06.20
15:01
(27) у нас счас ондрайв этим занят. но не надежно
37 fisher
 
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
40 MyNick
 
10.06.20
15:30
(0) делаю просто.
На стороне веба в полях отслеживаемой таблицы есть поле updated_at (timestamp).
В 1С на плане обмена - актуальная его версия.
Подключаемся, кидаем timestamp в параметры api.
Сервер (веб) отдает записи начиная с этого времени.
Успешно загрузили в 1С, сдвинули границу. Следующее вычитывать будем с нее.
Можно долбить веб хоть каждые 10 секунд.
41 p-soft
 
10.06.20
15:32
(0) есть веб-сервер и клиент, делал на дельфях под удаленное резервирование для 77.
42 mishaPH
 
модератор
10.06.20
16:23
(41) можно подробности
43 Либерал
 
10.06.20
16:34
(0) если там еще 77 стоит в магазинах, тогда нужно юзать и для обмена такие же древние технологии))

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

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

Еще вариант - на OneScript - будет быстрее, чем сервис на 1С, на уровне питона, при этом на языке 1С
52 mishaPH
 
модератор
11.06.20
10:57
(50) ну вот судя по всему собираемся так и сделать. отдельную базу сервер рядом с ерп которую будут насиловать 1ски из магазина а она уже будет с ерп более умно работать.
53 Salimbek
 
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 и как службу с тем, чтобы он сам постоянно проверял сервер, также можно настроить автозапуск команд, если что-то пришло... При желании - разобраться не сложно.