Имя: Пароль:
1C
1C 7.7
v7: Запись напрямую в табличку в базе на postgree из 7.7
0 mishaPH
 
модератор
30.01.14
13:12
Коллеги.

Как подключиться к имеющейся базе постгри и записать в табличку нужную данные.
1 МихаилМ
 
30.01.14
13:14
2 mishaPH
 
модератор
30.01.14
14:06
гм

что-то не выходит нашел пример.


    PostgresCON = СоздатьОбъект("ADODB.Connection");
    ConnectionString = "Provider=PostgreSQL OLE DB Provider;Password=adempiere;User ID=adempiere;Data Source=192.168.20.200;Location=prod3;Extended Properties=";
    PostgresCON.Open(ConnectionString);

Говорит Не удается найти указанный поставщик. Вероятно, он установлен неправильно.

запустил  1.udl. действительно нет. и вроде бы psqlodbc.msi установил
3 mishaPH
 
модератор
30.01.14
15:19
гм. запустил

немного с другой конструкцией.
4 dk
 
30.01.14
15:22
дык запустил - делись мало ли кому потом понадобится
5 mishaPH
 
модератор
30.01.14
15:26
Conn = СоздатьОбъект("ADODB.Connection");
    ConnectionString = "DRIVER={PostgreSQL Unicode};DATABASE=prod3;SERVER=192.168.20.200;PORT=5432;UID=adempiere;PWD=adempiere;";
    ААА = Conn.Open(ConnectionString);

    Cmd = СоздатьОбъект("ADODB.Command");
    Conn.BeginTrans();  
    Cmd.ActiveConnection = Conn;  

    Cmd.CommandText = "select m_product_id, ad_client_id, ad_org_id, isactive, created, createdby from adempiere.m_product";
    Попытка
        Res = Cmd.Execute();
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    
    Пока Res.Eof() = 0 Цикл //проверяем есть ли реквизит в базе  
        ФлагУдСтр = 1;
        
        Для А=0 По 5 Цикл
            Сообщить(СокрЛП(Res.Fields(А).Name), Res.Fields(А).Value);
        КонецЦикла;
        
        Попытка
            Res.MoveNext();
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;
    КонецЦикла;;
    
    Попытка
        Conn.CommitTrans();
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    
    Попытка
        Conn.Close();
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
6 mishaPH
 
модератор
30.01.14
15:26
СокрЛП(Res.Fields(А).Name

имя поля выдает

значение Res.Fields(А).Value выдает ошибку

как получить значение поля???
7 mishaPH
 
модератор
30.01.14
15:27
Тип переменой не поддерживается говорит.
8 ДенисЧ
 
30.01.14
15:28
Res.Fields("m_product_id").Name
так что говорит?
Тип переменной в таблице какой?
9 mishaPH
 
модератор
30.01.14
15:32
гм. некоторые поля isactive, created выдает значение велью
10 mishaPH
 
модератор
30.01.14
15:34
в общем он не хочет выдавать типы полей которые numeric
11 mishaPH
 
модератор
30.01.14
15:36
значение полей. через Value
12 dk
 
30.01.14
15:37
кастани в другой тип
13 ДенисЧ
 
30.01.14
15:40
(10) numeric и ado в 77 очень не дружат. Так что приводи к другому типу в самом запросе.
14 mishaPH
 
модератор
30.01.14
15:44
(13) понятно. но мне более надо будет insert делать там как с типом. нумерик это вроде число. числа из 1с прокатит?
15 mishaPH
 
модератор
30.01.14
15:44
это так пробный коннект был
16 ДенисЧ
 
30.01.14
15:45
(14) прокатят. По крайней мере мелкософтный вполне принимал и автоматически кастовал.
17 mishaPH
 
модератор
30.01.14
15:45
(16) ок. попробую
18 mishaPH
 
модератор
03.02.14
07:14
В общем и селект и инсерт нормально работают.

при запросе типа селект. все значения в запросе тупо перевел в текст. все нормально прочиталось. С инсертом проблем небыло, даже ничего в текст не переводил.
Ошибка? Это не ошибка, это системная функция.