Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Выбор протокола синхронизации

Выбор протокола синхронизации
Я
   PaulSeiziger
 
09.07.19 - 16:15
Привет!
Подскажите, самое оптимальное решение для моей ситуации:
Имеем несколько 1С, с которыми должна взаимодействовать наша программа (на Java).
Программа должна добавлять, изменять и удалять контрагентов в этих базах, а также уметь выводить списки этих контрагентов и выставлять счета (с возможностью отправки на печать и сохранения в PDF).

Какой протокол взаимодействия для этого лучше использовать?
В данный момент использую odata. Мне не нравится то, что приходится выгружать всё, что есть в каждой из баз, чтобы узнать, были ли изменения. Также в данный момент я не понимаю, как мне проверять удаление элемента на стороне 1С (есть DeletionMark, но я банально могу не успеть отследить его изменение, если будет вызвана процедура очиски помеченных на удаление элементов).

Я думаю заменить odata http-сервисом. Удачное ли это решение? Какие подводные камни могут быть? Или вообще синхронизироваться как-то иначе?
 
 
   Лефмихалыч
 
1 - 09.07.19 - 16:17
http-сервис на стороне 1С поднять

страданий с удалением не понял. Расскажи подробности.
   PaulSeiziger
 
2 - 09.07.19 - 16:41
(1) Я думаю, что поле DeletionMark в Odata - это, по сути, пометка на удаление. Сканирование обновлений я выполняю раз в 15 минут, при этом запрашивая все сущности (возможно, есть способ составить условие, чтобы этого не делать?). Если в моей базе уже присутсвует эта сущность, то я заменяю ее данными из 1С. Что, если в этом 15-минутном интервале произойдет пометка на удаление и вызов процедуры очистки помеченных на удление элементов? Я в таком случае просто не получу никакой информации об этой сущности и, соответсвенно, не применю изменений к своей базе.
   Dotoshin
 
3 - 09.07.19 - 17:03
(2) Если суть задачи в синхронизации данных между 1С и вашей программой, то есть смысл использовать планы обмена. В плане обмена регистрируются все произошедшие изменения. Вам нужно каким то образом получать эту информацию из плана обмена и синхронизировать данные в своей программе. Далее в плане обмена нужно удалить синхронизированные элементы.
Это можно сделать разными способами. Все зависит от конкретной ситуации.
   Вафель
 
4 - 09.07.19 - 17:03
может стоит рассмотреть 2х сторонний обмен?
когда 1с сама инициализирует обмен с вашей прогой?
   Dotoshin
 
5 - 09.07.19 - 17:07
(4) Тут вопрос в том как его программа будет давать ответ.
   Вафель
 
6 - 09.07.19 - 17:10
(5) как нужно будет так и будет давать.
сами же пишут
   Garykom
 
7 - 09.07.19 - 17:13
(0) Имхо лучшее решение в вашей ситуации это нанять хорошего программиста 1С.

Потому что задачу которую вы пытаетесь решить через одно место, легко и просто решается о стороны 1С.
   Лефмихалыч
 
8 - 09.07.19 - 17:22
(2) а на какой пень ты к себе складируешь эти данные? Чтобы половчей потом позатрахиваться с удалениями вот этими или под этим есть какое-то еще логическое обоснование?
   PaulSeiziger
 
9 - 09.07.19 - 17:31
(8) Потому что не все сущности, создаваемые через эту программу, должны синхронизироваться с 1С. Некоторые должны быть доступны только для локального использования.
   PaulSeiziger
 
10 - 09.07.19 - 17:36
(3) Спасибо, постараюсь поискать в этом направлении. Посоветуете какой-нибудь ресурс?
 
 Рекламное место пустует
   LLeonidov
 
11 - 09.07.19 - 17:36
(2) какое же похвальное стремление.
Все что нужно сделать это на стороне 1с использовать план обмена и после успешной записи объектов в "программе" сбрасывать признак изменения этих объектов в 1с.
Если объект окончательно удалят из базы. То со стороны 1с в таблице изменений все равно есть УИД этих удаленных объектов. Лично мне для целей обмена нравятся http сервисы, но это не важно.
   Dotoshin
 
12 - 09.07.19 - 17:37
(9) Тогда тем более не понятно.
   LLeonidov
 
13 - 09.07.19 - 17:37
(10) первая же ссылка в поисковике :) отличная статья. http://catalog.mista.ru/public/899200/
   LLeonidov
 
14 - 09.07.19 - 17:37
+(13) http://catalog.mista.ru/public/899200/ извиняюсь не та ссылка
   Dotoshin
 
15 - 09.07.19 - 17:42
(10) вот для примера https://programmist1s.ru/planyi-obmena-1s/
В общем гугли план обмена 1с. Статей полно
   Garykom
 
16 - 09.07.19 - 17:43
(14) Кроме планов обмена, можно просто подписку в 1С на нужные объекты.

Боюсь от планов обмена у программера на Java будет завихрение кое чего.
   Dotoshin
 
17 - 09.07.19 - 17:46
(16) Можно позвать на помощь программиста 1С,чтобы не было завихрений. Базы 1С кто-то обслуживает же....
   bolero
 
18 - 09.07.19 - 17:57
(2) Плюсую за план обмена.

У меня стоит задача некоторого обмена информацией между совершенно разнородными базами (это никоим разом не синхронизация), пришел к выводу, что проще всего завести узлы обмена.

Жаба пусть приходит, забирает XML с сообщением, оттуда дергает только то, что ей нужно, а в ответ пустую XML "сообщение принято".

На мой взгляд, завихрений будет значительно меньше, чем с подписками.
   Garykom
 
19 - 09.07.19 - 18:05
(18) думаешь так просто на java создать пустую xml по формату 1С?
   Лефмихалыч
 
20 - 09.07.19 - 18:42
   bolero
 
21 - 10.07.19 - 10:16
(19) иногда люди пытаются решить задачу академическим методом вместо прагматического. У тебя в голове уже наверняка завертелись всякие Factory, Builder, XSI, namespaces, а достаточно текстового шаблона, куда только номера сообщений подставлять.

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


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