Имя: Пароль:
1C
1С v8
Обмен между мобильными приложениями 1с в сети без доступа к интернету
,
0 Noxvil
 
19.06.19
16:30
Добрый день.
Есть 2 мобильных устройства с мобильным приложением в сети без доступа к интернету.
Обмен между ними решили построить по принципу хранения в файлов с наименованием ID документа в определенной папке.
Перед формированием нового документа мобильное приложение лезет в папку, ищет все файлы с ID, которые не содержатся в базе и загружает.

Если более правильное решение?
Сейчас придумали только FTP и фоновое задание + принудительный запуск для проверки наличия документов на другом устройстве перед созданием документа.
Раньше думали использовать push от firebase, но api предполагает выход в интернет.
1 yzimin
 
19.06.19
16:34
Какая принципиальная разница, есть инет или нет, если все устройства в одной сети? бери делай обмен через веб-сервисы на локальных IP
2 Garykom
 
гуру
19.06.19
16:41
(0) Хочу сказать что вы слегка не понимаете сложность задачи.

А упомянув в одном посте в позитивном смысле про планы/придумали FTP и 2 мобильных устройства меня дико насмешили...
3 Garykom
 
гуру
19.06.19
16:42
Советую нанять уже вменяемого программиста, который в курсе про http, rest и прочие сложные слова.
Задачка делается банально и даже без выделенного сервера с закрепленным ip можно.
4 Garykom
 
гуру
19.06.19
16:44
(3)+ Банально правильными инструментами, FTP к таковым не относится как и SMB/Samba c расшаренными папками.
5 ads55
 
19.06.19
16:45
(0) "ищет все файлы с ID, которые не содержатся в базе" - зачем? Трафик и время занимать? Можно Новый УникальныйИдентификатор. Или что там у Вас.
Проще веб-сервер развернуть.
6 Garykom
 
гуру
19.06.19
16:47
(5) Сервером может быть одно из МП само или даже каждое МП, а прочие сканируя ip находят активные в сети и обмениваются, каждое с каждым.
7 ads55
 
19.06.19
16:53
(6) "Сервером может быть одно из МП само или даже каждое МП, а прочие сканируя ip находят активные в сети и обмениваются, каждое с каждым." - тогда у каждого МП должна хранится вся база сообщений, иначе ID могут задвоиться. Я правильно понимаю?
8 Garykom
 
гуру
19.06.19
16:55
(7) уид уникальны с некоторой очень высокой вероятностью
9 Noxvil
 
19.06.19
22:07
(6) а что нужно, чтобы поднять веб сервис на мобильном приложении? Для винды нужен iis или apach.
А что нужно для анроида?

Вы уже делали подобные вещи? Примера в интернете я не нашёл...

Сканируя все ip в сети? Можно пример?
Возможно ли настроить, если адрес динамический?
10 Garykom
 
гуру
19.06.19
22:12
(9) Бесплатно?
11 Noxvil
 
19.06.19
22:18
(10) Ну вообще-то - это форум, здесь обмениваются информацией и опытом.
Если ты хочешь что-то предложить - предложи.
12 DGorgoN
 
19.06.19
22:25
13 DGorgoN
 
19.06.19
22:29
Ну а вообще если так подходить то сервак то нужен. Иначе при превышении определенного уровня клиентских устройств они беспрерывно будут друг друга сканировать да и место где будет всё, т.е. центральная база всё равно понадобится. Я бы сделал просто опрос серверов по списку - ip локальной сети и ip глобальной сети - с приветствием по протоколу, с прям доступом к бд или 3-х звенкой или даже с 4 звенкой если в качестве обработчика будет выступать 1с или onescript.
14 Noxvil
 
19.06.19
22:35
(13)
К сожалению, версию для пк с веб сервером развернуть технически не получается - задача бы легко решалась.
Сканировать все порты - не самый оптимальный путь, по моему мнению.
Думал опрашивать через firebird в начале, а потом хранить ip друг друга на обоих устройствах.
(12) Я имел ввиду какой то пример, регламентированный самой 1с.

В любом случае - спасибо
15 Garykom
 
гуру
19.06.19
22:37
(14) Не все порты, а один порт по всем доступным ip и запоминаем какой отозвался правильно на нужном порту.
Если больше не отвечает этот ip то снова сканируем и ищем новый правильный ip сервера.
16 Garykom
 
гуру
19.06.19
22:38
(15)+ Доступные ip для скана банально вычисляются по своему ip и маске подсети.
17 Garykom
 
гуру
19.06.19
22:40
(12) Первая ссылка слишком сложно, проще банальнейшее приложение навать на чем угодно под android или под ios.
Которое роль специфического отдельного сервера играет и даже на том же мобильном девайсе где сервер приложение 1С работает с ним по http через localhost.
18 Garykom
 
гуру
19.06.19
22:41
(17)+ МП 1С при запуске сначала пробует 127.0.0.1:НашПорт если отозвалось то ок у нас на борту сервер, если нет то начинаем сканировать доступные ip по НашПорт ища сервер.
19 Garykom
 
гуру
19.06.19
22:43
Приложение "сервер" пишется за несколько часов кста.
20 Garykom
 
гуру
19.06.19
22:51
Хм можно и ВК для МП 1С наваять и некий фреймворк на 1С для работы с этим.
И распределенную базу на мобильной платформе 1С сделать ))
21 Noxvil
 
19.06.19
22:51
(18) Я немного запутался...
Ты предлагаешь написать мобильное приложение для андройда (не на платформе 1с), которое будет выполнять роль сервера?
Для меня это не звучит как "задачка делается банально", потому что в этом случае - надо поддерживать 2ую программу.
Я могу ошибаться, ты можешь это аргументировать?
22 Garykom
 
гуру
19.06.19
23:02
(21) Уже есть готовые но они или статика или php
https://play.google.com/store/apps/details?id=com.esminis.server.apache&hl=ru
https://play.google.com/store/apps/details?id=com.esminis.server.php&hl=ru

И да предлагаю написать готовое простейшее которое например файлами JSON обмениваться позволяет.
Т.е. 1С может сохранять файлы и получать их, получаем простую документную базу данных.

Как 1С эту базу будет использовать уже на усмотрение.

Суть в том что будет несколько операций на сервере:
1. Выдать весь список файлов (возвращает УИДы файлов и какой клиент записал)
2. Получить файл по УИД
3. Записать файл по УИД
4. Удалить файл по УИД

Дальше мобильные приложения 1С спокойно общаются друг с другом используя эти 4 операции.
И обмениваются нужными данными.
Внутри файлов уже что угодно может быть, например можно выделить служебный УИД для имен клиентов, где в JSON формате внутри их имена и ip.
Можно выделить УИД для файла в котором перечислены виды справочников или документов и их УИДы, где уже записаны конкретные УИДы элементов этих справочников или объекты документы.

Блин это сложно на словах но в использовании достаточно просто.

На языке 1С это "дай мне список номенклатуры" - внутри там ищется сервер, берется служебный файл где описаны все справочники, находится в каком файле хранятся элементы номенклатуры и и получается все нужные элементы, можно даже с отбором.
Это довольно медленно работает по сравнению с SQL базами но вполне достаточно быстро для практических задач.
23 Garykom
 
гуру
19.06.19
23:04
(22)+ Или же вместо этого универсального сервера (но который не надо менять при допиливании твоего мобильного приложения 1С) где вся логика на клиентах.

Можно сделать сервер под твое приложение. Но да в этом случае при изменениях твоего его тоже придется допиливать, но зато скорость работы намного выше и проще использовать из 1С.
24 pavig
 
19.06.19
23:07
(0)
Просто поднимите например CouchDB в локалке, она вроде преспокойно из коробки умеет в JSON (могу ошибаться). Это NoSQL СУБД, довольно комфортная и удобная.
25 Garykom
 
гуру
19.06.19
23:11
(24) Можно и так, вроде есть сборки под android.
Лично мне чем разбираться с этими сборками проще самому наваять, понятно всего функционала CouchDB/Couchbase не будет.
26 Сияющий в темноте
 
19.06.19
23:15
на голом андройде прекрасно отправляются и получаются широковещательные запросы,то есть периодически можно опрашивать друг друга.
есть всякие способы хранения данных так,чтобы они были доступны друг другу.
но,на каждом узле все равно придется хранить все данные,которые поменялись,чтобы иметь возможность их передать другим.
задача сильно усложняется,если мы предполагаем кеширование данных нп других узлах,тогда узел А попав в сеть передаст кому-то там все изменения,а потом узел Б попав в эту же сеть сможет получить изменения оь узла А даже если его нет в сети.
27 Garykom
 
гуру
19.06.19
23:18
(26) На этапе регистрации приложения можно разрулить некими уникальными id еще как.
28 Garykom
 
гуру
19.06.19
23:19
(27)+ Точнее сразу надо и версии заложить по уму, чтобы несколько МП 1С могли например один сервер использовать.

И каким образом мобильное приложение 1С сможет широковещательные запросы отправлять/принимать?
29 Garykom
 
гуру
19.06.19
23:23
(26) И да когда разные сети это уже какой то блокчейн получается ))
30 Noxvil
 
19.06.19
23:30
(22) Вот примерно это я хотел сделать на FTP в виде файлов.
Сейчас понимаю, что минимум - надо поднимать небольшой сервис с бд.

По конкретному посту - ты сейчас говоришь о мобильном приложении, которое ставится на каждый мобильный телефон.
Является сервисом (прослойкой), то есть:
- мобильное приложение 1с с другого телефона отправляет запрос
- данная программа получает его
- подключается к мобильному приложению на текущем телефоне
- получает ответ
- отдаёт ответ на мобильное приложение 2ого телефона
31 Garykom
 
гуру
19.06.19
23:33
(30) Достаточно чтобы на одном мобильном девайсе оно стояло, которое будет играть роль сервера и всегда должно быть включено и в сети.
32 Garykom
 
гуру
19.06.19
23:33
(31)+ Ну или добро пожаловать в мир блокчейна лайт версии ))
Где каждый телефон может быть сервером и как то надо синхронизировать между ними данные.
33 Noxvil
 
19.06.19
23:40
(32) Тут именно вопрос в push. Предполагал, что легко реализовать.
Сервис можно сделать в локальном варианте и обмениваться данными с ним, но не очень нравится идея регламентного опроса.
По поводу блокчейна - забавно, но "сложно" выглядит.

Спасибо за информацию, если понадобится решение "лайт версии блокчейна" - обращусь в личку.
34 Garykom
 
гуру
19.06.19
23:40
(33) Для пушей нужен внешний сервис
35 Garykom
 
гуру
19.06.19
23:41
А так вот это быстрее всего в проду засунуть если из готового и только на 1С писать
https://github.com/couchbase/couchbase-lite-android

Но для нормального проекта проще свою ВК наваять для мобильной 1С.
36 Garykom
 
гуру
19.06.19
23:41
(35) *лучше свою ВК