8.х Как создать базу Firebird из 1С?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем sagitt, 5 апр 2012.

  1. TopicStarter Overlay
    sagitt
    Offline

    sagitt Опытный в 1С

    Регистрация:
    13 сен 2008
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Подскажите пожалуйста,как можно программно (из 1с8) создать и зарегистрировать базу данных firebird.
    И можно ли программно отредактировать структуру уже имеющейся базы firebird?
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    А как делают из 1С DBF ?
    Тут походу нужно кодом подключаться через COM и уже там работать.
  3. TopicStarter Overlay
    sagitt
    Offline

    sagitt Опытный в 1С

    Регистрация:
    13 сен 2008
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26

    Насколько я понял обычно (в ручном режиме)люди делают такую операцию через IBExplorer.
    А как "уже там работать" пока не смог найти. Если у кого есть пример, поделитесь пожалуйста. Хотябы пример и не на 1с.
  4. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    я с firebird только на delphi работала, собственно пример работы соответвующий, если надо поищу... как в 1с с ней работать не знаю
  5. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Тут через COM-объект нужно походу работать, больше никак. Или firebird организована из dbf-файлов (мне так кажется), то можно читать/записывать эти таблицы, но нужно знать что так к чему.
  6. TopicStarter Overlay
    sagitt
    Offline

    sagitt Опытный в 1С

    Регистрация:
    13 сен 2008
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Delphi тоже немного знаю, думаю разберусь. Заранее благодарен.
  7. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    alexburn

    fairbird сделанна не из DBF файлов. Этож наследница Interbase'а


    Sagitt

    А создавать БД - точно так же, как создавали бы вы ее командами файрбирда
    С той лишь разницей, что букафки вводить не руками в консольке, а через

    Код:
    КомандаСистемы(...);
    P.S.
    Заметьте, я не знаю FireBird и не сталкиваюсь с ним по работе. Я просто помню что где-то есть гугль
  8. TopicStarter Overlay
    sagitt
    Offline

    sagitt Опытный в 1С

    Регистрация:
    13 сен 2008
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Хотелось бы не через команда системы, т.е. насколько я понимаю, через доп утилиты а через com, т.е через обращение непосредственно к серверу.

    p.s. я тоже не знаю FireBird... пока, но необходимость заставляет познакомиться.
  9. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    а можно узнать, что за необходимость то такая?
  10. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Конектитесь к файрбирду через драйвер (.NETовский или ODBCшный) и выполняете на нем запрос.
    Драйвер должен быть установлен на машине, с которой пойдет запрос (например на сервере 8.2, если код исполняется не на клиенте)
  11. TopicStarter Overlay
    sagitt
    Offline

    sagitt Опытный в 1С

    Регистрация:
    13 сен 2008
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Нельзя пример запроса?
  12. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Могу дать пример конекта к MS SQL или SyBase. Из этих примеров сами подберете себе строку соединения.
  13. TopicStarter Overlay
    sagitt
    Offline

    sagitt Опытный в 1С

    Регистрация:
    13 сен 2008
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Давайте, попробуем
  14. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    прошу прощения, пообещала выложить пример, а к сожалению ничего не нашла у себя, но помню что делала по книге. Точного названия не помню, но в ней обсуждалось все семейство InterBase, Firebird, yafee (вроде так пишется). В Делфе то стандартные компоненты есть для работы с базами, фактически все на запросах, а запросы на SQL.
  15. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    //вот так создаю подключения к двум внешним (по отношению к 1С) БД:
    Код:
    Процедура ПодключитьCIS()
    CIS = Новый COMОбъект("ADODB.Connection");
    CIS.Open("MSDASQL.1;Persist Security Info=False;Data Source=cis_ins;Mode=Read");
    КонецПроцедуры // ПодключитьCIS()
    
    Процедура ПодключитьSQL()
    SQL = Новый COMОбъект("ADODB.Connection");
    SQL.CommandTimeout  = 10000;
    SQL.ConnectionTimeout = 10000;
    Если ОбрабатываемаяБД = "CIS_2_1C" Тогда
    //SQL.Open("Provider=MSDASQL.1;Password=51423;Persist Security Info=True;User ID=CIS_2_1C;Data Source=CIS_2_1C");
    SQL.Open("Driver={SQL Native Client};Server=URAN;Database=CIS_2_1C; Uid=CIS_2_1C;Pwd=51423;");
    Иначе
    SQL.Open("Driver={SQL Native Client};Server=URAN;Database=CIS_2_1C_OLD; Uid=CIS_2_1C;Pwd=51423");
    КонецЕсли;
    КонецПроцедуры // ПодключитьSQL()
    
    //где SQL и CIS глобальные (в рамках модуля) переменные
  16. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Вот так, например создаю дубль таблицы на стороне MS SQL (ну надо мне держать одновременно и новое состояние таблицы, и как оно было ДО)

    Код:
    Процедура ПодготовитьВременнуюТаблицу(ИмяТбл)
    Попытка
    Выборка = SQL.Execute("DROP TABLE tmp_tbl_"+ИмяТбл);
    Исключение
    КонецПопытки;
    //перенесем ключ и признак из рабочей во временную таблицу
    ResSQL = SQL.Execute("SELECT f_"+ИмяТбл+"_id, f_sys_string,f_mod INTO tmp_tbl_"+ИмяТбл+" FROM t_"+ИмяТбл);
    //очистим рабочую таблицу
    ResSQL = SQL.Execute("TRUNCATE TABLE t_"+ИмяТбл);
    КонецПроцедуры // ПодготовитьВременнуюТаблицу()
    
  17. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Ну и кусочек кода по считваюнию данных из таблицы БД Sybase

    Код:
    //--------------------------------------------------------------------------------------------------------
    ВыборкаCIS = CIS.Execute("Select * FROM DBA.t_rate t_rate");
    Пока ВыборкаCIS.EOF=0 Цикл
    f_rate  = ВыборкаCIS.Fields("f_rate").Value;
    f_rate_id = ВыборкаCIS.Fields("f_rate_id").Value;
    f_dt  = ВыборкаCIS.Fields("f_dt").Value;
    f_curr_id = ВыборкаCIS.Fields("f_curr_id").Value;
    ...
    ВыборкаCIS.MoveNext();
    КонецЦикла;
  18. TopicStarter Overlay
    sagitt
    Offline

    sagitt Опытный в 1С

    Регистрация:
    13 сен 2008
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Спасибо.
    Со считыванием все понятно,по этой части вопросов не возникало.
    За пример копирования также благодарен, но я просил пример на создание новой, а не копирование уже существующей таблицы.
    Т.е. грубо говоря, как создать простейшую таблицу из 2 полей, одно - varchar,второе-decimal.
  19. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    сдается мне, что только конструкция SQL только поменяется
    Код:
    SQL.Execute("CREATE TABLE mTable (pole1 varchar(50) NOT NULL, pole2 decimal(5,2)");
    Все дело в конструкциях SQL.... погуглите эту тему... вам надо будет по сути менять текст запроса, а как выполнить его вам uza уже показал
  20. TopicStarter Overlay
    sagitt
    Offline

    sagitt Опытный в 1С

    Регистрация:
    13 сен 2008
    Сообщения:
    115
    Симпатии:
    0
    Баллы:
    26
    Если я правильно понимаю, то для выполнения SQL запроса необходимо иметь открытое соединение.
    Если кто-нибудь знает, как открыть соединение с еще не существующей базой, подскажите пожалуйста, как это сделать.
    Или все-же можно без открытия соединения?

Поделиться этой страницей