:: Вопросы по 1С
Получить доступ к табличкам
PaulWist
Автор

Сообщений: 14621
Дата регистрации: 01.04.2004
Для 1с7.7 SQL надо получить доступ к таблицам самой БД.

Что делаю:


Object = CreateObject(v77s.application)
Object.Initialize(RmTrade, /d Path, /N User /P Password)

Фактически получен доступ к самой БД, теперь хотелось бы получить доступ к табличкам Sql Server-a, как это можно организовать?


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Получить доступ к табличкам
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Паш, а где ты в самой 1С видел доступ к SQL-ным табличкам?


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Получить доступ к табличкам
PaulWist
Автор

Сообщений: 14621
Дата регистрации: 01.04.2004
Я не видел, НО в конфигураторе задается имя сервера, БД логин, пароль каким-то образом 1с цепляется к серверу, вот я думаю мож есть какая-то ф-ия типа ПолучитьСтрокуСоединения().


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Получить доступ к табличкам
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Ну ты даешь! Назвать получение строки или параметров соединения получением доступа к таблицам!
В самой 1С этого за полной ненадобностью нет. Но вот где-то в тырнете видел описания расположения такой информации. Разумеется, доставать ее придется самому.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Получить доступ к табличкам
PaulWist
Автор

Сообщений: 14621
Дата регистрации: 01.04.2004
ssa
Ну ты даешь! Назвать получение строки или параметров соединения получением доступа к таблицам! В самой 1С этого за полной ненадобностью нет. Но вот где-то в тырнете видел описания расположения такой информации. Разумеется, доставать ее придется самому.

1. Вопервых я не знаю есть ли в 1с специфический обьект для доступа к "потрохам" БД, поэтому спросил про доступ к табличкам.

2. Во вторых, как мне видится наиболее просьой способ - это получить указатель соединения или , что мало вероятно строку соединения.

3. Посмотри, мож там не всё "запущено"


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Получить доступ к табличкам
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
PaulWist
ssa
Ну ты даешь! Назвать получение строки или параметров соединения получением доступа к таблицам! В самой 1С этого за полной ненадобностью нет. Но вот где-то в тырнете видел описания расположения такой информации. Разумеется, доставать ее придется самому.

1. Вопервых я не знаю есть ли в 1с специфический обьект для доступа к "потрохам" БД, поэтому спросил про доступ к табличкам.

2. Во вторых, как мне видится наиболее просьой способ - это получить указатель соединения или , что мало вероятно строку соединения.

3. Посмотри, мож там не всё "запущено"
Паш, 1С77 - закрытая система, не расчитаная на допуск кого-то/чего-то внутрь себя. Точка.
Если таки хочеться внутрь - тырнет в зубы и на поиск сторонних прибахаов, умеющих лазить к табличкам помимо самой 1С. Иногда даже с использование ее модели и нотации.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Получить доступ к табличкам
PaulWist
Автор

Сообщений: 14621
Дата регистрации: 01.04.2004
Вот нашел

Цитата:
16. Как узнать логин и пароль подключения 1С к MS SQL Server
К сожалению автор этой идеи неизвестен.
Эти данные храняться в файле 1Cv7.DBA. Этот файл привязан к файлу usrdef\users.usr (вот поэтому и надо создать хотя бы одного пользователя в конфигураторе), и если вдруг надо будет изменить этот файл (ну например кто то забыл пароль администратора) и это сделать в другой базе, то привязка потеряется, и информацию о параметрах подключения 1С к SQL Server прочесть уже не удастся. Решение этой проблемы как всегда простое - все данные по доступу к SQL Server хранятся в файле 1Cv7.DBA. Они там не в октрытом виде, но и не зашифрованы 128 битным ключом по методу md5. Вся защита основана на простеньком XOR. Если у кого есть желание, можете сами написать метод шифрования, только вот зачем, если есть уже говотовые решения.
Код:
Function XOR(Val ParA, Val ParB)
Res = 0;
Koef = 1;
For BitNumber = 1 To 8 Do
BitA = ParA % 2;
BitB = ParB % 2;
ParA = Int(ParA / 2);
ParB = Int(ParB / 2);
BitC = (BitA + BitB) % 2;
Res = Res + BitC * Koef;
Koef = Koef * 2;
EndDo;
Return Res;
EndFunction
// индексы значений с списке
// server = 2, db = 4, uid = 6, pwd = 8, checksum = 10
Function ConnectionString() export
Var SQLKeyCode[36], ConnectCode[200];
ConnectFile = IBDir() + "1Cv7.DBA";
If FS.ExistFile(ConnectFile) = 0 Then
Message("Это не SQL - база!", "!");
Return (0);
EndIF;
FSO = CreateObject("Scripting.FileSystemObject");
F = FSO.OpenTextFile(ConnectFile, 1);
ConnectLen = 0;
While F.AtEndOfStream = 0 Do
ConnectLen = ConnectLen + 1;
ConnectCode[ConnectLen] = Asc(F.Read(1));
EndDo;
F.Close();
FSO = 0;
SQLKey = "19465912879oiuxc ensdfaiuo3i73798kjl";
For i = 1 To 36 Do
SQLKeyCode[i] = Asc(Сред(SQLKey, i, 1));
EndDo;
Connect = "";
For i = 1 To ConnectLen Do
Connect = Connect + Chr(XOR(ConnectCode[i], SQLKeyCode[(i - 1) % 36 + 1]));
EndDo;
vl=createobject("ValueList");
Connect=StrReplace(Connect,"{","");
Connect=StrReplace(Connect,"}","");
vl.fromSeparatedString(Connect);
return (vl);
EndFunction
if ExclusiveMode()=0 then
if FS.ExistFile(IbDir()+"1cv7.dds")=1 then
constr=ConnectionString();
if ConStr<>0 then
server=constr.getValue(2);database=constr.getValue(4);uid=constr.getValue(6); pwd=constr.getValue(8);

Теперь это хозяйство надо перевести на фокс, всё бы ничего только вот кто это такой Asc(Сред(SQLKey, i, 1)); и вообще чЁ за "диалект" фокса


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Получить доступ к табличкам
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Сред() -> Substr
BitXor
Alines()
ChrTran()
в зубы и вперед.
Если не забуду, то поищу функцию взамен написанной тут XOR без побитового цикла.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Получить доступ к табличкам
PaulWist
Автор

Сообщений: 14621
Дата регистрации: 01.04.2004
Браво автору, жаль, что там не знают его координат, а так бы поставил ящик пива !


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Получить доступ к табличкам
PaulWist
Автор

Сообщений: 14621
Дата регистрации: 01.04.2004
Собственно на коленке

CLEAR
?ConnectionString()
aa = STRTRAN( ConnectionString() ,'{', '')
aa = STRTRAN( aa ,'}', '')
aa = STRTRAN( aa ,'"', '')
?aa
?GETWORDNUM(aa,2,',')
?GETWORDNUM(aa,4,',')
?GETWORDNUM(aa,6,',')
?GETWORDNUM(aa,8,',')
Function ConnectionString()
Local SQLKeyCode[36], ConnectCode[200]
ConnectFile = "Путь до самого файла\" + "1Cv7.DBA"
FTOstr = FILETOSTR(ConnectFile)
FOR i = 1 TO LEN(FTOstr)
ConnectCode[i] = Asc(SUBSTR(FTOstr, i, 1))
ENDFOR
SQLKey = "19465912879oiuxc ensdfaiuo3i73798kjl"
For i = 1 To 36
SQLKeyCode[i] = Asc(Substr(SQLKey, i, 1))
Endfor
Connect = ""
For i = 1 To LEN(FTOstr)
Connect = Connect + Chr(XOR(ConnectCode[i], SQLKeyCode[(i - 1) % 36 + 1]))
EndFor
RETURN Connect
ENDFUNC
Function XOR( ParA, ParB)
Res = 0
Koef = 1
For BitNumber = 1 To 8
BitA = ParA % 2
BitB = ParB % 2
ParA = Int(ParA / 2)
ParB = Int(ParB / 2)
BitC = (BitA + BitB) % 2
Res = Res + BitC * Koef
Koef = Koef * 2
EndFor
Return Res
EndFunc


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Получить доступ к табличкам
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
CLEAR
?ConnectionString()
*ssa* aa = STRTRAN( ConnectionString() ,'{', '')
*ssa* aa = STRTRAN( aa ,'}', '')
*ssa* aa = STRTRAN( aa ,'"', '')
aa = Chrtran(ConnectionString(), '{}"', '')
?aa
?GETWORDNUM(aa,2,',')
?GETWORDNUM(aa,4,',')
?GETWORDNUM(aa,6,',')
?GETWORDNUM(aa,8,',')
Function ConnectionString()
Local SQLKeyCode[36], ConnectCode[200]
ConnectFile = "Путь до самого файла\" + "1Cv7.DBA"
*ssa* Connect = ""
SQLKey = "19465912879oiuxc ensdfaiuo3i73798kjl"
*ssa* тут остальные преобразования ключа, которые для процесса расшифровки не важны
*ssa* For i = 1 To 36
*ssa* SQLKeyCode = Asc(Substr(SQLKey, i, 1))
*ssa* Endfor
*ssa* FTOstr = FILETOSTR(ConnectFile)
*ssa* FOR i = 1 TO LEN(FTOstr)
*ssa* ConnectCode[i] = Asc(SUBSTR(FTOstr, i, 1))
*ssa* ENDFOR
*ssa*
*ssa* For i = 1 To LEN(FTOstr)
*ssa* Connect = Connect + Chr(XOR(ConnectCode[i], SQLKeyCode[(i - 1) % 36 + 1]))
*ssa* EndFor
RETURN Connect
Return decode(FILETOSTR(ConnectFile), SQLKey)
ENDFUNC
*ssa* Function XOR( ParA, ParB)
*ssa* Res = 0
*ssa* Koef = 1
*ssa* For BitNumber = 1 To 8
*ssa* BitA = ParA % 2
*ssa* BitB = ParB % 2
*ssa* ParA = Int(ParA / 2)
*ssa* ParB = Int(ParB / 2)
*ssa* BitC = (BitA + BitB) % 2
*ssa* Res = Res + BitC * Koef
*ssa* Koef = Koef * 2
*ssa* EndFor
*ssa* Return Res
*ssa* EndFunc
Function DeCode
Lparameters lcInString As String, lcKeyStr As String
Local lcRetVal As String
lcRetVal = ''
For i=1 To Len(lcInString)
lcRetVal = lcRetVal + Chr(Bitxor(Asc(Substr(lcInString, i, 1)), Asc(Substr(lcKeyStr, i, 1))))
Next
Return lcRetVal
Как-то так.
Выдернуто, кстати, из проги по расшифровке процедур, функций, вьюх и триггеров на SQL Server.


------------------
Лень - это неосознанная мудрость.




[i]Исправлено 1 раз(а). Последнее : ssa, 15.12.08 14:28
Ratings: 0 negative/0 positive
Re: Получить доступ к табличкам
Рома

Сообщений: 1079
Дата регистрации: 06.06.2001
А встроенная функция BitXor вместо Function XOR( ParA, ParB) не проходит?
Ratings: 0 negative/0 positive
Re: Получить доступ к табличкам
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Рома
А встроенная функция BitXor вместо Function XOR( ParA, ParB) не проходит?
А я ее указывал в своем списке, но некоторые не сочли нужным ее заметить.
И еще Alines() я указывал, которую можно вместо четырех GetWordNum() использовать, но...


------------------
Лень - это неосознанная мудрость.




Исправлено 1 раз(а). Последнее : ssa, 15.12.08 14:38
Ratings: 0 negative/0 positive
Re: Получить доступ к табличкам
PaulWist
Автор

Сообщений: 14621
Дата регистрации: 01.04.2004
ssa
Рома
А встроенная функция BitXor вместо Function XOR( ParA, ParB) не проходит?
А я ее указывал в своем списке, но некоторые не сочли нужным ее заметить.
И еще Alines() я указывал, которую можно вместо четырех GetWordNum() использовать, но...

Серёж, я не зря опубликовал "сырой" код, знал, что доточишь


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Получить доступ к табличкам
LUCIAN

Сообщений: 343
Откуда: Лида Беларусь
Дата регистрации: 25.03.2008
PaulWist
Фактически получен доступ к самой БД, теперь хотелось бы получить доступ к табличкам Sql Server-a, как это можно организовать?
www.aysvel.com.ua-это поможет?
Ratings: 0 negative/0 positive
Re: Получить доступ к табличкам
PaulWist
Автор

Сообщений: 14621
Дата регистрации: 01.04.2004
Спасибо. Проблема решена.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Получить доступ к табличкам
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Цитата:
RETURN Connect
Return decode(FILETOSTR(ConnectFile), SQLKey)

Один лишний
Ну из возварщенной строки я понял только, что данные лежат на таком то сервере


------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive
Re: Получить доступ к табличкам
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
AleksM
Цитата:
RETURN Connect
Return decode(FILETOSTR(ConnectFile), SQLKey)

Один лишний
Угу, первый не закоментировал.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Получить доступ к табличкам
PaulWist
Автор

Сообщений: 14621
Дата регистрации: 01.04.2004
Должно быть всё, сервер, имя Бд, логин, пароль.


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Получить доступ к табличкам
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Должно быть, НО нету
Абракадабра какая то


------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 4 (Гостей: 4)

© 2000-2024 Fox Club 
Яндекс.Метрика