Имя: Пароль:
1C
1С v8
Изменение записей в таблице sdf
0 Amfiaray
 
21.01.14
08:47
Добрый день!
Есть база sdf декларант-алко, там уже заполнено всё кроме адресов обособленных подразделений, подскажите возможно ли из 1С 8.2 отредактировать записи в базе?
1 Ёпрст
 
21.01.14
08:50
Как 2 байта...
2 Ёпрст
 
21.01.14
08:50
Если че, 1с для этого даже не нужен..ну разве что, даже не знаю зачем, можно все запросы тупо в qa написать
3 Amfiaray
 
21.01.14
08:51
Пробовал вот так:
ОлеДБ = Новый COMОбъект("ADODB.Connection");
    ОлеДБ.Provider = "Microsoft.SQLSERVER.CE.OLEDB.3.5";
    Соединение  = "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5; Data Source="+СокрЛП(ПутьКДА)+"; SSCE:Database Password=7338a7e6-fd3b-49d1-8d90-ddbbc1b39fa1";
    Попытка
        ОлеДБ.Open(Соединение);
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
ТекстЗапроса= "UPDATE wrk_org SET INN ='"+INN+"',KPP='"+KPP+"',OrgName='"+Наименование+"',
                        |Phone='"+Phone+"',CCode ='"+CCode+"', Index ='"+Index+"', Rcode ='"+Rcode+"', Area ='"+Area+"',
                        |City='"+City+"', Place='"+Place+"',Street='"+Street+"',Building='"+Building+"',Korp='"+Korp+"',
                          |Flat='"+Flat+"', Head_id='"+Head_id+"',OrgType='"+OrgType+"',DirID='"+DirID+"',BuhID='"+BuhID+"',
                        |Liter='"+Liter+"' WHERE OrgName = '"+Наименование+"'";
                        
                        
                        
                    
        cmd = Новый COMОбъект("ADODB.Command");
        cmd.ActiveConnection = ОлеДБ;
        cmd.CommandText=ТекстЗапроса;
        RecordSet = Новый COMОбъект("ADODB.RecordSet");
        RecordSet.ActiveConnection = ОлеДБ;
        RecordSet.Open(cmd);

Выдает ошибку:
{Форма.Форма.Форма(87)}: Ошибка при вызове метода контекста (Open)
        RecordSet.Open(cmd);
по причине:
Произошла исключительная ситуация (Microsoft SQL Server Compact OLE DB Provider): В команде имеется одна или несколько ошибок. [,,,,,]
4 Amfiaray
 
21.01.14
08:52
(2), Адреса в 1С забиты
5 Ёпрст
 
21.01.14
08:53
(3)
"' WHERE OrgName = '"+Наименование+"'"

тут одинарные ковычки не нужны
6 Ёпрст
 
21.01.14
08:54
+ писать надо так

"WHERE OrgName like '%"+Наименование+"%'"
7 Ёпрст
 
21.01.14
08:58
вот те.. рабочий пример
    
ОлеДБ = Новый 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 ([Hid],[vidCode],[ProdId],[idPost],[idLic],[P213],[P214],[P215],[P216],[P106],[P107],[P108],[P109],[P110],[P111],[P112],[P113],[P114],[P115],[P116],[P117],[P118],[P119],[P120],[TTYPE],[idOrg])
    |select
|75,d.vidCode,d.ProdId,d.idPost,d.idLic,d.P213,d.P214,d.P215,d.P216,d.P106,d.P107,d.P108,d.P109,d.P110,d.P111,d.P112,d.P113,d.P114,d.P115,d.P116,d.P117,d.P118,d.P119,d.P120,d.TTYPE,d.idOrg from DecF11 as d
    |where d.hid=73";
    
Command.CommandText = ТекстЗапроса;    
RecordSet = Новый COMОбъект("ADODB.RecordSet");    
RecordSet = Command.Execute();
8 Amfiaray
 
21.01.14
09:07
(7) Ну в этом коде ведь просто добавляются строки, а мне надо существующие переписать
9 Amfiaray
 
21.01.14
09:08
Пробовал как в (6), так же ошибка выходит
10 Ёпрст
 
21.01.14
09:18
И чо ?
11 Ёпрст
 
21.01.14
09:18
тупо update и усё..
12 Ёпрст
 
21.01.14
09:21
и еще, у тя хоть это работает ?
ТекстЗапроса = "select * from  [wrk_org]";
?
13 Amfiaray
 
21.01.14
09:30
Не выходит, делаю по примеру по SQL:
UPDATE table_name SET column1 = ‘data1’, column2 = ‘data2’ WHERE column3 = ‘data3’; всё равно ошибки
14 Ёпрст
 
21.01.14
09:37
(13) как в (12) работает ?
15 Amfiaray
 
21.01.14
09:48
(14), Да работает
16 Amfiaray
 
21.01.14
09:49
Только не:
ТекстЗапроса = "select * from  [wrk_org]";
а:
ТекстЗапроса = "select * from  wrk_org";
17 Amfiaray
 
21.01.14
10:06
(14) Работает не только это, я уже заполнил все таблицы из 1С, просто на момент заполнения, адреса не были забиты в базу, теперь хотелось бы просто имеющиеся записи отредактировать
18 Ёпрст
 
21.01.14
10:08
(16) %)))))))))))))))))
19 Amfiaray
 
21.01.14
10:10
(18) Хватит ржить %) я этот SQL вообще не знаю, меня бухи повесят если им сегодня это не сделаю, они и так уже на сутки с декларацией опаздали
20 Amfiaray
 
21.01.14
10:21
Прпробовал удалить все записи и снова записать уже со всеми заполненными полями, фигня вышла, id меняются и записи по подразделениям не выходят :(
21 Ёпрст
 
21.01.14
10:28
Ладно..
если уж делаешь update, то будь добр, смотри хотя бы на тип обновляемой колонки и не пихай в число строку.
22 Ёпрст
 
21.01.14
10:30
на вот, для понимания
https://cloud.mail.ru/public/d3232462c244/123.JPG
23 Amfiaray
 
21.01.14
10:34
(21) Кстати об этом, ещё когда заносил данные в таблицу 11 возник вопрос, колонки Р106-120 имеют тип DECIMAL, но они нормально записались из переменных типа Р106 = Формат(Количество, "ЧРД='.'; ЧДЦ=5"), почему не выдает ошибку?  ведь функция Формат возвращает строку
24 Amfiaray
 
21.01.14
10:53
(21) Всё перепроверил, типы данных совпадают с типом колонок
25 Ёпрст
 
21.01.14
10:56
Ошибка какая хоть ?
Текст запроса приведи свой
26 Amfiaray
 
21.01.14
11:00
Текст запроса вот:
UPDATE wrk_org SET [INN] ='2204057496',[KPP]='223745005',[OrgName]='Аватар с.Б.Исток ул.Партизанская 5а',
[Phone]='',[Email] = '',[CCode] ='643', [Index] ='659560', [Rcode] ='22', [Area] ='Быстроистокский р-н',
[City]='', [Place]='Быстрый Исток с',[Street]='Партизанская ул',[Building]='5',[Korp]='а',
[Flat]='',[Head_id]='1',[OrgType]='0',[DirID]='0',[BuhID]='0',[Liter]='' WHERE OrgName = Аватар с.Б.Исток ул.Партизанская 5а

А ошибка всё та же
{Форма.Форма.Форма(83)}: Ошибка при вызове метода контекста (Open)
        RecordSet.Open(cmd);
по причине:
Произошла исключительная ситуация (Microsoft SQL Server Compact OLE DB Provider): В команде имеется одна или несколько ошибок. [,,,,,]
27 Amfiaray
 
21.01.14
11:13
Во, заменил WHERE OrgName = Аватар с.Б.Исток ул.Партизанская 5а на WHERE id = 10; Просто проверить и такой запрос прошел.
попробую сейчас попробовать чз id сделать
28 Ёпрст
 
21.01.14
11:21
а зачем делать open ???
29 Ёпрст
 
21.01.14
11:22
блин, наименование надо через like делать и в ковычках..
30 Amfiaray
 
21.01.14
11:37
(29) Спасибо большое за терпение, разобрался, всё заработало :)
AdBlock убивает бесплатный контент. 1Сергей