Популярная среда 1С: Предприятие в последнее время взяла единственно правильный курс на поддержку как можно большего количества СУБД, кроссплатформенность и совместимость
Многие предприятия (преимущественно малые и средние) по-прежнему не торопятся переходить от версии 7.7 к 8.х. А в этом случае единственная предусмотренная разработчиками совместимая СУБД – Microsoft SQL. Вариант весьма затратный для небольшой компании: помимо лицензий на рабочие станции и MS SQL Server, требуется приобрести еще и MS Server.

Альтернативным решением может стать технология SELTA@Etersoft, разработанная питерской компанией Etersoft. SELTA используется в связке со свободной СУБД Postgre SQL и позволяет 1С 7.7 работать с SQL-базами. Продукт является коммерческим и позиционируется разработчиком как доступная (стоимость решения составляет от 15000 р.) альтернатива MS SQL Server.

SELTA@Etersoft — это эмулятор работы MS SQL Server на Postgre SQL. транслирующий SQL-запросы из диалекта T-SQL в pgSQL. Установка и настройка SELTA@Etersoft на клиентском ПК тривиальна: запуск инсталлятора, настройка соединения с Postgre SQL и создание БД через GUI в несколько кликов мыши. Намного интереснее рассмотреть технологию изнутри. На первый взгляд, SELTA@Etersoft при обработке каждого запроса выполняет следующие действия:

ПО отправляет запрос

SELECT TOP 2 * FROM tab;
.
.
.


Запрос принимается, транслируется и отправляется Postgre SQL

SELECT * FROM tab LIMIT 2;
.


Postgre SQL принял запрос, обработал, вернул результат, который возвращается ПО, сделавшему запрос.

Все эти действия и называются трансляцией из одного диалекта SQL в другой.
Драйвер ODBC для MS SQL сервера в реестре меняется на драйвер Postgres. Запросы в этом драйвере отлавливаются, парсятся, и переделываются в формат Postgre SQL.



Для того, чтобы такая эмуляция стала возможной, в SELTA@Etersoft решается ряд проблем, связанных с несхожестью двух СУБД, в частности, различие блокировок и отсутствие динамических курсоров в Postgres. Например, проблема с отсутствующими динамическими запросами решена таблицей с изменениями и автоматическим созданием триггеров на все таблицы с фиксированием всех изменений. Благодаря этому драйвер узнаёт, требуется ли пересоздать курсор, созданный динамическим.

Между тем, такая схема работы создаёт ограничения в использовании SELTA@Etersoft и не позволяет транслятору стать полностью универсальным. В настоящий момент он поддерживает только программы, работающие через ODBC-драйвер. Однако в планах разработчиков – реализовать SELTA@Etersoft в виде сервера, что обеспечит совместимость со всеми приложениями, использующими MS SQL.