1C глубокая интеграция, как сделать запись в базу?

Есть у нас задача по реализации глубокой интеграции сайта(интернет-магазин) с 1С.

1С имеет очень .. специфическую организацию, но с чтением данных из 1С мы разобрались.
Теперь необходимо передавать в 1С данные.
Поскольку - со структурой БД на чтении мы разобрались - идеальным вариантом нам кажется - писать напрямую в базу данных 1С.
Писать нужно заказы и клиентов.
Поток заказов большой и хочется держать 1С в максимально актуальном состоянии, например - операторы, по историческим причинам - работают именно с базой 1С, а не базой сайта, а клиенты часто звонят сразу с уточнениями по заказу, которого в базе "еще" нет по причине работы через "выгрузки".

С записью в 1С есть пока одна конкретная видимая проблема - генерация _IDref происходит по каким-то внутренним алгоритмам, совсем непонятным нам.

Как можно безопасно сгенерировать этот ID?
Какими способами можно вообще решать эту проблему?
Какие может еще есть интерфейсы для синхронного взаимодействия 1С и внешних систем?

Какие есть подводные камни в попытке реализовать синхронное взаимодействие 1С с сайтом?
  • Вопрос задан
  • 3159 просмотров
Решения вопроса 1
@thepry
Ruby on rails, 1С разработчик
>> идеальным вариантом нам кажется - писать напрямую в базу данных 1С.

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

>> Какие может еще есть интерфейсы для синхронного взаимодействия 1С и внешних систем?

1. Веб-сервисы в 1С.
2. Http-сервисы в 1С.
3. Отдельные таблицы в БД: База клиентов -> База 1С и наоборот. В таблицу выгружать изменения и со стороны 1С проверять раз в n времени, если что-то там есть, то считывать и удалять считанное.

Если у вас нагрузка не бешеная, то первый и второй вариант подойдут. Правда нужно уточнить как будут лицензии расходоваться в таком случае.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
aenikitin
@aenikitin
Инфраструктурный администратор
Не нужно вмешиваться в работу БД 1С. Используйте или выгрузку по расписанию или COM объект"V8.Application".
Ответ написан
Комментировать
@sulik93
Начал изучать Java. Продолжаю изучать Java.
Соглашусь с Александром
использовать выгрузку на сайт. Например, через драйвер ODBC:
Соединение = Новый COMОбъект("ADODB.Connection");
СтрокаКоннекта = "DRIVER={MySQL ODBC 5.2 Unicode Driver}; SERVER="+СокрЛП(Сервер)+";DataBase="+СокрЛП(ИмяБазы)+"; UID="+СокрЛП(Логин)+";PWD="+СокрЛП(Пароль)+ ";OPTION=" + "3" + ";STMT=SET CHARACTER SET UTF-8";

Попытка
		Соединение.Open(СтрокаКоннекта);
		Сообщить("соединились");
Исключение
		Сообщить("Невозможно установить соединение с бд! " + ОписаниеОшибки()+"!!!");		
		Возврат;
КонецПопытки;

Ну и дальше нагуглить можно
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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