|
8.3 (УФ): выгрузка в dbf - вместо русских букв знаки вопросов!!! | ☑ | ||
---|---|---|---|---|
0
dft2014
01.03.15
✎
00:02
|
8.3 управляемое приложение
Пишу обработку для выгрузки в dbf-файл. Файл формируется, но вместо русских букв вопросительные знаки ?????? Подскажите, где ошибка? Пробовала прописывать разную кодировку (OEM и ANSI), но не помогло. Вот код: &НаКлиенте Процедура Выгрузить(Команда) Структура = ВыгрузитьДанные(); ПолучитьФайл(Структура.Адрес,Структура.Имя); КонецПроцедуры &НаСервере Функция ВыгрузитьДанные() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВедомостьНаВыплатуЗарплатыВБанкЗарплата.КВыплате, | ВедомостьНаВыплатуЗарплатыВБанкЗарплата.НомерЛицевогоСчета, | ФИОФизическихЛицСрезПоследних.Фамилия |ИЗ | Документ.ВедомостьНаВыплатуЗарплатыВБанк.Зарплата КАК ВедомостьНаВыплатуЗарплатыВБанкЗарплата | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизическихЛиц.СрезПоследних КАК ФИОФизическихЛицСрезПоследних | ПО ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Сотрудник.ФизическоеЛицо = ФИОФизическихЛицСрезПоследних.ФизическоеЛицо |ГДЕ | ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Ссылка.Организация = &Организация | И ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Ссылка.ЗарплатныйПроект = &ЗарплатныйПроект"; Запрос.УстановитьПараметр("ЗарплатныйПроект", Проект); Запрос.УстановитьПараметр("Организация", Организация); РезультатЗапроса = Запрос.Выполнить(); ТаблицаЗапроса=РезультатЗапроса.Выгрузить(); ТаблицаЗапроса.Свернуть("Фамилия,НомерЛицевогоСчета","КВыплате"); БД = Новый XBase; БД.Поля.Добавить("CODE", "S", "32"); БД.Поля.Добавить("SUMMA", "N", "16", "2"); БД.поля.Добавить("FIO", "S", "40"); Файл=Новый Файл(ПолучитьИмяВременногоФайла("dbf")); ИмяТемпФайла=СтрЗаменить(Файл.ПолноеИмя,Файл.Имя,"")+Лев(Файл.ИмяБезРасширения,8)+Файл.Расширение; БД.СоздатьФайл(ИмяТемпФайла); // БД.Кодировка = КодировкаXBase.OEM; //такая кодировка тоже не помогает БД.Кодировка = КодировкаXBase.ANSI; БД.АвтоСохранение = Истина; Для каждого СтрокаТЗ Из ТаблицаЗапроса Цикл БД.Добавить(); БД.CODE = СокрЛП(СтрокаТЗ.НомерЛицевогоСчета); БД.FIO = СокрЛП(СтрокаТЗ.Фамилия); БД.SUMMA = СтрокаТЗ.КВыплате; КонецЦикла; БД.ЗакрытьФайл(); ДД = Новый ДвоичныеДанные(ИмяТемпФайла); Адрес=ПоместитьВоВременноеХранилище(ДД); возврат Новый Структура("Адрес,Имя",Адрес,ИмяТемпФайла); КонецФункции |
|||
1
dft2014
01.03.15
✎
00:06
|
Вот как это выглядит: http://s017.radikal.ru/i421/1502/3a/415be62cbd60.jpg
|
|||
2
Garykom
гуру
01.03.15
✎
00:12
|
(0) попробовать установить кодовую страницу (БД.Кодировка = КодировкаXBase.OEM) не после создания файла (БД.СоздатьФайл(ИмяТемпФайла)) а до
(1) а может просто кодовая в файле не соответствует содержимому или шрифта нету или не понимает ваш просмотрщик попробовать http://www.alxsoft.narod.ru/RUS/dbfnav.htm там кнопочку OEM|DOS переключать |
|||
3
dft2014
01.03.15
✎
00:29
|
(2) Пробовала переместить выше БД.Кодировка = КодировкаXBase.OEM чтобы она была раньше БД.СоздатьФайл(ИмяТемпФайла) - не помогло.
Установила себе DBFNavigator: пробовала менять кодировку с помощью переключателя. Вопросительные знаки не превратились в буквы, ничего не поменялось... Что еще можно попробовать??? |
|||
4
SSSSS_AAAAA
01.03.15
✎
00:41
|
(3) Вопросительные знаки кодировкой не поменяются. Это что-то в системе накосячено. 1С тут не при делах, уже проверено.
|
|||
5
Garykom
гуру
01.03.15
✎
01:01
|
||||
6
dft2014
01.03.15
✎
01:04
|
(4) Наверное вы правы: при запуске на файловой базе - такой проблемы нет. А какие настройки надо на сервере посмотреть? У нас на сервере 1С везде установлены русские настройки и русский язык. Винда WindowsServer2008R2.
|
|||
7
Garykom
гуру
01.03.15
✎
01:59
|
XBase (XBase)
Доступность: Тонкий клиент, сервер, толстый клиент, внешнее соединение. (6) так что сделайте создание dbf на клиенте и все |
|||
8
dft2014
01.03.15
✎
02:10
|
(7) Как???
|
|||
9
Garykom
гуру
01.03.15
✎
02:46
|
(8) написав над процедурой/функцией &НаКлиенте
еще в нее сразу данные простых типов передавать для записи (число, строка ...) или получая значения простых типов внутри процедуры/функции вызывая серверные функции (которые возвращают простые типы) |
|||
10
SadrArt
01.03.15
✎
04:35
|
Попробуйте заменить в своем коде
Кодир = "cp866"; // КодировкаТекста.OEM; или Кодир = "windows-1251"; // КодировкаТекста.ANSI; |
|||
11
Torquader
01.03.15
✎
12:19
|
Проблема в том, что нужно на сервере настраивать кодовую страницу для старых программ в русскую, так как Кодировка.OEM или Кодировка.ANSI как раз применяет именно установленную там кодировку, и, если она неправильная, то будут вопросики.
P.S. конечно, можно быть очень большим Гуру и собрать DBF-Файл через ADO. |
|||
12
EvgeniuXP
01.03.15
✎
13:53
|
переустановить сервер и настроить всё заново :)
|
|||
13
Torquader
01.03.15
✎
13:59
|
(12) Вам бы всё переустанавливать.
Нужно, всего лишь, выбрать правильно языковые настройки. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |