Версия для печати темы (https://pro1c.org.ua/index.php?s=a33e281e7d586c4a06b7b726fb1f61a1&showtopic=4029)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ *.DBF и украинский язык

Автор: Lefer 05.07.11, 14:18

Доброго времени суток.

Вопрос таков: выгружаю в dbf справочник. Есть реквизит типа строка, содержащий данные на украинском языке. Если открыть dbf и проверить заполнение поля с этими данными - все ок. Буквы украинского языка на месте. Загружаю в базу - вместо знаков украинского языка нижнее подчеркивание. В чем бок может быть?

Автор: pablo 05.07.11, 14:21

В кодировке при загрузке в базу.

Автор: Lefer 05.07.11, 14:38

Цитата(pablo @ 05.07.11, 15:21) *
В кодировке при загрузке в базу.


В семерке есть параметр "КодоваяСтраница", так вот она дает выбор только между Дос и Виндой. Чувствую, что надо будет получать код украинских символов и потом парсить строку...нашел букву украинского происхождения - подставь символ... как думаете?

Автор: mister-x 05.07.11, 14:41

так потрібно буде робити заміни крякозяблів на укр. символи, зустрічав таке в клієнт-банк

Автор: Lefer 05.07.11, 14:50

Цитата(mister-x @ 05.07.11, 15:41) *
так потрібно буде робити заміни крякозяблів на укр. символи, зустрічав таке в клієнт-банк


То есть так примерно

//...
СтрокаССимволами = DBF.NAME10 //содержит строку с украинскими символами
ДлинаСтроки = СтрДлина(СтрокаССимволами);
сч = 0;
Пока сч >=ДлинаСтроки Цикл
сч = сч +1;
Если Лев(СтрокаССимволами,сч) = "код одной из украинских букв" Тогда
          СтрЗаменить(СтрокаССимволами,Лев(СтрокаССимволами,сч),"код той самой буквы");
КонецЕсли;

Если Лев(СтрокаССимволами,сч) = "код другой из украинских букв" Тогда
          СтрЗаменить(СтрокаССимволами,Лев(СтрокаССимволами,сч),"код той самой буквы");
КонецЕсли;
//...

Автор: mister-x 05.07.11, 15:34

в клієнт-банку було явно вказано, яку крякозяблу на яку укр. літеру заміняти

Автор: Lefer 05.07.11, 15:41

Цитата(mister-x @ 05.07.11, 16:34) *
в клієнт-банку було явно вказано, яку крякозяблу на яку укр. літеру заміняти


С удовольствием глянул бы. Не припомните в каком именно клиент банке было?

Автор: mister-x 05.07.11, 16:10

Зараз не пригадаю - цю річ можна здогадатись при загрузці через відлагоджувач.

Автор: 5_kopeek 05.07.11, 16:58

Делала типа такого:

Функция ЗаменитьСимволы(Знач ТекСтрока)
    ТекСтрока = СтрЗаменить(ТекСтрока, "Ї", "Є");
    ТекСтрока = СтрЗаменить(ТекСтрока, "ї", "є");
    ТекСтрока = СтрЗаменить(ТекСтрока, "Ў", "І");
    ТекСтрока = СтрЗаменить(ТекСтрока, "ў", "і");
    ТекСтрока = СтрЗаменить(ТекСтрока, "•", "ї");
    ТекСтрока = СтрЗаменить(ТекСтрока, "°", "Ї");
    Возврат СокрЛП(ТекСтрока);
КонецФункции // ЗаменитьСимволы

Попробуйте. Или методом анализа крякозяблов подставьте нужные символы.

Автор: Vofka 05.07.11, 17:48

А я помню при записи тестового файла менял украинскую "і" на английскую, никто и не знал smile.gif

Автор: 5_kopeek 05.07.11, 18:39

Цитата(Vofka @ 05.07.11, 17:48) *
А я помню при записи тестового файла менял украинскую "і" на английскую, никто и не знал smile.gif

Жалко, что в латинском нет "ї" и "є" wink.gif

Автор: -=VJ=- 05.07.11, 19:59

Цитата(Lefer @ 05.07.11, 15:38) *
В семерке есть параметр "КодоваяСтраница", так вот она дает выбор только между Дос и Виндой.


И Вы хотите сказать, что Винда не возвращает Вам украинскую раскладку?
Ну так проверьте параметры системы - у меня ни разу проблем с этим не было.

Ну или выгружайте в xls smile.gif

Автор: kalyamov 05.07.11, 20:36

Цитата(Vofka @ 05.07.11, 18:48) http://pro1c.org.ua/index.php?act=findpost&pid=26830
И Вы хотите сказать, что Винда не возвращает Вам украинскую раскладку?
Ну так проверьте параметры системы - у меня ни разу проблем с этим не было.


Кодовая страница, говорят, должна работать, вот только там вопрос с местом - или сразу после создатьобъект - или после открытия файла.

Автор: -=VJ=- 05.07.11, 22:22

Цитата(kalyamov @ 05.07.11, 21:36) *
Кодовая страница, говорят, должна работать, вот только там вопрос с местом - или сразу после создатьобъект - или после открытия файла.


Ради интереса проверил на домашней машине, где 1С вообще не водилось до этого

//*******************************************
Процедура Сформировать()
    ДБФ=СоздатьОбъект("xBase");
    ДБФ.КодоваяСтраница(0);      
    ДБФ.ДобавитьПоле("FIO",2,50,0);
    ДБФ.СоздатьФайл("e:\1.dbf");
    ДБФ.Добавить();
    ДБФ.FIO="Євгеніївців І.Є.";
    ДБФ.Записать();
    ДБФ="";
    ДБФ2=СоздатьОбъект("xBase");
    ДБФ2.КодоваяСтраница(0);      
    ДБФ2.ОткрытьФайл("e:\1.dbf",,1);
    ДБФ2.Первая();
    Сообщить(ДБФ2.FIO);
КонецПроцедуры

Результат - Євгеніївців І.Є.

Никаких проблем

Автор: 5_kopeek 05.07.11, 23:39

Цитата(-=VJ=- @ 05.07.11, 22:22) *
Результат - Євгеніївців І.Є.
Никаких проблем

Вопрос с укр. символами решала лет 5 назад. Тогда проблемы были с загрузкой из файла, созданного в другой программе.

Lefer, кажись, в Вашем случае проблема в том, что Вы вообще не указали кодовую страницу и, по умолчанию, файл записывается/открывается в досовской кодировке. Или принудительно указали КодоваяСтраница(1) как минимум при записи в файл.

Автор: kalyamov 06.07.11, 0:38

Цитата(5_kopeek @ 06.07.11, 0:39) http://pro1c.org.ua/index.php?act=findpost&pid=26849
Как минимум, я думаю,что файл он не записывал вообще, а уже из готового загружает данные, отсюда и проблема. Тут, наверное, и кодовая страница мало чем поможет.


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

Автор: Lefer 06.07.11, 9:08

Цитата(5_kopeek @ 06.07.11, 0:39) *
Lefer, кажись, в Вашем случае проблема в том, что Вы вообще не указали кодовую страницу и, по умолчанию, файл записывается/открывается в досовской кодировке. Или принудительно указали КодоваяСтраница(1) как минимум при записи в файл.


При выгрузке, как мне кажется, кодовую страницу указывать необязательно. За свою практику выгрузок - загрузок проблем не было до этих пор. Всегда все выгружалось/загружалось на ура... А Вы указываете? От чего это предохраняет?

Принудительно не указывал кодовую страницу.

Автор: 5_kopeek 06.07.11, 9:37

Цитата(Lefer @ 06.07.11, 9:08) http://pro1c.org.ua/index.php?act=findpost&pid=26862
по умолчанию, файл записывается/открывается в досовской кодировке.


Цитата(Lefer @ 06.07.11, 9:08) *
А Вы указываете? От чего это предохраняет?

В частности, от проблем с укр. символами.
Сделайте, как Вам -=VJ=- посоветовал. Во всяком случае, обязательно указывайте кодовую страницу при заполнении дбф (КодоваяСтраница(0)).

Автор: Lefer 06.07.11, 10:05

В дбф файл украинский язык записывается отлично и без указания кодировки. Загружаться не хочет.

В процедуре выгрузки написал "DBF.КодоваяСтраница(0)" - результат аброкодабра. Что может быть?

Автор: 5_kopeek 06.07.11, 10:06

Абракадабра при просмотре или при загрузке?

Автор: -=VJ=- 06.07.11, 10:15

Цитата(5_kopeek @ 06.07.11, 11:06) *
Абракадабра при просмотре или при загрузке?


При загрузке, конечно.
Просматривает-то он не 1С, а какой-то программой, которой наплевать на кодировку, а вот 1С при загрузке в виндовс-кодировке файл, сохраненный в ДОС, вполне логично превращает его в кашу символов.

Некоторые люди любят наступать на грабли по двадцать раз, даже если их об этом предупредили.

Автор: 5_kopeek 06.07.11, 10:26

Цитата(-=VJ=- @ 06.07.11, 10:15) http://pro1c.org.ua/index.php?act=findpost&pid=26873
Некоторые люди любят наступать на грабли по двадцать раз, даже если их об этом предупредили.

;)

