Firebird (SQL) — ВК для чтения без дополнительных настроек (Native API)

ВК для 1С 8.2 (управляемое и обычное приложение)
Позволяет выполнять запросы выборки данных (SELECT, другие не пробовал — возможно, тоже)
Возможна удаленная работа (т.е. когда база firebird находится на другом компьютере локальной сети).
Не требует дополнительных драйверов — всё, что нужно, вложено в комплекте!

Конечно, в 1С имеется встроенный механизм чтения данных из баз данных Firebird, о нем можно почитать, например тут:

//infostart.ru/public/154693/

Только вот, не всегда этот механизм работает — танцы с бубном, как правило, обеспечены…  

Те, кто работал с Firebird в Delphi — знают, как просто использовать компоненты InterBase для работы с данными: нужна всего одна внешняя DLL — GDS32.DLL

Взял на себя смелость, используя технологию Native API — набросать ВК для простого чтения данных. Ничего особенного, вроде бы…

Принцип работы ВК — прост: принимает запрос и имя временного файла XML, куда кладется результат выполнения запроса или описание ошибки. Далее с этими данными вполне сможет работать 1С штатным механизмом чтения…

Получилось просто и быстро.

 

Главный бонус — можно читать данные с удаленного компьютера, если на нем открыт стандартный порт сервера Firebird (вроде, 3050) — для этого перед локальным путем базы на сервере указываем его сетевое имя и через двоеточие — путь, например:

server1:c:dataase1.fdb

здесь, server1  — имя компьютера в сети (где база лежит),  c:dataase1.fdb— локальный путь к базе на компьютере server1.

Если кто не знает, что такое Firebird: http://ru.wikipedia.org/wiki/Firebird 

База данных Firebird  используется, например, в пропускной системе PERCO S-20.

 

В комплекте, помимо  GDS32.DLL положил несколько вспомогательных DLL, необходимых первой для работы.

17 Comments

  1. andrewks

    что-то мне кажется, что общение через временный файл XML будет не совсем удобным (хотя, как один из вариантов коммуникации вполне может присутствовать).

    гораздо удобнее сразу получить в 1с внутреннее представление таблички.

    а уж описание ошибки и подавно нужно в AddError() подавать

    Reply
  2. andrewks

    кстати, интерфейсный модуль свой использовали, или из http://infostart.ru/public/81644/ ?

    Reply
  3. DrAku1a

    (2) именно, хотя для основы брался модуль-наследник: http://infostart.ru/public/88060/

    Reply
  4. andrewks

    (3) тогда сразу хочу задать Вам дополнительный вопрос 😉

    не наблюдали ли Вы каких-либо проблем в момент загрузки dll-ки на компах с Win2008 x64 и Win7 x64?

    Reply
  5. DrAku1a

    Абсолютно никаких проблем не наблюдал на Win 2008 x64. На Win7 x64 не тестировалось.

    Reply
  6. kanalex

    а запросы INSER UPDATE пробовал кто-нибудь с этой компонентой делать?

    SELECT мало интересен для нашей задачи

    Reply
  7. DrAku1a

    (4), я в (5) не совсем прав. теслировал на 32-битной платформе. Протестировал в регламентном задании на 64-битном сервере. DLL не загружается. И это, наверное, естественно…

    Reply
  8. EvgeniuXP

    а двоичные данные можно вытащить? (фотографии, например)

    Reply
  9. DrAku1a

    (8) нет, с картинкой не работали — только текст/дата/булево/число. Впрочем, исходники есть — можете реализовать чтение BLOB-полей.

    Reply
  10. EvgeniuXP

    (9) спасибо, через внешние источники всё достал, включая фото 🙂

    Reply
  11. skyp

    Спасибо за разработку, очень помогло при работе с программами расчета окон!

    Reply
  12. DrAku1a

    (11) Пожалуйста.

    Надо бы перекомпилить на Win64 на новой дельфе XE5 (на демо версии наверное должно получиться 🙂 )…

    Reply
  13. CaSH_2004

    (0)DrAku1a

    потребовалось подключится к базе, друг дал образец своей базы, логин/пароль, скачал твое чудо и все заполнил и нажал «Выполнить», на что выдано было: Внешняя компонента : unavailable database.

    Скажи какие условия нужно выполнить чтобы взлетело?

    GDS32 у меня не регистрируется через regsvr32 на WinXP — говорит что нет точки входа.

    Да и вообще странно почему нигде не требуется указание логина/пароля — как происходит авторизация в базе то?

    Reply
  14. DrAku1a

    (13) Данная компонента подключается к базе, а не к файлу. Установите Firebird. Авторизация по-умолчанию

    DB.Params.Add(‘user_name=SYSDBA’);
    DB.Params.Add(‘password=masterkey’);

    Это по поводу авторизации.

    Reply
  15. 3762515
    Внешняя компонента : Dynamic SQL Error

    SQL error code = -204

    Table unknown

    ACCESS_POINTS

    At line 1, column 15.

    В чём может быть проблема?

    Reply
  16. DrAku1a
    Table unknown

    Вольный перевод: Не найдена таблица. Проверьте к той ли базе Вы подключились и есть ли в ней таблица «ACCESS_POINTS».

    Reply
  17. AlexeyK1

    Вроде стоит последний драйвер, но пишет ошибку. Как быть ?

    Невозможно установить соединение с Firebird:

    {ВнешняяОбработка.Firebird_Проверка_ВК.Форма.ФормаУправляемая.Форма(87)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [ODBC Firebird Driver]unsupported on-disk structure for file D:CBASE.FDB; found 11.2, support 11.1

    сам нашел в чем проблема необходимо поставить Firebird_2_5 и все ок

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *