AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.01.2016, 10:10   #1  
poul_and is offline
poul_and
Участник
 
56 / 12 (1) ++
Регистрация: 08.04.2003
Версия 2009 Classic
Систенный язык НЕ русский.
Однажды появилась необходимость хранить и печатать часть информации (названия фирм, адреса и тд.) на русском языке.
Вышел из положения нарисовав отдельный фонт, в результате в базе хранится текст в виде (Ą/Ī "Āåķņįóķźåšń") а на экран и печать выводится (АО "РогаИКопыта").
Теперь стало нужно отправить информацию в виде текстовых файлов (XML), а у меня не получается вывести хоть какой-нибудь текст на русском
Старый 29.01.2016, 11:33   #2  
poul_and is offline
poul_and
Участник
 
56 / 12 (1) ++
Регистрация: 08.04.2003
Сам вижу такое решение:
Созданный XML открыть Вордом, загрузить и запустить заранее созданный макрос по конвертации символов

Кто нибудь подскажет как из Навижн "загрузить и запустить макрос"?
Старый 29.01.2016, 16:27   #3  
poul_and is offline
poul_and
Участник
 
56 / 12 (1) ++
Регистрация: 08.04.2003
Цитата:
Сообщение от jopagames3
Цитата:
Сообщение от poul_and Посмотреть сообщение
Систенный язык НЕ русский.
...
Вышел из положения нарисовав отдельный фонт, в результате в базе хранится текст в виде (Ą/Ī "Āåķņįóķźåšń") а на экран и печать выводится (АО "РогаИКопыта").
Собственный фонт - это круто, чо! />
Вообще задача интересная.

А какой именно язык системный?
Как "русские буквы" попадают в базу? Пользователь вводит их с клавиатуры или загружает как текст из файла?
А как отличть именно русское название от локального (финского, например) если буквы одни и те же?

Как вариант можно попробовать поиграть с лицензией (она русская?). В ней хранится табличка преобразования кода клавиши в букву. В русской лицензии 1252 преобразуется в 866. Если база нативная - там вообще просто. Прямо в базу можно кусок этот вписать. С SQL не знаю... надо смотреть.

Можно с кодовой страницей в Винде поиграть. Главное, остальные приложения чтобы не затронуть />
А может, скуль может как-то конвертировать.

ЗЫ: Нет, вот с макросом Word - тупиковый вариант. Проще уж на Си написать своё консольное приложение, а файл передавать в качестве аргумента. Но прямо из Nav конвертировать, думаю, еще проще.

ЗЗЫ: А вообще, самому даже интересно, если несколько разных языков в системе, то что именно и как хранится в базе? С 2013 всё понятно - там уже UTF.
Системный язык латышский
База SQL, русского языка в лицензии нет.

"Русские буквы" вводятся с клавиатуры, переключив на русскую раскладку. В базе алфавит выглядит как ĄĮĀĆÄÅØĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽ, все эти символы - в неиспользуемой области и не перекрывают латышские. В моём фонте они заменены на русские, на экране пользователь видит АБВГД... В одном поле можно писать и по русски и по латышски (рсская и латышская А выглядят одинаково, но в реальности это разные символы)

С макросом вышло очень даже просто:
сам макрос вида

With Selection.Find
.Text = "Ą"
.Replacement.Text = ChrW(1072)
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "Į"
.Replacement.Text = ChrW(1073)
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
..........
так на все 33 буквы

Из Навижн открываем файл Вордом и запускаем Application.Run("MACRO_NAME")
Старый 24.02.2016, 11:55   #4  
poul_and is offline
poul_and
Участник
 
56 / 12 (1) ++
Регистрация: 08.04.2003
Разобрался почему не получалось - русские буквы оказывается прописываются в файл не одним, а двумя байтами
Большие буквы начиная с [d0 90], маленькие с [d0 b0]
Старый 25.02.2016, 13:58   #5  
max_hl_imported is offline
max_hl_imported
Участник
 
45 / 10 (1) +
Регистрация: 28.07.2006
Можно попробовать перегрузить данные в 'Microsoft ActiveX Data Objects 2.8 Library'.Stream и там уже поменять кодировку на любую функцией
Код:
    ADOStream.Position := 0;
    ADOStream.Charset('UTF-8');
А дальше использовать на свое усмотрение

Вроде Нав нормально с xml работает.. т.е. можно грузить напрямую AddElement2(xmlNode2,'НаименованиеЮЛ','') где AddElem2
Код:
NewChildNode := xmlDoc.createNode('element', NodeName, xmlns);
IF NodeText <> '' THEN
  NewChildNode.text := NodeText;
XMLNodeP.appendChild(NewChildNode);
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:50.