Автор: Lefer 06.07.11, 10:27

Цитата(-=VJ=- @ 06.07.11, 11:15) *
При загрузке, конечно.
Просматривает-то он не 1С, а какой-то программой, которой наплевать на кодировку, а вот 1С при загрузке в виндовс-кодировке файл, сохраненный в ДОС, вполне логично превращает его в кашу символов.

Некоторые люди любят наступать на грабли по двадцать раз, даже если их об этом предупредили.

при загрузке и при выгрузке абраклдабра.

В параметрах кодовой страницы 0 - виндовая кодировка... Ну выгрузил с виндовой кодировкой, толку? Каша при загрузке. При загрузке тоже указывать кодовую страницу что ли?

Автор: 5_kopeek 06.07.11, 10:32

Цитата(Lefer @ 06.07.11, 10:27) *
В параметрах кодовой страницы 0 - виндовая кодировка... Ну выгрузил с виндовой кодировкой, толку? Каша при загрузке. При загрузке тоже указывать кодовую страницу что ли?

Если при записи установили виндовс-кодировку, этого достаточно. Ну, может, у Вас есть какие-то особенности, то укажите и при загрузке виндовс-кодировку. Возьмите пример -=VJ=- и запустите у себя, расскажете, что получилось.

Автор: Lefer 06.07.11, 10:44

