Имя: Пароль:
1C
1C 7.7
v7: неправильная кодировка в DBF
0 fantomask
 
27.07.17
07:51
Идет выгрузка данных в формате DBF из 1С 7.7. При загрузке в 1С 8.3 вся кириллица превращается в нечитабельный формат âìê ƒ¬¬áßáαá⌐߬«ú« αá⌐«¡á Пробовал с кодировкой на стороне 1С 7.7 и на стороне 1С 8.3 не помогает.
1 fantomask
 
27.07.17
07:52
Не правильно передалось. Вот так выглядит ошибка:
https://yadi.sk/d/gKqglU843LShFP
2 1dvd
 
27.07.17
07:52
а почему выбрали формат дбф для переброса 7.7-8.3 ?
3 1dvd
 
27.07.17
07:53
Файл = создатьОбъект("XBASE"); //создаем ссылку на файл DBF
Файл.ОткрытьФайл("catalog.dbf"); //открываем файл на диске
Файл.КодоваяСтраница(1); //задаем кодировку: 0 - windows, 1 - DOS
4 fantomask
 
27.07.17
07:53
(2) а как еще? через КД не получается. Через текстовый документ или CSV нужно парсить
5 1dvd
 
27.07.17
07:54
(4) да, бида...
6 fantomask
 
27.07.17
07:54
(3) Делал, всё равно выходит та же проблема. Может проблема в региональных стандартах винды?
7 1dvd
 
27.07.17
07:57
(6) Показывай как выгружаешь
8 fantomask
 
27.07.17
08:05
Процедура ВыгрузитьНоменклатуру()

    ДБФ = СоздатьОбъект("XBASE");
        ДБФ.КодоваяСтраница(1);
    // проектируется структура таблицы, т.е. имена и типы полей
    ДБФ.ДобавитьПоле("INN","S",50,0);    // числовое поле ИНН Организации
    ДБФ.ДобавитьПоле("ISGROUP","S",50,0);    // числовое поле Группа?
    ДБФ.ДобавитьПоле("CODE","S",30,0);    // строковое поле Код
    ДБФ.ДобавитьПоле("NAME","S",30,0);    // строковое поле Наименование
    ДБФ.ДобавитьПоле("EDIZM","S",30,0);    // строковое поле ЕдИзм
    ДБФ.ДобавитьПоле("TYPE","S",30,0);    // строковое поле Тип ноемнклатуры
        
    // создание файла с указанной структурой
    ДБФ.СоздатьФайл(КаталогСохранения+"\Tovar.dbf");
    Выборка = СоздатьОбъект("Справочник.Номенклатура");
    Выборка.ВыбратьЭлементы();
    Пока Выборка.ПолучитьЭлемент()=1 Цикл
        
        ДБФ.Добавить();        
        ДБФ.INN = Константа.ИННОрганизации;
        ДБФ.CODE = Выборка.Код;
        ДБФ.NAME = Выборка.Наименование;
        ДБФ.EDIZM = Строка(Выборка.ЕдиницаИзмерения);
        ДБФ.TYPE = Строка(Выборка.ТипНоменклатуры);
        ДБФ.IsGROUP = Выборка.ЭтоГруппа();
        ДБФ.Записать();
    КонецЦикла;
     ДБФ.ЗакрытьФайл();
КонецПроцедуры
9 1dvd
 
27.07.17
08:06
ДБФ.КодоваяСтраница(0);
10 fantomask
 
27.07.17
08:28
(9) пробовал, тот же результат.
11 1dvd
 
27.07.17
08:30
(10) те же кракозябры? не верю. Посмотри дбфку каким-нидь просмотрщиком
12 Имитирующий работу
 
27.07.17
08:36
Надо запускать оба процесса под русской локалью ОС.1Сv77 и то, где происходит загрузка на 1Сv8 - клиент или сервер. Не локализация сеанса 1С, а именно локаль для процесса.
13 fantomask
 
27.07.17
08:42
(12) язык на ОС сервера на английском, на нем же работаем через RDP. Может причина в этом?
14 пипец
 
27.07.17
08:45
не так давно проскальзывало с правкой реестра по кодировке
15 Масянька
 
27.07.17
08:50
(13) Вполне может быть.
Не знаю, как и что писали разработчики, но если в 7.7 стоит раскладка аглицкая, то - копируешь из семерки текст на русском , вставляешь (проверено: word, excel, firefox) - получаешь кракозябры.
16 fantomask
 
27.07.17
08:57
(15) Скорее всего в то время, 1С выставлял санкции Америке )))
Загрузили на винде с руским языком. нормально загрузилось... Будем смотреть локальную политику сервера.
17 Масянька
 
27.07.17
09:18
(16) ИМХО: в семерке используется dbf. Там несколько драйверов кодовых страниц (ANSI, 866 и пр.). Судя по всему, именно с этим и проблемы (драйвером).
Подчеркиваю - ИМХО.
18 Масянька
 
27.07.17
09:19
(16) Кстати, в (15) я об этом и написала: из эски куда-то - имеет значение раскладка, наоборот (откуда-то в эску) - раскладка не имеет значения.
19 Имитирующий работу
 
27.07.17
09:26
(17) Там унутре codebase, такое же древнее гуано мамонта, как и dbf. Он при обработке кодировки DOS (на самом деле по стандарту - OEM, отчего все проблемы и происходят) смотрит именно в локаль процесса.
Никакие правки реестра тут ни при чем.
20 Имитирующий работу
 
27.07.17
09:28
(18) Это общее поведение для неюникодных программ. К dbf не имеет ни малейшего.
21 Sserj
 
27.07.17
09:47
(2) Если 77 и 8-ка рядом то вообще удобнее прямо из 8-ки чеерз внешний источник.
22 h-sp
 
27.07.17
09:52
(15) там и наоборот можно. Копируешь текст в семерку. После этого кракозябры исчезают, начинает нормально работать.