Запросы, динамические списки и отчеты на СКД: требования по локализации

#std762

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

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

Неправильно:

ЗапросПоВерсиям = Новый Запрос(" 
  |ВЫБРАТЬ 
  |Версии.Ссылка, 
  |ВЫБОР КОГДА Версии.Выпущена = ИСТИНА 
  | ТОГДА ""выпущена"" 
  | ИНАЧЕ ""в разработке"" 
  |КОНЕЦ КАК ТекстПояснения 
  | ИЗ 
  | Справочник.Версии КАК Версии");

Также неправильно:

ТекстЗапроса = 
  "ВЫБРАТЬ
  |Версии.Ссылка,
  |ВЫБОР КОГДА Версии.Выпущена = ИСТИНА
  | ТОГДА &ТекстВыпущеннойВерсии
  | ИНАЧЕ &ТекстНеВыпущеннойВерсии
  |КОНЕЦ КАК ТекстПояснения
  | ИЗ
  | Справочник.Версии КАК Версии");
  
  ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстВыпущеннойВерсии", НСтр("ru='выпущена'"));
  ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ТекстНеВыпущеннойВерсии", НСтр("ru='в разработке'"));

Правильно:

ЗапросПоВерсиям = Новый Запрос(" 
  |ВЫБРАТЬ 
  |Версии.Ссылка, 
  |ВЫБОР КОГДА Версии.Выпущена = ИСТИНА 
  | ТОГДА &ТекстВыпущеннойВерсии 
  | ИНАЧЕ &ТекстНеВыпущеннойВерсии 
  |КОНЕЦ КАК ТекстПояснения 
  | ИЗ 
  | Справочник.Версии КАК Версии"); 

ЗапросПоВерсиям.УстановитьПараметр("ТекстВыпущеннойВерсии", НСтр("ru='выпущена'")); 
ЗапросПоВерсиям.УстановитьПараметр("ТекстНеВыпущеннойВерсии", НСтр("ru='в разработке'"));

2. Аналогичные требования предъявляются к выражениям СКД и запросам, которые используются в наборах данных СКД и содержат строковые литералы, выводимые в пользовательском интерфейсе. Например, если в выражении для параметров СКД встречаются строковые константы, требующие перевода, то следует:

а) в запросе указывать строковые константы, соответствующие "Правилам образования имен переменных" (""ЗавершитеСозданиеДокументов" КАК Рекомендация "), а в списке доступных значений поля указать локализуемый строковый литерал ("Завершите создание документов");

б) либо значение таких параметров с помощью функции НСтр устанавливать не в колонке Выражение, а в модуле отчета в обработчике события ПриКомпоновкеРезультата

Неправильно:

ВЫБОР
  КОГДА ВидОперации = "Отгрузка клиентам" ТОГДА 1
  КОГДА ВидОперации = "Возвраты товаров от клиентов" ТОГДА 2
  КОГДА ВидОперации = "Приемка от поставщиков" ТОГДА 3
КОНЕЦ

Правильно:

ВЫБОР
  КОГДА ВидОперации = &ВидОперацииОтгрузкаКлиентам ТОГДА 1
  КОГДА ВидОперации = &ВидОперацииВозвратыТоваровОтКлиентов ТОГДА 2
  КОГДА ВидОперации = &ВидОперацииПриемкаОтПоставщиков ТОГДА 3
КОНЕЦ

в) В выражениях, используемых в настройках СКД, например Выражение представления и Выражение упорядочивания на закладке Наборы данных, а также в других им подобных, необходимо использовать функцию НСтр, аналогично тому, как это делается в коде модулей (см. стандарт Интерфейсные тексты в коде: требования по локализации).

Неправильно:

Выбор Когда Объект = Раздел 
  Тогда Выбор 
    Когда Раздел = Значение(ПланВидовХарактеристик.РазделыДатЗапретаИзменения.ПустаяСсылка) 
      Тогда "<Для всех разделов и объектов, кроме указанных>" 
    Иначе "<Для всех объектов, кроме указанных>" 
  Конец 
  Иначе Объект 
Конец

Правильно:

Выбор Когда Объект = Раздел 
  Тогда Выбор 
    Когда Раздел = Значение(ПланВидовХарактеристик.РазделыДатЗапретаИзменения.ПустаяСсылка) 
      Тогда НСтр("ru='<Для всех разделов и объектов, кроме указанных>'")
    Иначе НСтр("ru='<Для всех объектов, кроме указанных>'")
  Конец 
  Иначе Объект 
Конец

3. Для колонок отчета на СКД для поля выборки, полученного вычислением с заданием ему псевдонима, необходимо задавать синоним при разработке. Нельзя опираться на автоматически сгенерированный заголовок по имени/псевдониму.

Неправильно:

Правильно:

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

См. также