Собрать список поддерживаемых локализаций с понятными названиями

Учебные задачи

Вместо собственного перечня стран строим список из возможностей установленной платформы. Значение выбора — код, подпись — локализованное имя.

Где и как запускать

Полный серверный общий модуль учебной копии. Только чтение настроек и вычисления в памяти.

Подготовка

  1. Работайте в отдельной учебной копии базы. Создайте серверный общий модуль УчебныеЗадачи, вставьте полный модуль урока и вызовите ВыполнитьПример() из серверного обработчика учебной команды.

  2. Код выполняется на сервере: часть функций локализации и часовых поясов недоступна непосредственно в тонком клиенте. Реквизиты пользователя, региональные настройки и часовые пояса код не меняет.

  3. Для двух уроков о метаданных используйте копию КА2 Progress: в исходном Languages/Русский.xml действительно есть язык Русский с КодЯзыка = ru. Остальные уроки не требуют объектов конкретной конфигурации.

Процедура ВыполнитьПример() Экспорт
    Коды = ПолучитьДопустимыеКодыЛокализации();
    Варианты = Новый СписокЗначений;
    Для Каждого Код Из Коды Цикл
        Если ТипЗнч(Код) <> Тип("Строка") Тогда
            ВызватьИсключение "Ожидался строковый код локализации";
        КонецЕсли;
        Варианты.Добавить(Код, ПредставлениеКодаЛокализации(Код));
    КонецЦикла;
    Сообщить(Варианты.Количество() = Коды.Количество());
    РусскийРегион = Варианты.НайтиПоЗначению("ru_RU");
    Если РусскийРегион = Неопределено Тогда
        Сообщить("ru_RU отсутствует в полученном перечне");
    Иначе
        Сообщить(РусскийРегион.Значение = "ru_RU");
        Сообщить("Подпись ru_RU: " + РусскийРегион.Представление);
    КонецЕсли;
    Сообщить("Получено вариантов: " + Строка(Варианты.Количество()));
КонецПроцедуры

Разбор по шагам

  1. Функция возвращает массив кодов, а не коллекцию объектов метаданных Язык. Цикл работает и с пустым массивом, без незащищённого индекса 0.

  2. Добавить записывает код в Значение элемента списка, а результат ПредставлениеКодаЛокализации — в Представление. Отображаемую подпись нельзя передавать вместо кода.

  3. НайтиПоЗначению может вернуть Неопределено. Проверяем его до доступа к двум свойствам элемента.

  4. Наличие кода в общем списке не означает, что абсолютно все функции форматирования поддерживают его. У ПредставлениеПериода есть отдельный документированный перечень.

Как проверить результат

  1. Количество элементов списка равно длине массива — Истина. Для ru_RU выводится реальная подпись либо ясное сообщение отсутствия.

  2. Список создан в памяти; никаких настроек базы или пользователя не сохранено.

Ожидаемый результат

Готов список выбора, который хранит правильный идентификатор и показывает человеку понятное название.

На что обратить внимание

  1. Не подменяйте перечень локализаций перечнем языков конкретной конфигурации.

  2. Локализованная подпись может меняться с языком платформы; сохраняйте код, не подпись.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.