powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Подключение к dbf-файлу 1С?
16 сообщений из 16, страница 1 из 1
Подключение к dbf-файлу 1С?
    #33632568
Sorm2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, плз, есть ли способ подключения к файлу dbf 1c b получения информациии в нормальной кодировке, без использования ODBC? pb90
...
Рейтинг: 0 / 0
Подключение к dbf-файлу 1С?
    #33632585
Фотография MicMic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Откуда открывать собрался?
...
Рейтинг: 0 / 0
Подключение к dbf-файлу 1С?
    #33632696
Sorm2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хммм...А конкретней? Pb 9.0, скрипт, для Transaction. C другой стороны файд dbf версии 7.7.
...
Рейтинг: 0 / 0
Подключение к dbf-файлу 1С?
    #33632706
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кодировка туда/сюда переводится функциями Windows API
Код: plaintext
1.
Function Boolean CharToOemA(String Source, REF String Target) Library 'user32.dll'
Function Boolean OemToCharA(String Source, REF String Target) Library 'user32.dll'
если Вы нашли чем смотреть dbf без ODBC и скрестили это с PB.
...
Рейтинг: 0 / 0
Подключение к dbf-файлу 1С?
    #33632728
Sorm2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не знаю почему, но в данном случае эта фукция не работает:(( Я так понимаю, достаточно было бы фунции OemToChar... Но она выдает строкой oчередной набор символов, хотя действие вроде бы обратное действию ODBC драйвера *.dbf, который возвращает , я так понимаю, 866-кодировку. А реально в таблице 1251.
...
Рейтинг: 0 / 0
Подключение к dbf-файлу 1С?
    #33632789
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sorm2 А реально в таблице 1251.
Эээ... нет. 1С в dbf в 866 кодировке хранит строки.
...
Рейтинг: 0 / 0
Подключение к dbf-файлу 1С?
    #33632798
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркЭээ... нет. 1С в dbf в 866 кодировке хранит строки.
Нет, 1251, ну которая не DOS :) . А какой драйвер используете?
...
Рейтинг: 0 / 0
Подключение к dbf-файлу 1С?
    #33632830
Sorm2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так пробую ODBC Microsoft *.dbf, настройка dbase 5. Селектом получаю строку, заношу в переменную. Белиберда. И строки там хранятся в Windows 1251. Можно блокнотом посмотреть, он как раз как ANSI открывает.
...
Рейтинг: 0 / 0
Подключение к dbf-файлу 1С?
    #33632896
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sorm2Так пробую ODBC Microsoft *.dbf, настройка dbase 5. Селектом получаю строку, заношу в переменную. Белиберда. И строки там хранятся в Windows 1251. Можно блокнотом посмотреть, он как раз как ANSI открывает.
Дык я же сказал, что перепутал. А если через ODBC драйвера для dbf от PB смотреть PB DATADIRECT OEM 4.10 dBASEFile - то он нормально кодировку определяет. По всей видимости драйвер от Microsoft не в ту кодировку переводит.
...
Рейтинг: 0 / 0
Подключение к dbf-файлу 1С?
    #33632949
Sorm2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ага, работает. Только почему-то первый символ получившейся строки - "Т". И что сие означает?
...
Рейтинг: 0 / 0
Подключение к dbf-файлу 1С?
    #33632964
Khodiki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может неправильно
я с DBF использую старую программку cp866 *.dbf
запускаю её один раз с новыми dbf и после этого ODBC их берет в нормальной кодировке. Это надо сделать один раз, после этого даже если содержимое DBF меняется все работет
для пользователей других прог это проходит незаметно
в основном ODBC дает абракадабру потому, что в заголовке DBF вообще не прописана кодировка.
...
Рейтинг: 0 / 0
Подключение к dbf-файлу 1С?
    #33633003
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sorm2Ага, работает. Только почему-то первый символ получившейся строки - "Т". И что сие означает?
Какой строки? У меня такого эффекта не наблюдается.
Khodikiдаже если содержимое DBF меняется все работет для пользователей других прог это проходит незаметно
Ага, до первого раза когда в 1С из zip'а базу восстановят.
...
Рейтинг: 0 / 0
Подключение к dbf-файлу 1С?
    #33633057
Sorm2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
trans_object.DBMS = "ODBC"
trans_object.AutoCommit = False
trans_object.DBParm = "ConnectString='DSN=1c;UID=;PWD='"
CONNECT USING trans_object;
if trans_object.sqlcode <> 0 then
MessageBox ('Внимание!', 'Ошибка связи с базой')
return -1
end if

ls_sql = 'select schim from 1saccs'
ls_syntax = trans_object.SyntaxFromSql(ls_sql,'',ls_error_bufer)
test = lds.CREATE(ls_syntax)
lds.SetTransObject(trans_object)
ll_row = lds.Retrieve()
///////////////
ls_test_string_2 = lds.GetItemString(1,'schim')
//////
ls_test_string_2 = "TўхЄ єўхЄр чр тюъ "
//////
CharToOemA(ls_test_string_2,ls_test_string)
///////////////////
ls_test_string_2 = "Тчет учета заявок"(на самом деле - "счет учета заявок"
...
Рейтинг: 0 / 0
Подключение к dbf-файлу 1С?
    #33633317
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Приведеный кусок кода без доработки напильником не работает.
2. У меня такая проблема не наблюдается.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
transaction trans_object
string ls_sql,ls_test_string_2,ls_test_string,ls_syntax,ls_error_bufer
long test,ll_row
DataStore lds

trans_object = create transaction

trans_object.DBMS = "ODBC"
trans_object.AutoCommit = False
trans_object.DBParm = "ConnectString='DSN=q;UID=;PWD='"
CONNECT USING trans_object;
if trans_object.sqlcode <>  0  then
MessageBox ('Внимание!', 'Ошибка связи с базой')
return - 1 
end if

ls_sql = 'select schim from 1saccs'
ls_syntax = trans_object.SyntaxFromSql(ls_sql,'',ls_error_bufer)
lds = create DataStore
test = lds.CREATE(ls_syntax)
lds.SetTransObject(trans_object)
ll_row = lds.Retrieve()
///////////////
ls_test_string_2 = lds.GetItemString( 1 ,'schim')
CharToOemA(ls_test_string_2,ls_test_string)
///////////////////
MessageBox(ls_test_string_2,ls_test_string)
ls_test_string_2 = "Вспомогательный", все как нужно.
...
Рейтинг: 0 / 0
Подключение к dbf-файлу 1С?
    #33633346
Sorm2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
:).Благодарствую за напильник.:) А вот такая вот ...нехорошее явление (я имею в виду "T" в начале каждого счета) приходится на каждый счет, который я получаю из таблицы счетов. Какой-то нехороший глюк. Причем ведь не преобразуется CharToOem! Возвращается, кстати, что драйвером Майкрософта, что PB DATADIRECT OEM 4.10 dBASEFile...Непонятно.
...
Рейтинг: 0 / 0
Подключение к dbf-файлу 1С?
    #33633378
Sorm2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Перезагрузился. Глюк пропал, сволочь! :)Теперь скрипт возвращает нормальные данные. Спасибо всем, а в особенности Марку:).
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Подключение к dbf-файлу 1С?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]