|
v7: 1c++ подключение к другой базе 1с 77 | ☑ | ||
---|---|---|---|---|
0
dk
27.09.17
✎
14:02
|
Вроде была возможность натравить 1с++ на другой мд и на другой скуль чтобы нормально запрос выполнялся вида "SELECT * FROM $Справочник.Товары"
как подключиться к другому нашел, а как указать чтобы брал другой MD? |
|||
1
Дык ё
27.09.17
✎
14:04
|
||||
2
dk
27.09.17
✎
14:08
|
(1) спб, видимо хелп в моей 1с-ке старый нет там такого метода
|
|||
3
dk
27.09.17
✎
14:15
|
что-то не выходит каменный цветок
|
|||
4
dk
27.09.17
✎
14:33
|
Матерится на ЗапросСклад.ВыполнитьИнструкцию(ТекстЗапроса, Результат); {C:\USERS\******\ОТЧЕТ ПО СБРОСУ.ERT(38)}: Meta name parser error: объект не найден "$Документ.ВводОВХ" |
|||
5
dk
27.09.17
✎
14:51
|
Вот так заработало |
|||
6
Ёпрст
27.09.17
✎
14:55
|
Можно пользовать ПрисоединитьМД.
Это, если нужно, чтоб метапарсер понимал id-ники второй базы. ЗЫ: если че, можно писать с помощью метапарсера запрос к обоим базам одновременно. |
|||
7
Ёпрст
27.09.17
✎
14:57
|
Процедура Сформировать()
рс=создатьОбъект("ODBCRecordSet"); ТекстЗапроса = " |SELECT | СпрНаш.DESCR as КлиентосВЭтойбазе -- наименование клиентоса в этой базе, можно и не присоединять справочник, а просто типизировать | ,Спр.DESCR as КлиентосВУдаленнойБазе --наименование клиентоса в удаленной базе |FROM $Справочник.Контрагенты СпрНаш |left join dataBase2.dbo.@Справочник.Контрагенты Спр on СпрНаш.Code = Спр.Code |"; глМД = СоздатьОбъект("MetaDataWork"); ТекстЗапроса=глМД.ОбрМетаСКЛ(ТекстЗапроса); глМД2 = СоздатьОбъект("MetaDataWork"); ПутьКБазе2 = "D:\полный путьк базе данных\"; глМД2.ПрисоединитьМД(ПутьКБазе2+"1Cv7.md"); ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"@","$"); ТекстЗапроса=глМД2.ОбрМетаСКЛ(ТекстЗапроса); Т = рс.ВыполнитьИнструкцию(ТекстЗапроса); Т.ВыбратьСтроку(); КонецПроцедуры |
|||
8
Ёпрст
27.09.17
✎
14:58
|
Это, для прилинкованного сервера, или для базы на одном скульсервере
|
|||
9
dk
27.09.17
✎
15:04
|
||||
10
dk
27.09.17
✎
15:58
|
еще нюансик выполз
БазаПодкл.ПрисоединитьИБ(Каталог1С); {C:\USERS\****\ОТЧЕТ ПО СБРОСУ.ERT(51)}: Введенный пароль неверен. ---- в одну базу норм цепляется, а в 2 филиала по vpn матерится сетевые каталоги филиалов открываются в проводнике нормально Есть идеи? |
|||
11
dk
27.09.17
✎
16:00
|
query analyzer норм с указанными логинами и паролями цепляется в филиалы
|
|||
12
dk
28.09.17
✎
07:50
|
вверх
|
|||
13
FN
28.09.17
✎
08:33
|
Укажи логин пароль пользователя 1с, а не скуля
|
|||
14
varelchik
28.09.17
✎
09:15
|
Дарю.
Функция глСоединение(ТипСоединения="",ПутьИБ="",Пользователь="Admin",Пароль="111111",ИмяСервера="") Экспорт Каталог=КаталогИБ(); Если Врег(ТипСоединения)="SQL" Тогда Попытка БД =СоздатьОбъект("ODBCDataBase"); Запрос=СоздатьОбъект("ODBCRecordSet"); Если ПустоеЗначение(ПутьИБ)=0 Тогда БД.ПрисоединитьИБ(ПутьИБ,Пользователь,Пароль); Запрос.УстБД(БД); КонецЕсли; Возврат Запрос; Исключение Возврат 0; КонецПопытки; ИначеЕсли Врег(ТипСоединения)="ОЛЕ" Тогда Попытка БД = СоздатьОбъект("OLEDBData"); Если ПустоеЗначение(ПутьИБ)=0 Тогда БД.ПрисоединитьИБ(ПутьИБ); Иначе СтрокаСоединения = "Provider=VFPOLEDB.1;Deleted=Yes;Data Source=" + Каталог + ";Mode=ReadWrite;Extended Properties="";User ID="";Password="";Mask Password=False;Collating Sequence=RUSSIAN;DSN=""";; БД.Соединение(СтрокаСоединения); КонецЕсли; Команда=БД.СоздатьКоманду(); Команда.УстановитьКаталогВремТаблиц(КаталогВременныхФайлов()); Возврат Команда; Исключение Возврат глСоединение("ДБФ",ПутьИБ); КонецПопытки; ИначеЕсли Врег(ТипСоединения)="ДБФ" Тогда Попытка БД =СоздатьОбъект("ODBCDataBase"); Если ПустоеЗначение(ПутьИБ)=0 Тогда БД.ПрисоединитьИБ(ПутьИБ); Иначе БД.Соединение("DRIVER={Microsoft Visual FoxPro Driver};Deleted=Yes; |Null=Yes;Collate=RUSSIAN;Exclusive=No;SourceType=DBF;SourceDB="+Каталог); КонецЕсли; Запрос=СоздатьОбъект("ODBCRecordSet"); Запрос.УстБД(БД); Возврат Запрос; Исключение Возврат 0; КонецПопытки; ИначеЕсли Врег(ТипСоединения)="SQLITE" Тогда база = СоздатьОбъект("SQLiteBase"); база.Открыть(":memory:"); Запрос = база.НовыйЗапрос(); Запрос.ВыполнитьЗапрос("PRAGMA journal_mode=WAL"); Возврат Запрос; ИначеЕсли Врег(ТипСоединения)="SQL_NEW" Тогда Попытка БД =СоздатьОбъект("ODBCDataBase"); Запрос=СоздатьОбъект("ODBCRecordSet"); СтрокаСоединения="Driver={SQL Server};Server="+ИмяСервера+";Database="+ПутьИБ+";Uid="+Пользователь+";Pwd="+Пароль+";"; Бд.Соединение(СтрокаСоединения); Запрос.УстБД(БД); Возврат Запрос; Исключение Возврат 0; КонецПопытки; Иначе МФ=СоздатьОбъект("MetaInfoClasses"); Если МФ.ЭтоSQL_Версия()=1 Тогда Возврат глСоединение("SQL"); Иначе Возврат глСоединение("SQLite"); КонецЕсли; КонецЕсли; КонецФункции // глСоединение |
|||
15
varelchik
28.09.17
✎
09:16
|
Пользователь именно 1С.
|
|||
16
dk
28.09.17
✎
11:51
|
спасибо
подключение через логин пароль каталог 1с заработало |
|||
17
dk
03.10.17
✎
11:33
|
щас проверил - подключение по OLE решает еще 1 старую проблему получения остатков на ТА (когда ТА в базах в разных месяцах)
1c++ и точка актуальности |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |