|
Передача данных из MSSQL в 1С | ☑ | ||
---|---|---|---|---|
0
sx55
03.08.21
✎
15:17
|
Здравствуйте гуру, у меня вопрос следующего характера...
Есть сторонняя база MSSQL, в которой имеется куча таблиц из которых нужно получить данные и передать в 1С. Сам я давно не занимался MSSQL (более пятнадцати лет) и уже ничего не помню, а времени тратить на воспоминания нет. Если кто сможет предоставить работающий пример передачи данных из определённой таблицы, в определённой базе MSSQL, то буду очень благодарен. Вот мой набросок кода из 1С СтрокаСоединения = ("Driver=SQL Server;Server=") + Объект.SQLServer + (";UID=") + Объект.Login + (";PWD=") + Объект.Password + (";DataBase") + Объект.ИмяБД; СоединениеSQL = Новый ComObject("ADODB.Connection"); СоединениеSQL.ConnectionString=СтрокаСоединения; Попытка Сообщить("Open"); СоединениеSQL.Open(); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; ЗаписиSQL = Новый ComObject("ADODB.RecordSet"); ЗаписиSQL.ActiveConnection = СоединениеSQL; СоединениеSQL.Close(); Теперь, по логике, нужно получить количество колонок в указанной таблице и считать их содержимое. Но я не помню язык запросов и как передать данные в таблицу 1С. :( |
|||
1
ДенисЧ
03.08.21
✎
15:23
|
Надо вспомнить. Без вспоминания SQL ты ничего не сделаешь.
Ну, или ВИДы настраивать... А так... rs = СоединениеSQL.Execute("select * from TableFromBigHeapOfTables"); Для каждого fld ИЗ rs.Fields Цикл сообщить("" + rs.Name)$ КонецЦикла так ты получишь имена колонок |
|||
2
Aleksey
03.08.21
✎
15:24
|
||||
3
sx55
03.08.21
✎
15:26
|
(1) - Подожди, я не совсем понял логику "TableFromBigHeapOfTables", это название таблицы?
|
|||
4
sx55
03.08.21
✎
15:27
|
(2) - Спасибо за ссылки, видимо придётся вновь пройти этот путь ради простенькой задачки. :(
|
|||
5
ДенисЧ
03.08.21
✎
15:27
|
(3) Так ты не только SQL, но и английский забыл? Я старался, называл... ((
|
|||
6
sx55
03.08.21
✎
15:30
|
(5) - Я после работы занимаюсь, голова кругом. )))
|
|||
7
sx55
03.08.21
✎
15:39
|
Так, я похоже сложно объяснил.
Есть база, "DataBase", к которой я подключился. В ней, есть куча таблиц, имя одной из которых "Tab1", в которой есть колонки "Col1", "Col2" и т.д. Нужно получить имена колонок и содержимое таблицы. (5) - Твой пример не сработал, ругается на "Недопустимое имя объекта". |
|||
8
ДенисЧ
03.08.21
✎
15:41
|
rs = СоединениеSQL.Execute("select col1, col2 from Tab1");
Пока НЕ rs.EOF Цикл Сообщить("Col1 " + rs.Fields("Col1").value + " Col2 "+ rs.Fields("Col2").value); rs.MoveNext(); КонецЦикла |
|||
9
sx55
03.08.21
✎
15:50
|
(8) - Погоди, может я не правильно задаю имя таблицы?
Вот код: rs = СоединениеSQL.Execute("select * from dbo.UserLogin"); Пока НЕ rs.EOF Цикл Сообщить("Col1 " + rs.Fields("UserName").value); rs.MoveNext(); КонецЦикла; Результат: river][SQL Server]Недопустимое имя объекта "dbo.UserLogin". {ВнешняяОбработка.ИмпортДанных.Форма.Форма.Форма(27)}: rs = СоединениеSQL.Execute("select * from dbo.UserLogin"); по причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][SQL Server]Недопустимое имя объекта "dbo.UserLogin" |
|||
10
ДенисЧ
03.08.21
✎
15:53
|
Нет такой таблицы... Попробуй без dbo. И проверь имя БД, к которой обращаешься.
Можешь попробовать bdname.dboUserLogin |
|||
11
Ёпрст
03.08.21
✎
15:54
|
(9) открой ужо ssms и на нужной табличке пкм - выбрать первые...создаст тебе правильный селект
|
|||
12
sx55
03.08.21
✎
15:55
|
(10) - Увы, уже.
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][SQL Server]Недопустимое имя объекта "UserLogin". {ВнешняяОбработка.ИмпортДанных.Форма.Форма.Форма(27)}: rs = СоединениеSQL.Execute("select * from UserLogin"); по причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][SQL Server]Недопустимое имя объекта "UserLogin". |
|||
13
sx55
03.08.21
✎
15:56
|
(11) - Мне нужны все данные, а не их часть.
|
|||
14
ДенисЧ
03.08.21
✎
15:58
|
(12) Ну нету у тебя такой таблицы в твоей базе, что поделаешь...
|
|||
15
sx55
03.08.21
✎
16:01
|
(11) - Спасибо тебе душевное человек, часть проблемы помог решить. Я уже и забыл про это. )))
(12) - Ошибка была тут... rs = СоединениеSQL.Execute("select * from [Database].[dbo].[UserLogin]"); |
|||
16
sx55
03.08.21
✎
16:03
|
Всё, всем спасибо, пойду кино смотреть и спать. Завтра доделаю обработку.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |