Выбор в запросе представления реквизита (Синонима) на определенном языке
В системе может использоваться несколько языков, например русский и украинский...
Соответственно представление реквизита (его синоним) тоже (как правило) существуют на 2-х языках...
Как заставить запрос выбирать представление по 2-му языку (не языку интерфейса)???
Т.е. как выбрать например украинские синонимы при русском языке системы (интерфейсе)?
P.S. Ещё интересней - как если нет украинского синонима - выбрать русский???
Соответственно представление реквизита (его синоним) тоже (как правило) существуют на 2-х языках...
Как заставить запрос выбирать представление по 2-му языку (не языку интерфейса)???
Т.е. как выбрать например украинские синонимы при русском языке системы (интерфейсе)?
P.S. Ещё интересней - как если нет украинского синонима - выбрать русский???
По теме из базы знаний
Найденные решения
(1) AnryMc, Штатно никак.
Можно:
1. Локализацию сохранить в табличный документ.
2. Импортировать ее в регистр сведений.
3. Там где требуется использовать регистр и функцию НСтр(Текст, КодЯзыка)
Пример регистра:
-Измерения:
--Ключ: Строка - Например полное имя метаданных
--Код_языка: Строка - ru, en и т.п.
-Ресурсы:
--Значение: Строка - Значение на разных языках
Пример текст запроса:
Пример кода:
Можно:
1. Локализацию сохранить в табличный документ.
2. Импортировать ее в регистр сведений.
3. Там где требуется использовать регистр и функцию НСтр(Текст, КодЯзыка)
Пример регистра:
-Измерения:
--Ключ: Строка - Например полное имя метаданных
--Код_языка: Строка - ru, en и т.п.
-Ресурсы:
--Значение: Строка - Значение на разных языках
Пример текст запроса:
ВЫБРАТЬ Ключ, Код_языка + " = """ + Значение + """;"
ИЗ <ИмяРегистра>
[ГДЕ Ключ = &Ключ И Код_языка В (&Код_Языка)]
Пример кода:
Таблица = Запрос.Выполнить().Выгрузить();
Массив = ПолучитьМассивНужныхСтрок(Таблица);
Текст = СтрокавыеФункцииКлиентСервер.ПолучитьСтрокуИзМассиваПодстрок(Массив, ";");
НужныйТекст = НСтр(Текст, ИнтиресующаяЛокаль);
Если ПустаяСтрока(НужныйТекст) Тогда
НужныйТекст = ТекстПоУмолчанию;
КонецЕсли;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) AnryMc, Штатно никак.
Можно:
1. Локализацию сохранить в табличный документ.
2. Импортировать ее в регистр сведений.
3. Там где требуется использовать регистр и функцию НСтр(Текст, КодЯзыка)
Пример регистра:
-Измерения:
--Ключ: Строка - Например полное имя метаданных
--Код_языка: Строка - ru, en и т.п.
-Ресурсы:
--Значение: Строка - Значение на разных языках
Пример текст запроса:
Пример кода:
Можно:
1. Локализацию сохранить в табличный документ.
2. Импортировать ее в регистр сведений.
3. Там где требуется использовать регистр и функцию НСтр(Текст, КодЯзыка)
Пример регистра:
-Измерения:
--Ключ: Строка - Например полное имя метаданных
--Код_языка: Строка - ru, en и т.п.
-Ресурсы:
--Значение: Строка - Значение на разных языках
Пример текст запроса:
ВЫБРАТЬ Ключ, Код_языка + " = """ + Значение + """;"
ИЗ <ИмяРегистра>
[ГДЕ Ключ = &Ключ И Код_языка В (&Код_Языка)]
Пример кода:
Таблица = Запрос.Выполнить().Выгрузить();
Массив = ПолучитьМассивНужныхСтрок(Таблица);
Текст = СтрокавыеФункцииКлиентСервер.ПолучитьСтрокуИзМассиваПодстрок(Массив, ";");
НужныйТекст = НСтр(Текст, ИнтиресующаяЛокаль);
Если ПустаяСтрока(НужныйТекст) Тогда
НужныйТекст = ТекстПоУмолчанию;
КонецЕсли;
Показать
Согласен с (10)
На мой взгялд самый простой хоть и неудобный способ - прописать в запросе ручками через оператор КАК.
Многое зависит от того где и для чего используется Ваш запрос (выводит что-то на печать? тогда вроде все нормально, просто язык локализации указывать необходимо в модуле вывода на печать), количества таких реквизитов и того где и как они должны выводиться. Без использования запроса никак нельзя обойтись?
На мой взгялд самый простой хоть и неудобный способ - прописать в запросе ручками через оператор КАК.
Многое зависит от того где и для чего используется Ваш запрос (выводит что-то на печать? тогда вроде все нормально, просто язык локализации указывать необходимо в модуле вывода на печать), количества таких реквизитов и того где и как они должны выводиться. Без использования запроса никак нельзя обойтись?
Это я знаю...
Просто есть отчет (консоль отчетов - СКД). Пользователь работает с русским интерфейсом. Отчет должен строиться на украинском языке.
Например у элемента справочника "Контрагенты" есть реквизит "Вид контрагента", это перечисление с такими значениями (синонимами):
ру "Физическое лицо" = ук "Фізічна особа"
ру "Юридическое лицо" = ук "юрідична особа"
Если строить отчет "из под украинского интерфейса" в отчет попадают украинские синонимы (ТАК И НАДО), а если "из под русского интерфейса", то - русский синоним (А НАДО УКРАИНСКИЙ)
Конечно можно поизголяться и в СКД прописать "ВЫБОР..." или вообще написать внешний отчет, но "хочется отделаться малой кровью", просто уж много таких реквизитов...
Просто есть отчет (консоль отчетов - СКД). Пользователь работает с русским интерфейсом. Отчет должен строиться на украинском языке.
Например у элемента справочника "Контрагенты" есть реквизит "Вид контрагента", это перечисление с такими значениями (синонимами):
ру "Физическое лицо" = ук "Фізічна особа"
ру "Юридическое лицо" = ук "юрідична особа"
Если строить отчет "из под украинского интерфейса" в отчет попадают украинские синонимы (ТАК И НАДО), а если "из под русского интерфейса", то - русский синоним (А НАДО УКРАИНСКИЙ)
Конечно можно поизголяться и в СКД прописать "ВЫБОР..." или вообще написать внешний отчет, но "хочется отделаться малой кровью", просто уж много таких реквизитов...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот