Обмен данными через Web Сервисы c JSON

1. user1276913 04.03.20 08:53 Сейчас в теме
Всем привет) Есть две базы, они находятся на одном сервере, одна база с конфигурацией без БСП, вторая с конфигурацией на основе БСП. Необходимо передавать данные из базы БЕЗ БСП в базу с БСП. Передавать нужно записи из регистра сведений в табличную часть документа, причем создавать новые элементы справочников Контрагенты и Партнеры, если их нет в базе приемнике. Обмен должен работать ежедневно. Решили, что лучше реализовать через веб-сервис с помощью XDTO и JSON. Кто-нибудь знает какие-нибудь ссылки или последовательность шагов для реализации такого обмена? С JSON не работала, поэтому очень прошу помощи.
По теме из базы знаний
Найденные решения
15. VictorRGB2 13 04.03.20 10:01 Сейчас в теме
(10) можно поднять http сервис, по условию задачи обе базы локальные и это будет без заморочек
а json в 1С на уровне платформы уже поддерживает сериализацию и десериализацию, проблем с записью и чтением тоже нет как раньше все руками писать не требуется
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 72 04.03.20 08:58 Сейчас в теме
(1)Зачем вам JSON вообще? чем простой SOAP(XDTO) не устраивает?
7. RustamZz 04.03.20 09:32 Сейчас в теме
(1) Надо использовать те механизмы, которые вы знаете. Необязательно использовать технологии с модным названием, это не принесет ни скорости в разработке, ни в работе. Т.к. базы на одном сервере, то можно использовать например COM.
danjer74; +1 Ответить
9. nomad_irk 72 04.03.20 09:39 Сейчас в теме
(7)в условиях *nix COM не существует.
11. RustamZz 04.03.20 09:42 Сейчас в теме
(9) Я знаю. А где вы эти условия прочитали у автора?
13. danjer74 3 04.03.20 09:55 Сейчас в теме
(1)Да просто запросом выдернуть из регистра данные и заполнить структуру этими данными, структуры добавить в массив, массив завернуть в json и отправить. На другой стороне прочитать его и заполнить регистр. В принципе не сильно все сложно, информации по json навалом в интернете.
14. danjer74 3 04.03.20 10:00 Сейчас в теме
(1)Лучше использовать json. Запросом вытащить данные из регистра, завернуть каждую запись в структуру, структуры в массив, а его в json. Информации и примеров довольно много.
18. PLAstic 295 04.03.20 12:47 Сейчас в теме
(1) Если вы только-только соединяете эти базы, то уверен, у вас уже существуют идентичные сущности в обеих базах. А это значит, что у них уже разные идентификаторы. И так по каждому объекту конфигурации. Разная структура реквизитов, разные значения полей поиска у одинаковых элементов и пр.
Просто поверьте, вам будет дешевле найти разработчика, который всунет обрезанный механизм обмена БСП из исходной конфигурации и напишет правила регистрации и обмена.
Каждый обмен чреват нюансами. Попробуйте в них окунуться с тем, кто немного разбирается в программной части. Сядьте и сейчас прикиньте:
* По каким полям вы можете сопоставлять элементы каких сущностей и совпадают ли сейчас значения этих полей у идентичных сущностей?
* Бывают ли случаи, когда выгружать объект не надо вовсе или когда надо, но по определённым признакам (организация, признак проведённости, период и пр.)?
* Бывают ли случаи, когда нужны преобразования исходных данных или преобразования на стороне базы-приёмника?
Все эти проблемы вам придётся описывать кодом, если вы выберете технологии, отличные от механизма обмена по правилам.
e-9; RustamZz; +2 Ответить
3. user1276913 04.03.20 09:11 Сейчас в теме
Если проще через XDTO с помощью веб-сервис, то можно и так. Я пытаюсь понять, какой способ лучше. По сути, мне нужен «XDTO-пакет», для передачи контрагента. URL можно ли назначить в виде URL адреса , например
"company.com/1C/Kontragent". В этом пакете создать тип объекта, например "Kontragent", в котором есть реквизиты «Code» и "Name", с соответствующим типом "string"
Теперь надо создать второй XDTO пакет, который будет содержать информацию о партнерах "PartnerXDTO" в пространсте имен "company.com/1C/Partner", подключим директиву импорта "company.com/1C/Kontragent", для того, чтобы можно было использовать созданный нами пакет сериализации контрагента.Как-то необходимо создать регистр сведений. Потом уже создаем сам веб-сервис, как я понимаю?
4. nomad_irk 72 04.03.20 09:16 Сейчас в теме
(3) Все и без регистра сведений работает.
Создайте свой пакет XDTO, в нем создайте объекты нужной структуры и зависимостей, Используйте этот пакет и его структуру при формировании "ответа" функцией web-сервиса.
16. RustamZz 04.03.20 10:09 Сейчас в теме
(3) Если обмен будет простыми типами можно использовать платформенный XDTO, не создавая свои XDTO пакеты. В описании веб-сервиса тип возвращаемого результата ValueTable (http://v8.1c.ru/8.1/data/core)
Сериализатор = Новый СериализаторXDTO(ФабрикаXDTO);
Возврат Сериализатор.ЗаписатьXDTO(Запрос.Выполнить().Выгрузить());
5. user1276913 04.03.20 09:19 Сейчас в теме
Создаем пакеты XDTO в базе источнике, зависимости каким образом реализуем, интерактивно или программно?
6. nomad_irk 72 04.03.20 09:30 Сейчас в теме
(5) Да, в базе источнике. Зависимости реализуются в самом пакете XDTO, принцип такой же как указание зависимостей объектов в конфигурации 1С.
Откройте любой типовой ПакетXDTO и все вопросы отпадут.
8. VictorRGB2 13 04.03.20 09:37 Сейчас в теме
(5) при любом варианте настройка соответствия только программная, в случае XDTO чуть более интерактивная настройка самой схемы в конфигураторе.
на собственном опыте, принципиальной разницы нет, как по мне JSON проще потом поддерживать в случае изменений в схеме обмена
10. nomad_irk 72 04.03.20 09:40 Сейчас в теме
(8)JSON еще нужно дополнительно формировать, запихивать в SOAP, потом это все дело читать.
15. VictorRGB2 13 04.03.20 10:01 Сейчас в теме
(10) можно поднять http сервис, по условию задачи обе базы локальные и это будет без заморочек
а json в 1С на уровне платформы уже поддерживает сериализацию и десериализацию, проблем с записью и чтением тоже нет как раньше все руками писать не требуется
12. SyachinS 04.03.20 09:55 Сейчас в теме
По опыту - рекомендую использовать http сервисы и, все таки, JSON. Примеры есть на сайте.
17. user1276913 04.03.20 10:32 Сейчас в теме
Попробую через http сервис, через COM нельзя, так как разные версии у сервера базы источника и клиента приемника, обновить тоже нельзя до одинаковых версий.
Оставьте свое сообщение

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