Вместо собственного перечня стран строим список из возможностей установленной платформы. Значение выбора — код, подпись — локализованное имя.
Где и как запускать
Полный серверный общий модуль учебной копии. Только чтение настроек и вычисления в памяти.
Подготовка
Работайте в отдельной учебной копии базы. Создайте серверный общий модуль УчебныеЗадачи, вставьте полный модуль урока и вызовите ВыполнитьПример() из серверного обработчика учебной команды.
Код выполняется на сервере: часть функций локализации и часовых поясов недоступна непосредственно в тонком клиенте. Реквизиты пользователя, региональные настройки и часовые пояса код не меняет.
Для двух уроков о метаданных используйте копию КА2 Progress: в исходном Languages/Русский.xml действительно есть язык Русский с КодЯзыка = ru. Остальные уроки не требуют объектов конкретной конфигурации.
Процедура ВыполнитьПример() Экспорт
Коды = ПолучитьДопустимыеКодыЛокализации();
Варианты = Новый СписокЗначений;
Для Каждого Код Из Коды Цикл
Если ТипЗнч(Код) <> Тип("Строка") Тогда
ВызватьИсключение "Ожидался строковый код локализации";
КонецЕсли;
Варианты.Добавить(Код, ПредставлениеКодаЛокализации(Код));
КонецЦикла;
Сообщить(Варианты.Количество() = Коды.Количество());
РусскийРегион = Варианты.НайтиПоЗначению("ru_RU");
Если РусскийРегион = Неопределено Тогда
Сообщить("ru_RU отсутствует в полученном перечне");
Иначе
Сообщить(РусскийРегион.Значение = "ru_RU");
Сообщить("Подпись ru_RU: " + РусскийРегион.Представление);
КонецЕсли;
Сообщить("Получено вариантов: " + Строка(Варианты.Количество()));
КонецПроцедурыРазбор по шагам
Функция возвращает массив кодов, а не коллекцию объектов метаданных Язык. Цикл работает и с пустым массивом, без незащищённого индекса 0.
Добавить записывает код в Значение элемента списка, а результат ПредставлениеКодаЛокализации — в Представление. Отображаемую подпись нельзя передавать вместо кода.
НайтиПоЗначению может вернуть Неопределено. Проверяем его до доступа к двум свойствам элемента.
Наличие кода в общем списке не означает, что абсолютно все функции форматирования поддерживают его. У ПредставлениеПериода есть отдельный документированный перечень.
Как проверить результат
Количество элементов списка равно длине массива — Истина. Для ru_RU выводится реальная подпись либо ясное сообщение отсутствия.
Список создан в памяти; никаких настроек базы или пользователя не сохранено.
Ожидаемый результат
Готов список выбора, который хранит правильный идентификатор и показывает человеку понятное название.
На что обратить внимание
Не подменяйте перечень локализаций перечнем языков конкретной конфигурации.
Локализованная подпись может меняться с языком платформы; сохраняйте код, не подпись.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.