Версия для печати темы (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
А я помню при записи тестового файла менял украинскую "і" на английскую, никто и не знал
Автор: 5_kopeek 05.07.11, 18:39
Цитата(Vofka @ 05.07.11, 17:48)
А я помню при записи тестового файла менял украинскую "і" на английскую, никто и не знал
Жалко, что в латинском нет "ї" и "є"
Автор: -=VJ=- 05.07.11, 19:59
Цитата(Lefer @ 05.07.11, 15:38)
В семерке есть параметр "КодоваяСтраница", так вот она дает выбор только между Дос и Виндой.
И Вы хотите сказать, что Винда не возвращает Вам украинскую раскладку?
Ну так проверьте параметры системы - у меня ни разу проблем с этим не было.
Ну или выгружайте в xls
Автор: 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) при открытии созданной дбф - все ок.
Автор: Lefer 06.07.11, 11:55
Новая вводная: =)
Выгрузил файл, открыл в редакторе dbf.ю внимательно просмотрел все строки с украинским языком и обнаружил, что не не во всех словах есть украинская буква и... и тут осенило - пользователь в базе источнике вместо украинской и с точкой ставил анлийскую i.... при загрузке этот символ приобразуется в "_"
Автор: -=VJ=- 06.07.11, 11:59
Цитата(Lefer @ 06.07.11, 12:55)
Новая вводная: =)
Выгрузил файл, открыл в редакторе dbf.ю внимательно просмотрел все строки с украинским языком и обнаружил, что не не во всех словах есть украинская буква и... и тут осенило - пользователь в базе источнике вместо украинской и с точкой ставил анлийскую i.... при загрузке этот символ приобразуется в "_"
Прогоните справочник, исправьте на нужную.
Автор: 5_kopeek 06.07.11, 13:24
Цитата(Lefer @ 06.07.11, 11:55)
и тут осенило - пользователь в базе источнике вместо украинской и с точкой ставил анлийскую i.... при загрузке этот символ приобразуется в "_"
Чё-то сомневаюсь, что латинские символы будут преображаться во что-то несуразное...
Автор: 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