Прямые запросы к базе 1С на SQL-сервере. Зачем нужно? Насколько оправдано? Как сделать?
В современных бизнес-процессах встречаются довольно интересные задачи. Например, загрузка товаров в кассу, работающую, к примеру, на УКМ через интернет. Или создание портала к базе, чтобы крупные оптовики сами могли делать заказы. Да мало ли! Естественно, всё можно сделать средствами 1С. Сейчас в 1С есть возможность внешнего подключения. И механизмы работают достаточно стабильно. Но долго.
- Описание
- Подробнее
Описание
Уважаемый читатель! Я не буду здесь разбирать строки подключения к SQL-серверу. Я не буду рассматривать архивирование, переиндексацию БД командами из 1С.
Итак, имеем портал. Есть у нас web-сервер, который подключается к 1с через WS, и обменивается данными в формате JSON. Как это происходит?
При получении данных из 1С:
Клиент авторизуется на сайте (авторизация совпадает с авторизацией 1С)
web-сервер (через PHP) авторизуется в 1С
Уходит запрос на сервер 1С
Сервер 1с интерпретирует запрос в формат SQL
Идет запрос на SQL-сервер
Сервер 1с разбирает ответ от SQL-сервера
Укладываем его в JSON
На web-сервере (через PHP) разбираем JSON
Отдаем клиенту
При записи данных в 1С:
Клиент авторизуется на сайте (авторизация совпадает с авторизацией 1С)
web-сервер (через PHP) авторизуется в 1С
Уходят данные на сервер 1С
Сервер 1С создает нужный документ, заполняет обработчиком поля,….
Видно, что запись документов лучше доверить серверу 1С. Тогда нам, по крайней мере, не придется дублировать программную часть 1С в PHP.
А вот чтение данных, вполне можно выполнять напрямую с сервера SQL. Этим самым, мы пропускаем циклы сборки-разборки JSON, что значительно ускоряет работу.
Более того, если запрос сделать в виде:
SELECT
'<td>'+q11._Description+'</td><td>'+q12._Description+'</td><td>'+convert(nvarchar(10), q13._Fld28515)+'</td><td>'+convert(nvarchar(10), q13._Fld28516)+'</td></tr>' from …»

