Dmitry The Wing писал(а) 12. Мая 2011 :: 06:27:Т.е. можно реально выполнить запрос к любой СУБД так, что метапарсер ничего с ним не сделает?
Я этого не говорил, сам когда-то заводил ветку, когда боролся с парсером на системных таблицах в FireBird'е.
Я говорю о таких конструкциях:
Запрос.ВыполнитьИнструкцию("CREATE TABLE ""Справочник.Контрагенты""(ID CHAR(9),CODE CHAR(8),NAME CHAR(50),PRIMARY KEY(ID)) WITH (OIDS=FALSE)");
Запрос.ВыполнитьИнструкцию("INSERT INTO ""Справочник.Контрагенты""(ID,CODE,NAME)VALUES(:ID,:CODE,:NAME)");
Запрос.ВыполнитьИнструкцию("SELECT ID [Элемент $Справочник.Контрагенты],CODE [Код $Строка], NAME [Name $String]
|FROM ""Справочник.Контрагенты"" ORDER BY NAME");
Постгри такую конструкцию не принимает из-за наличия квадратных скобок.
Запрос парсером разворачивается в примерно такое:
SELECT ID [Элемент_1c_type_Справочник_1c_dot_Контрагенты],
CODE [Код_1c_type_Строка],
NAME [Name_1c_type_String]
FROM "Справочник.Контрагенты" ORDER BY NAME
но если его дополнительно обработать и заменить квадратные скобки на кавычки (тем более что русские имена нужно в кавычках указывать):
SELECT ID "Элемент_1c_type_Справочник_1c_dot_Контрагенты",
CODE "Код_1c_type_Строка",
NAME "Name_1c_type_String"
FROM "Справочник.Контрагенты" ORDER BY NAME
то на выходе получаем колонку ТЗ "Элемент" с типом = "Справочник.Контрагенты".
На FireBird'е не факт что все запросы будут работать. На постгри у меня заработали только при указании кодировки WIN1251. У него ограничение на имя колонки 63 символа, но в юникоде получается меньше и имя колонки обрезается, соответственно парсер не может определиться с типом колонки