Как создать свою локализацию сеанса? #716031


#0 by TormozIT
8.2.16.352 Дано: На терминальном сервере Windows 2008 работают 2 группы пользователей (русские и англичане) с одной базой. Требуется при запуске обычного приложения 1С: Русским обеспечить русский язык приложения, представления периодов, чисел прописью, формат даты "dd.MM.yyyy", разделитель групп " ". Англичанам обеспечить английский язык приложения, представления периодов, чисел прописью, формат даты "dd.MM.yyyy", разделитель групп ",". С русскими пользователями все работало сразу как надо. А вот с англичанами до сих пор проблемы. Я не нашел как для сеанса 1C задать нужную конфигурацию множества настроек (разделитель групп, разделитель дробной части, формат времени, язык представления периода, язык чисел прописью). Нужную конфигурацию таких настроек можно глобально задать только для базы в целом в диалоге конфигуратора "Региональные установки ...". Предопределенные конфигурации таких настроек можно выбирать для сеанса пользователя ключом /VL, чем мы и пользуемся сейчас, устанавливая локализацию сеанса "Английский". А во всех английских доступных локализациях (в списке выбора "Язык(Страна)") формат дат с косыми чертами. А нам нужен формат времени как у "русский (Россия)", а остальные параметры как у "Английский". Я попытался в диалоге "Region and language" Windows переопределить для локализации English (United States) форматы времени и в большинстве программ оно ожидаемо изменилось. В этом же диалоге Location равно Russian. Далее я попробовал запустить предприятие с параметрами "/Len_US /VLen_US". Оно продолжало применять старый формат времени. Если же я запускал его с параметрами "/Len_US", то применялся тот формат, который задан в Windows, но названия месяцев писались по-русски.
#1 by TormozIT
И пара иллюстраций
#2 by mrDSide
Для всех текстовых данных (процедуры Сообщить, ВызватИсключение, Предупреждение и т.д.) нужно прописывать строки вида "ru='';en=''". Далее во всех отчетах (имеется в виду именно поля макетов) тоже нужно настроить форматы для каждого языка (должны работать в зависимости от настроек сеанса). С элементами форм сложнее.
#3 by mrDSide
вобщем-то работы море. Но еще лучше (на будущее) писать модуль локализации (это для элементов формы), все элементы заполнять скажем на русском языке и в каждую форму можно написать перед открытием обработчик общий который будет из регистра (как пример, хотя быстрее конечно в коде или закэшировать при старте системы если не много данных в глобальный модуль) "переводить" все поля на нужный язык. Тоже лучше сделать и для всех системных функций - подменить на лСообщить(Текст), лИсключение(Текст) и т.д. Интересно, конечно, но судя по тому что даже в Польше пока 1с практически не развивается смысла в этом не много.
#4 by mrDSide
*"ru='Сообщение пользователю';en='Message'".
#5 by TormozIT
(2-4) Тебя немного в сторону увело. Я писал о проблеме для пустой конфигурации. Прикладной код оставляем в стороне. Речь о проблеме платформы.
#6 by Escander
не проще указывать пользователям ИБ язык(каждому)?
#7 by TormozIT
Язык пользователя отвечает только за выбор варианта мультиязычных строк конфигурации. Он тут не поможет.
#8 by DrZombi
Разделить терминал на два сервера не предлагали? :)
#9 by DrZombi
Один терминал, одна настройка :)
#10 by DrZombi
>>> Я попытался в диалоге "Region and language" По моему какая то ерунда.... чем вам представление числа мешает? Если в коде трудно получать нужную дату в нужном месте, так используй типо: День , Месяц, Год :)
#11 by DrZombi
Ну... не надо так на 1С надеяться, что типо установил и нечего писать не надо :)
#12 by Господин ПЖ
это проблема на уровне сеанса, а не 1с
#13 by TormozIT
Это проблема на уровне платформы 1С. Цитирую производителя "... значение локейла берется из настроек операционной системы (если иное, не указано в командной строке) и это значение используется для форматирования. Правила же форматирования определены в платформе. Системные настройки (типа приведенных на картинке 1) при этом не действуют."
#14 by TormozIT
Еще раз повторяю, что исполнение прикладного кода вообще не рассматриваем.
#15 by Escander
ну установи ты ну пусть 8.2.19.68 русс и 8.2.19.69 eng и запускай при вводе в терминал одним одно а другим другое
#16 by Escander
хотя не... 2 сервера...
#17 by Escander
сделай 2 виртуальных терминальных сервера, на одном платформа рус, на другом eng
#18 by Fragster
Формат(100000,"Л="+ТекущийЯзыкСистемы)
#19 by Fragster
Формат(100000,"Л=en")    100,000
#20 by Fragster
Общие параметры командной строки для указания параметров запуска .... /L <код языка> — указывается код языка интерфейса платформы. Поддерживаемые языки интерфейса: Язык Код
#21 by Fragster
вообще работать должно и так
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям