SELTA/devel

Материал из Etersoft wiki
Перейти к навигацииПерейти к поиску


Разработка транслятора

Транслятор в виде прокси-сервера

Планируется реализовать транслятор в виде прокси-сервера протокола TDS,

чтобы обеспечить работу приложений, не использующих ODBC.


Транслятор в виде ODBC-драйвера

Основная проблема создания транслятора - преобразование функций из используемого в MS SQL языка TSQL в язык выбранной базы данных.

Для этого необходимо на уровне ODBC драйвера преобразовывать SQL запросы, корректировать ответы, а также дописать недостающие функции в самой базе (в виде подключаемого модуля).


Запросы для 1С 7.7

Большая часть запросов, посылаемых 1С к серверу, хранится в файле BkEnd.dll, некоторые хранимые процедуры для работы с таблицами базы данных хранятся в файле 1Cv7.DDS (в каталоге программы). Файлы, которые хранятся в каталоге с базой: 1Cv7.MD - файл с метаданными, в нем хранится все то что можно посмотреть в Конфигураторе, 1Cv7.DDS - файл описание метаданных, в этом файле хранится описание таблиц базы данных MS SQL Server, а также хранимые процедуры, 1Cv7.DBA - файл с описанием настроек доступа к MS SQL Server-у, имя сервера, логин и пароль, usrdef\users.usr - файл описания пользователей 1С.


Что понадобится сделать

  1. Реализация системных хранимых функций, которые есть в MS SQL (выдают системную информацию о базе)
  1. Системные таблицы: доступ к ним осуществляется из системных функций
  1. Расширенные хранимые функции MS SQL (поставляются с дистрибутивом в отдельных dll)
  1. Типы данных (bigint, sql_variant, table и т.д.)
  1. Реализация операторов языка T-SQL: предварительный транслятор кода, который пользователь посылает на сервер через ODBC (в том числе запросы на создание хранимых функций) + реализация дополнительных функций (которых нет в заменяющей базе) в качестве дополнительных модулей.
  1. Если с приложением поставляются отдельные dll для MS SQL, в которых хранятся расширенные хранимые функции, то их придётся банально переписывать под заменяющую базу, либо эмулировать API, под который они написаны. В 1С этот механизм не используется.


Основные проблемы скорее всего возникнут с реализацией блокировок.



Транслятор в виде клиентской библиотеки

Транслятор в виде клиентской библиотеки, заменяющей оригинальную, вряд ли будет реализован.