Echofoe
@Echofoe
Веб-разработчик

Как организовать общение между базой данных 1с и django?

Доброго времени суток!
Поступила задача организовать общение между интернет-магазином, который спроектирован на python/django, и 1с базой. Цель - раз в сутки 1с должна делать обращение к БД интернет-магазина, найти товары по 6-значному коду (значения этого поля всегда одинаковы как в django, так и в 1с), свериться и 1с должна отдать значения остатков для каждого товара в БД интернет-магазина.
На данный момент есть база данных интернет-магазина, которая конечно же по своей структуре отличается от базы данных 1с.
Вопрос заключается в следующем: каким образом подойти к решению данной задачи и какие варианты существуют вообще в принципе? Вдруг кто-то сталкивался с похожими задачами и решал их, поделитесь, пожалуйста, своими решениями.
  • Вопрос задан
  • 598 просмотров
Решения вопроса 2
WhiteSsnoww
@WhiteSsnoww
Программист
В общем случае задачу обмена 1С с сайтом можно решить так.
На стороне 1С:
1. Создаем ПланОбмена и включаем в состав плана обмена объекты, изменения которых требуется выгружать на сайт
2. Создаем РегламентноеЗадание, которое раз в сутки или чаще запускает процесс обмена данными с сайтом
3. Пишем код на 1С, который забирает из ПланаОбмена новые зарегистрированные изменения, сереализует их в заданный формат - XML или JSON, и отправляет на сервер сайта через HTTPS-запрос.
4. После успешной выгрузки данных на сайт получаем от сайта номер квитанции, которая ранее была отправлена на сайт. По номеру квитанции снимает с регистрации изменения на плане обмена, т.к. они подтверждены сайтом как принятые.

На стороне сайта:
1. Реализуем REST API для взаимодействия с 1С - чтобы 1С могла через HTTPS-запросы отправлять и получать данные.
2. Реализуем таблицу для хранения квитанций для ПланаОбмена 1С
3. Реализуем парсинг полученных данных из XML или JSON
4. Реализуем запись в базу полученных данных

PS На стороне 1С можно обойтись и без ПлановОбмена и выгружать данные выборкой запросом
Соответственно можно обойтись и без квитанций, т.к. это сущность для ПланаОбмена
Можно выгружать по одному объекту и снимать его с регистрации в ПланеОбмена сразу после 200 от сайта.

Вариантов много. Зависит от задачи и требований.
Ответ написан
Комментировать
@dimoff66
Кратко о себе: Я есть
При такой постановке вопроса сложностей вообще нуль. Со стороны django делаете api отдающий данные по остаткам по соответствующему адресу. Со стороны 1С делаете get или post запрос и обрабатываете полученный результат.

Соединение = Новый HTTPСоединение("djangobasepath.com", 80 );
Ответ = Соединение.Получить(Новый HTTPЗапрос("/v8exchange/get"));
Данные = Ответ.ПолучитьТелоКакСтроку());


Далее читаете данные. Если это JSON - Переводите в JSON, примеров полно. И записываете в базу 1С.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Sgr_A
@Sgr_A
1С может взаимодействовать со сторонними системами посредством WEB- или HTTP-сервисов. Так же сюда можно отнести организацию обмена через файл (который, например, лежит на FTP).
Тут только остается понять, кто является инициатором вызова. Либо сайт опрашивает 1С, либо 1С по расписанию (регламентное задание) опрашивает сайт.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы