Имя: Пароль:
1C
1С v8
Как создать свою локализацию сеанса?
0 TormozIT
 
гуру
01.08.14
00:34
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 TormozIT
 
гуру
01.08.14
00:47
И пара иллюстраций
http://rghost.ru/57195023
http://rghost.ru/57195028
2 mrDSide
 
01.08.14
00:49
Для всех текстовых данных (процедуры Сообщить(), ВызватИсключение, Предупреждение() и т.д.) нужно прописывать строки вида "ru='';en=''". Далее во всех отчетах (имеется в виду именно поля макетов) тоже нужно настроить форматы для каждого языка (должны работать в зависимости от настроек сеанса). С элементами форм сложнее.
3 mrDSide
 
01.08.14
00:54
(1) (0) вобщем-то работы море. Но еще лучше (на будущее) писать модуль локализации (это для элементов формы), все элементы заполнять скажем на русском языке и в каждую форму можно написать перед открытием обработчик общий который будет из регистра (как пример, хотя быстрее конечно в коде или закэшировать при старте системы если не много данных в глобальный модуль) "переводить" все поля на нужный язык. Тоже лучше сделать и для всех системных функций - подменить на лСообщить(Текст), лИсключение(Текст) и т.д. Интересно, конечно, но судя по тому что даже в Польше пока 1с практически не развивается смысла в этом не много.
4 mrDSide
 
01.08.14
00:55
*(2)"ru='Сообщение пользователю';en='Message'".
5 TormozIT
 
гуру
01.08.14
01:21
(2-4) Тебя немного в сторону увело. Я писал о проблеме для пустой конфигурации. Прикладной код оставляем в стороне. Речь о проблеме платформы.
6 Escander
 
01.08.14
08:15
(0) не проще указывать пользователям ИБ язык(каждому)?
7 TormozIT
 
гуру
01.08.14
09:27
(6) Язык пользователя отвечает только за выбор варианта мультиязычных строк конфигурации. Он тут не поможет.
8 DrZombi
 
гуру
01.08.14
09:45
(0) Разделить терминал на два сервера не предлагали? :)
9 DrZombi
 
гуру
01.08.14
09:45
(6) Один терминал, одна настройка :)
10 DrZombi
 
гуру
01.08.14
09:52
(0) >>> Я попытался в диалоге "Region and language"

По моему какая то ерунда.... чем вам представление числа мешает?
Если в коде трудно получать нужную дату в нужном месте, так используй типо: День() , Месяц(), Год() :)
11 DrZombi
 
гуру
01.08.14
09:53
(5) Ну... не надо так на 1С надеяться, что типо установил и нечего писать не надо :)
12 Господин ПЖ
 
01.08.14
10:09
это проблема на уровне сеанса, а не 1с
13 TormozIT
 
гуру
01.08.14
10:21
Это проблема на уровне платформы 1С. Цитирую производителя

"... значение локейла берется из настроек операционной системы (если иное, не указано в командной строке) и это значение используется для форматирования. Правила же форматирования определены в платформе. Системные настройки (типа приведенных на картинке 1) при этом не действуют."
14 TormozIT
 
гуру
01.08.14
10:22
(10) Еще раз повторяю, что исполнение прикладного кода вообще не рассматриваем.
15 Escander
 
01.08.14
12:21
(13) ну установи ты ну пусть 8.2.19.68 русс и 8.2.19.69 eng и запускай при вводе в терминал одним одно а другим другое
16 Escander
 
01.08.14
12:21
хотя не... 2 сервера...
17 Escander
 
01.08.14
12:22
сделай 2 виртуальных терминальных сервера, на одном платформа рус, на другом eng
18 Fragster
 
гуру
01.08.14
12:28
Формат(100000,"Л="+ТекущийЯзыкСистемы())
19 Fragster
 
гуру
01.08.14
12:28
Формат(100000,"Л=en")    100,000
20 Fragster
 
гуру
01.08.14
12:31
Общие параметры командной строки для указания параметров запуска
....
/L <код языка> — указывается код языка интерфейса платформы. Поддерживаемые языки интерфейса:


Язык
Код
Английский en
Болгарский bg
Вьетнамский vi
Грузинский ka
Казахский kk
Латышский lv
Литовский lt
Немецкий de
Польский pl
Румынский ro
Русский ru
Украинский uk
Турецкий tr
21 Fragster
 
гуру
01.08.14
12:31
вообще работать должно и так