Уважаемый читатель! Я не буду здесь разбирать строки подключения к 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 …
»
while(odbc_fetch_row ($per))
{
$i++;
echo '<tr><td>'.$i.'</td>';
echo odbc_result($per,1) ;
}
буквально «на лету».
Отличие от классической выгрузки-загрузки (например, в интернет-магазин) в том, что всё происходит в реальном времени. И все дисконты,.. считает 1с. Нет нужды дописывать математику в 1с и «магазине».
Основная нагрузка будет только при записи документа. Хотя, что нам мешает, для снижения нагрузки, писать в таблицу на том-же SQL-сервере, а 1с-кой просто «забирать» оттуда данные? Т.е., цены у контрагента будут актуальные, а документы мы будем забирать и проводить в «свободное» время.
Замечу, что и из 1с мы можем получать вместо JSON – а, текст с готовой HTML-разметкой. Но, как показала практика, это будет гораздо медленнее.
При таком подходе, не будет разницы, на каком сервере (MSSQL или PSQL) крутится 1С. Однако, если вы хотите записывать в базу 1С данные напрямую, исключая оболочку, то стоит помнить, что MSSQL блокирует таблицы при записи, а PSQL использует версирование.