Tamila Abdullayeva
Tamila Abdullayeva | Репутация: 101 (Кандидат) 23 декабря 2010 в 10:11
Можно ли написав некоторую программу в 1с,т.е.,имея БД,извлечь оттуда данные SQL запросом,без посредничества других программ
Константин Ефименко
Константин Ефименко | Репутация: 116 (Кандидат) 23 декабря 2010 в 15:36

 Можно посредством 1с++
 Создаете объект ODBCRecordSet и пишите для него прямой sql запрос к базе.
Очень удобно т.к. можно в запросах использовать имена метаданных, как они заданы в конфигураторе.
Можно подключаться к другой базе и получать данные и из нее. Речь идет о 1С 7.7

Вероника Родионова
Вероника Родионова | Репутация: 107 (Кандидат) 23 декабря 2010 в 18:45

Ну если сама база в серверном варианте, то можно просто sql enterprise manager-ом к ней подрубиться (если он не считается другой программой) и написать запрос. Для выяснения как что называется, надо будет в базе запустить обработку типа enterprise integrator, таких полно в сети.

Николай Кириллов
Николай Кириллов | Репутация: 109 (Кандидат) 24 декабря 2010 в 05:47

1. Для начала выясните является ли ваша 1С файловым вариантом или серверным. И в 1с 7.7 и в 1с 8.х это можно выяснить запустив 1с в режипе "предприятия" и выбрав пунк меню "Справка"- "О программе", посмотреть на значение пункта "Режим" в появившемся информационном окне.
2. Если это серверный вариант (для 7.7 MS SQL, для 8.х - вариантов больше,  MS SQL, PostGreSQL  и т.д. ) то вы можете получить данные в любом менеджере этого SQL сервер, небольшая проблема только в наименованиях, но для каждого варианта баз есть свои удобные способы.

Александр Гранов
Александр Гранов | Репутация: 103 (Кандидат) 25 декабря 2010 в 11:23

Connection = Новый COMОбъект("ADODB.Connection");
RecordSet = Новый COMОбъект("ADODB.RecordSet");
Попытка
Connection.Open(Provider=SQLOLEDB.1;Persist Security Info=False;User ID=<Имя пользователя БД>;Password=<Пароль пользователя БД>; Initial Catalog=<Имя БД>;Data Source=SQL);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
 
 
ТекстЗапросаSQ = "Select * from <Ваше имя таблицы>";
RecordSet.Open(ТекстЗапросаSQL, Connection, 1);
 
Пока RecordSet.EOF()=0 Цикл
//Обход результат запроса;
КонецЦикла;
 

RecordSet.Close();
Connection.Close();