Столкнулся с ситуацией, когда необходимо с сайта отправлять запросы в 1С. Например, информировать его о поступившем через сайт заказе.
Но в интернетах не могу найти инфу по этой теме. Много документации на случай, когда инициатор запроса - 1С (запрашивает что-то с сайта). А вот наоборот - инфы нет. Может я не правильно гуглю...
Подскажите хорошие источники. И, может быть, из личного опыта, есть какие-то тонкости/требования/ньюансы? Буду очень признателен.
ОТВЕТ: Гуглим "1C Web Сервис" или "1С HTTPСоединение"
Тут смотря что вы хотите получить в итоге.
Большинство обменов с сайтами при помощи различных модулей работает в таком режиме: 1С всегда является инициатором вызова, за один проход она отправляет данные и получает.
Алексей Петров, спасибо. Мне казалось, что интеграция обычно бывает двусторонней (между веб-сервисами, по крайней мере, почти всегда так). Получается, единственный разумный выход - настроить 1С таким образом, чтобы он очень часто (раз в минуту) проверял изменения на сайте (например, новые заказы) и, если таковые имеются, забирал данные о них к себе. Правильно я понимаю?
Александр Цымбал, не совсем так понимаете. Почему делают всегда 1С инициатором запросов - не знаю )))
Вообще для интеграции с системами из вне в 1С есть Web-/HTTP- сервисы.
Создается соответствующий сервис, определяются методы и переменные, потом он публикуется и к нему можно обращаться.
Алексей Петров, Например, на сайте сформировался заказ. Сайт осуществил у себя все необходимые манипуляции (создал сущность заказа, отправил уведомления на e-mail, что-то еще, стандартное для данной ситуации...) и теперь ему надо оповестить 1С (где этот заказ тоже должен "засветиться"), отправив ему данные об этом заказе.
1С, в свою очередь, должен эти данные принять и на свой стороне произвести другие необходимые действия (сформировать ряд документов и т.д.), отправить их всем необходимым сторонам, в том числе клиенту, совершившему заказ на сайте.
Просто, важно, чтобы эти манипуляции в 1С осуществились как можно скорее после формирования заказа на сайте. Клиент не должен ждать часы, пока сработает расписание, и 1С это сделает.
Да, есть такая возможность.
У 1С есть такой объект в конфигураторе "Web Сервис". но на стороне сервера 1С должен стоять Apache или IIS. Она (1С) прописывает свою Dll в Веб сервер и Имя вебсервиса с путем к базе данных. Ты посылаешь запрос на вебсервер (Например Localhost/myDB/PostOrder), у него (Вебсервера) в конфиге прописано - обращаться на нужую Dll, Dll пересылает запрос на конкретную базу, а там конекретный вебсервис (По имени входа), а там уже процедура и дальше код 1С ... с возвратом или без .. по желанию.
Больше информации гуглится по "1с веб сервис пример"
Если не ошибаюсь, в целях безопасности сделано так что только 1С может делать запросы и получать ответы, а вот к 1С обратиться нельзя иначе бы ее можно было легко уронить.
информирование о заказе думаю должно быть реализовано таким образом: 1С через определенное время должен забирать заказы с сайта, которые хранятся в бд
Про безопасность - спасибо. Действительно, это было бы уязвимостью.
Опрос сайта по расписанию, получается, единственный вариант. Тогда такой уточняющие вопросы:
1. Как часто может производиться запрос с 1С к сайту? Как крон, раз в минуту? Это нормально? Или можно чаще (скажем, 3-4 раза в минуту)?
2. Можно ли настроить на стороне 1С разные расписания для разных скриптов? Дело в том, что в 1С есть несколько скриптов, которые синхронизируют другие данные с сайтом. Они работают 1 раз в сутки. А этот запрос на наличие заказов должен производиться раз в минуту или чаще (если возможно)...
Александр Цымбал, к сожалению более подробно как это сделать я не смогу сказать, просто натыкался на эту тему как-то работая именно со стороны 1С-Битрикс, а со стороны 1С не было опыта.
судя по комментарию Алексей Петров, возможно вышеописанное мною просто относится к политике безопасности
Александр Цымбал, можно. В 1С есть объект Регламентное задание. Там указывается расписание выполнения, а его входной точкой является какая-нибудь процедура/функция.
Если безопасно с сайта к 1С обращаться, тогда нужно Web-Сервис поднимать, к его методам доступ только через авторизацию. И на самом сервере настройки провести, например фильтр по ip, откуда вызовы проходят. Ну тут уже не подскажу, это к хорошему администратору сервера.
Сайт осуществил у себя все необходимые манипуляции (создал сущность заказа, отправил уведомления на e-mail, что-то еще, стандартное для данной ситуации...) и теперь ему надо оповестить 1С (где этот заказ тоже должен "засветиться"), отправив ему данные об этом заказе.
1С, в свою очередь, должен эти данные принять и на свой стороне произвести другие необходимые действия (сформировать ряд документов и т.д.), отправить их всем необходимым сторонам, в том числе клиенту, совершившему заказ на сайте.
Алексей Петров, ну да. значит, всё-таки делать веб-сервис. Тут Mikhail_E подробно описал, как это всё работает. Отправлю нашему программисту. Может быть, сделаем так. Либо оставим инициатором 1С и будем забирать инфу с сайта как можно чаще.
Константин Нагибович, не являюсь знатоком конечно, но вроде как Web-сервис безопаснее, хотя бы потому что доступ к нему через авторизацию происходит.
Но я могу ошибаться )))
Если вы в этом более глубоко разбираетесь - поделитесь знанием.