Цитата(5_kopeek @ 06.07.11, 11:32) *
Если при записи установили виндовс-кодировку, этого достаточно. Ну, может, у Вас есть какие-то особенности, то укажите и при загрузке виндовс-кодировку. Возьмите пример -=VJ=- и запустите у себя, расскажете, что получилось.


Все нормально с примером -=VJ=- ... даже пробывал убрать КодоваяСтраница(0) при открытии созданной дбф - все ок. 64000000.gif

Автор: Lefer 06.07.11, 11:55

Новая вводная: =)

Выгрузил файл, открыл в редакторе dbf.ю внимательно просмотрел все строки с украинским языком и обнаружил, что не не во всех словах есть украинская буква и... и тут осенило - пользователь в базе источнике вместо украинской и с точкой ставил анлийскую i.... при загрузке этот символ приобразуется в "_" 433.gif

Автор: -=VJ=- 06.07.11, 11:59

Цитата(Lefer @ 06.07.11, 12:55) *
Новая вводная: =)

Выгрузил файл, открыл в редакторе dbf.ю внимательно просмотрел все строки с украинским языком и обнаружил, что не не во всех словах есть украинская буква и... и тут осенило - пользователь в базе источнике вместо украинской и с точкой ставил анлийскую i.... при загрузке этот символ приобразуется в "_" 433.gif


Прогоните справочник, исправьте на нужную.

Автор: 5_kopeek 06.07.11, 13:24

Цитата(Lefer @ 06.07.11, 11:55) *
и тут осенило - пользователь в базе источнике вместо украинской и с точкой ставил анлийскую i.... при загрузке этот символ приобразуется в "_" 433.gif

Чё-то сомневаюсь, что латинские символы будут преображаться во что-то несуразное...

Автор: kalyamov 06.07.11, 14:12

Почитал и решил попробовать сам. Если указать КодоваяСтраница(0)-выгружается каша. Если указать 1 или вообще опустить - выгружается все хорошо, только вместо украинской буквы і нижнее подчеркивание. Все остальные украинские буквы нормально проходят.

А если поставить КодоваяСтраница(0) и при выгрузке и загрузки как говорил VJ - все чудесно работает. На кашу не надо обращать внимания.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua