Имя: Пароль:
1C
1С v8
Чтение и запись *.SDF
0 Ivan Bezdomnyi
 
13.09.12
13:32
Как прочитать и как отредактировать базу *.sdf из 1С?

http://open-file.ru/types/sdf
1 Ёпрст
 
13.09.12
13:36
Написать простейщий запрос к ней вестимо.
2 Ёпрст
 
13.09.12
13:36
через ado
3 Ivan Bezdomnyi
 
13.09.12
13:45
(2) есть пример?
4 Ёпрст
 
13.09.12
13:47
(3)
берешь любого провайдера из этих.. далее всё просто
http://connectstr.ru/?page_id=21207

пример могу слепить, надо ?
5 Ivan Bezdomnyi
 
13.09.12
13:50
(4) был бы признателен)
6 andrewks
 
13.09.12
13:55
с момента введения декларирования у алкоголиков резко возрос интерес к xml, xsd и sdf )))
7 Ivan Bezdomnyi
 
13.09.12
13:58
(6) а почему бы и да)
8 Ёпрст
 
13.09.12
14:20
ОлеДБ = Новый COMОбъект("ADODB.Connection");
   
   Соединение  =
   "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source="+СокрЛП(тут путь к *.sdf)+";SSCE:Database Password=тут пароля к базе";
   ОлеДБ.Open(Соединение);
   Command = Новый COMОбъект("ADODB.Command");
   
   Command.ActiveConnection = ОлеДБ;
   
   ТекстЗапроса = "
       |select *
       |from нужная табличка
       |";
   Command.CommandText = ТекстЗапроса;    
   RecordSet = Новый COMОбъект("ADODB.RecordSet");    
   RecordSet = Command.Execute();
   
   Если not RecordSet.EOF() Тогда
       
       RecordSet.MoveFirst();
       
       
       Пока RecordSet.EOF() = 0 Цикл
           
           
           Сообщить(RecordSet.Fields.Item(1).value);//тут нужные поля
           
           
           RecordSet.MoveNext();  
           
       КонецЦикла;
       
   КонецЕсли;
   RecordSet.Close();
   
   RecordSet = Неопределено;
   
   Command = Неопределено;
9 Ivan Bezdomnyi
 
14.09.12
05:52
(8) спасибо!
а как посмотреть какие там есть таблички в этой базе?
и есть ли способ их не только читать, но и записывать/дополнять?
10 shuhard
 
14.09.12
07:31
(9) [а как посмотреть какие там есть таблички в этой базе?]
ADOX
[и есть ли способ их не только читать, но и записывать/дополнять?]
у рекордсета 4 метода:
Addnew
Delete
Update
Edit
11 SmallDog
 
14.09.12
07:43
12 Ivan Bezdomnyi
 
14.09.12
12:19
(10) прошу прощения, но не могу допереть как пользоваться этими методами?
и гуглил и так и сяк пробовал, может есть пример?
13 shuhard
 
14.09.12
12:26
(12) примеров на мисте туча, что конкретно не получается ?
14 Ivan Bezdomnyi
 
14.09.12
12:35
Command = Новый  ComОбъект("ADODB.Command");
       Command.ActiveConnection= ОлеДБ;
       Command.CommandText = "select * from wrk_Contragents";
       
       Recordset.CursorLocation = 3;
       Recordset.Open("select * from wrk_Contragents",ОлеДБ, 2,3);
       RecordSet.AddNew();
       RecordSet.Fields("INN").value="1";
       RecordSet.Fields("KPP").value="2";
       RecordSet.Fields("OrgName").value="RECORDSET";
       RecordSet.Fields("CCode").value="643";
       RecordSet.Fields("RCode").value="01";
       RecordSet.Update();

Произошла исключительная ситуация (Microsoft Cursor Engine): Произошли ошибки во время выполнения многошаговой операции. Проверьте значения всех состояний.

Читать - читает, как в (8) написано. А записать не получается.
15 shuhard
 
14.09.12
12:39
(14) база состоит из одних текстовых полей, да ещё не бланкированных [01] - не верю
16 Ivan Bezdomnyi
 
14.09.12
12:43
(15) не понял
17 Ivan Bezdomnyi
 
17.09.12
06:44
ОлеДБ = Новый COMОбъект("ADODB.Connection");
       Соединение = "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source="+СокрЛП("D:\base.sdf")+";SSCE:Database Password=asdf";
       ОлеДБ.Open(Соединение);    
       Command = Новый  ComОбъект("ADODB.Command");
       Command.ActiveConnection = ОлеДБ;
       Command.CommandText = "select * from wrk_Contragents";
       RecordSet = Новый ComОбъект("ADODB.Recordset");
       Recordset.CursorLocation = 3;
       Recordset.Open("select * from wrk_Contragents",ОлеДБ,2,3);
       RecordSet.AddNew();        
       RecordSet.Fields("INN").value=111;
       //RecordSet.Fields("KPP").value="2";
       //RecordSet.Fields("OrgName").value="RECORDSET";
       //RecordSet.Fields("CCode").value="643";
       //RecordSet.Fields("RCode").value="01";
       RecordSet.Update();
       RecordSet.Close();


Возникает ошибка на строке Recordset.Open("select * from wrk_Contragents",ОлеДБ,2,3);
Произошла исключительная ситуация (Microsoft Cursor Engine): Произошли ошибки во время выполнения многошаговой операции. Проверьте значения всех состояний.

Что ему надо?(
18 Ivan Bezdomnyi
 
17.09.12
08:32
хелп
19 Ёпрст
 
17.09.12
10:05
(18) а зачем вообще делать select * from wrk_Contragents ?
заняться нечем ?
20 Ivan Bezdomnyi
 
17.09.12
10:37
(19) а как нужно делать? чтоб указать в какую таблицу нужно добавить?
21 Ivan Bezdomnyi
 
17.09.12
11:22
Попробовал сделать вот так:

       ОлеДБ = Новый COMОбъект("ADODB.Connection");
       Соединение = "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;Data Source="+СокрЛП("D:\base.sdf")+";SSCE:Database Password=asdf";
       ОлеДБ.Open(Соединение);
       Command = Новый COMОбъект("ADODB.Command");    
       Command.ActiveConnection = ОлеДБ;
       ТекстЗапроса = "
       |select *
       |from wrk_Contragents
       |";
       Command.CommandText = ТекстЗапроса;    
       RecordSet = Новый COMОбъект("ADODB.RecordSet");    
       RecordSet.CursorLocation=3;
       Recordset.CursorType=2;
       Recordset.LockType=3;
       RecordSet = Command.Execute();        
       RecordSet.AddNew();        
       RecordSet.Fields("INN").value=111;
       RecordSet.Update();
       RecordSet.Close();

На строке AddNew() выдает
"Произошла исключительная ситуация (ADODB.Recordset): Текущий объект Recordset не поддерживает обновление. Это связано с ограничением поставщика или с выбранным типом блокировки."

хотя вроде же пишу Recordset.LockType=3;
непоняааатно
22 shuhard
 
17.09.12
11:28
(21) а на куя для открытия рекордсета команда ?
23 Ivan Bezdomnyi
 
17.09.12
11:38
(22) да я же говорю уже всё перепробовал.
и как тут пытался v8: ADODB RecordSet AddNew()
не доходит как сделать надо
24 shuhard
 
17.09.12
11:39
(23) ну так найди сайт СУБД и выясни причину [Произошли ошибки во время выполнения многошаговой операции. Проверьте значения всех состояний. ]
проблема к 1С отношения не имеет
25 chel3
 
24.09.12
05:49
Товарищи! кто загонял напрямую данные из 1С в декларант алко, подскажите пожалуйста как обошли пароль на SDF файл в последних обновлениях, и второе, когда я переношу контрагентов в декларант алко, почему то в журнале справочника, поле "наименование" остается пустое, хотя когда заходишь в сам элемент справочника наименование стоит, в чем может быть проблема?
26 Ёпрст
 
24.09.12
09:44
(25)
1.пароль не проблема
2.нужно пихать все поля в инсёрте, т.е заместо null пихать пустые строки.
27 H A D G E H O G s
 
24.09.12
09:44
На что не пойдут 1С-неги, чтобы декларацию сдать.
28 kihanat
 
09.10.12
21:31
пароль на base.sdf
7338a7e6-fd3b-49d1-8d90-ddbbc1b39fa1
29 acsent
 
09.10.12
21:40
делай insert или update
30 Bugmenot
 
07.11.12
12:49
(11) - он может модифицировать структуру таблиц?
31 Bugmenot
 
07.11.12
12:51
(11) - файлы уже удалены
32 Bugmenot
 
07.11.12
12:57
http://sqlcetoolbox.codeplex.com/documentation

Я так и не понял, есть ли тут версия для Visual Studio 2008 и SQL Server CE 3.5