Имя: Пароль:
1C
1С v8
Подключение к базе Декларант-Алко
,
0 Amfiaray
 
05.12.13
09:05
Добрый день.
Подскажите как подключиться к базе Декларант-Алко, я пробую вот так но ничего не получается:
ОлеДБ = Новый COMОбъект("ADODB.Connection");
    Соединение  = "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5; Data Source="+СокрЛП(ПутьКБазе));
    Попытка
        ОлеДБ.Open(Соединение);
    Исключение
        Сообщить(ОписаниеОшибки());
    КонецПопытки;
    запрос="select * from wrk_Contragents";
    cmd = Новый COMОбъект("ADODB.Command");
    cmd.ActiveConnection = ОлеДБ;
    cmd.CommandText=запрос;
    RecordSet = Новый COMОбъект("ADODB.RecordSet");
    RecordSet.ActiveConnection = ОлеДБ;
    RecordSet.CursorLocation = 3;
    RecordSet.CursorType = 2;
    RecordSet.Open(cmd);
Выдает ошибку:
RecordSet.Open(cmd);
по причине:
Произошла исключительная ситуация (Microsoft Cursor Engine): Произошли ошибки во время выполнения многошаговой операции. Проверьте значения всех состояний.
Если не ставить RecordSet.CursorLocation = 3;
    RecordSet.CursorType = 2;
то нормально открывает, но добавлять ничего не дает
1 Amfiaray
 
05.12.13
09:51
Неужели никто не встречался с таким?
2 Ёпрст
 
05.12.13
10:04
она с паролем
3 Ёпрст
 
05.12.13
10:07
на вот..

ОлеДБ = Новый COMОбъект("ADODB.Connection");
    
    Соединение  =
    "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source="+СокрЛП(КаталогИБ)+";SSCE:Database Password=7338a7e6-fd3b-49d1-8d90-ddbbc1b39fa1";
    ОлеДБ.Open(Соединение);
    Command = Новый COMОбъект("ADODB.Command");
    
    Command.ActiveConnection = ОлеДБ;
    
    ТекстЗапроса = "
    |INSERT INTO DecF11 ....";
    
    Command.CommandText = ТекстЗапроса;    
    RecordSet = Новый COMОбъект("ADODB.RecordSet");    
    RecordSet = Command.Execute();
4 Amfiaray
 
05.12.13
12:39
INN = 1234567891;
Command = Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = ОлеДБ;
ТекстЗапроса = "INSERT INTO wrk_Contragents(INN)VALUES("+INN+")";
Command.CommandText = ТекстЗапроса;    
RecordSet = Новый COMОбъект("ADODB.RecordSet");    
RecordSet = Command.Execute();

Выдает ошибку RecordSet.Open(cmd);
по причине:
Произошла исключительная ситуация (Microsoft SQL Server Compact OLE DB Provider): The command contained one or more errors. [,,,,,]
Не могу догнать как надо делать :(
5 Ёпрст
 
05.12.13
12:51
(4) а те че сделать то надо ?
6 Aleksey
 
05.12.13
12:55
а там апострофы разве не нужны?

VALUES('"+INN+"')";
7 Aleksey
 
05.12.13
12:56
да и обычно еще и Where пишут, а то он во все строки таблицы зафигачит
8 Ёпрст
 
05.12.13
12:57
(7) у него вообще то инсерт
:)
9 zak555
 
05.12.13
12:57
зачем её использовать *?
10 zak555
 
05.12.13
12:58
сейчас 1с-ка сама умеет всё подписывать и шифровать
11 Aleksey
 
05.12.13
12:59
(8) согласен :)

(0) http://infostart.ru/public/141346/
12 zak555
 
05.12.13
12:59
поделки от рар лучше в руки не брать -- помню, что они даже не запускались под обычным пользователем
нужны были одминские права
13 Ёпрст
 
05.12.13
13:03
(4)

вот так сработает
insert into wrk_Contragents ([inn],[orgtype]) values ('123123123',1)

ибо orgtype не может содержать null полей.
Хотя, по-уму, нужно все значимые поля втыкать..
14 Ёпрст
 
05.12.13
13:06
(11)
2. зачетная поделка.. тоже ей пользовался как-то.
Хотя, проще самому написать прямо в qa, что надо.
15 Amfiaray
 
05.12.13
13:08
Всем спасибо, разобрался и всё работает. По поводу того что 1С сама всё умеет я не спорю, но глав бух сказала что "НАДО В ДЕКЛАРАНТ", вот и пляшу тут.
16 zak555
 
05.12.13
13:09
(15) кому надо ?
17 Amfiaray
 
05.12.13
13:13
(16) Им надо, они так привыкли.
18 Amfiaray
 
06.12.13
07:34
Возник ещё вопрос, записывать всё хорошо записывает, а как узвнать id записанной строки?
Записываю вот так:
ТекстЗапроса="INSERT INTO wrk_org ([INN],[KPP],[OrgName],[Phone],[Email],[CCode],[Index],[RCode],[Area],[City],[Place],[Street],[Building],[Korp],[Flat],[Head_id],[OrgType],[DirID],[BuhID],[Liter])VALUES
                     |('"+INN+"','"+KPP+"','"+OrgName+"','"+Phone+"','','643','"+Индекс+"','22','','"+Город+"','','"+Улица+"','"+Дом+"','','','1','','','','')";
    cmd = Новый COMОбъект("ADODB.Command");
    cmd.ActiveConnection = ОлеДБ;
    cmd.CommandText=ТекстЗапроса;
    RecordSet = Новый COMОбъект("ADODB.RecordSet");
    RecordSet.ActiveConnection = ОлеДБ;
    RecordSet.Open(cmd);
19 Ёпрст
 
06.12.13
08:15
select max(id) from wrk_org
например..
2 + 2 = 3.9999999999999999999999999999999...