Форматирование на разных языках периодов в СКД

Вступление

Недавно, решая одну задачку, обратил внимание на то, что стандартные средства СКД (платформа версии 8.3.11.2924), при развороте отчета по периодичностям, формируют представление перидов в достаточно нечитабельном виде.
После небольшого "допиливания напильником", удалось получить весьма приличный вид отчета.
Сравните сами:

Плохое форматирование
Пример плохого форматирования отчета
Хорошее форматирование
Пример хорошего форматирования отчета

Согласитесь, что второй вариант выглядит значительно привлекательнее.
А т.к. для получения подобного результата пришлось немного поэкспериментировать, и даже воспользоваться не сильно упоминаемыми в официальной документации приемами, то опишу их тут (и мне будет памятка и другим помощь).

Следует, также, упомянуть, что в конфигурации, на которой я это делал, есть два языка:

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

Далее эти приемы будут описаны чуть подробнее.
Но обо всем по порядку.

Форматирование периодов в СКД

Для того, чтобы периоды отображались в отчете "красиво", достаточно просто настроить Формат отображения для соответствующих полей набора данных.
Нажмите, чтобы посмотреть в увеличенном виде

При этом следует использовать следующие строки форматирования:

Поле периодаСтрока формата
ПериодГод ДФ=гггг
ПериодМесяц ДФ=MMММ
ПериодДень ДЛФ=D
ПериодЧас ДФ=Ч
ПериодМинута ДФ=мм
ПериодСекунда ДФ=сс

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

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

Использование в строке формата форматирующих символов как обычных

Отдельным "финтом" оказалась настройка форматной строки для ПериодКвартал, т.к. мне очень хотелось, чтобы он отображался не просто номером квартала, а строкой вида "1 кв.", "2 кв." и т.д.
Проблема была в том, что попытка использовать форматную строку вида "ДФ='к кв.'" приводила к тому, что вторая буква "к" трактовалась как "номер квартала", а буква "в", как "отображение половины дня", в результате чего получались строки вида "1 1пп.", "2 2дп." и т.п.
Пришлось проявить смекалку. В результате, я очень обрадовался, когда удалось платформе скормить такую форматную строку:

Поле периодаСтрока формата
ПериодКвартал ДФ='к "кв."'

Т.е., как оказалось

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

Использование НСтр в выражениях СКД

Ну и самой интересной оказалась настройка отображения ПериодПолугодие, т.к. платформа на этот счет вообще не предоставляет никаких средств форматирования.
Пришлось воспользоваться свойством "Выражение представления" поля набора данных.
Нажмите, чтобы посмотреть более содержательную картинку
И вписать в это свойство следующий текст:

ВЫБОР
	КОГДА КВАРТАЛ(Период.Полугодие) <= 2 ТОГДА
		"1"
	ИНАЧЕ
		"2"
КОНЕЦ
+
НСтр("ru = ' полугодие'; uk = ' півріччя'")
			

Как видим, логика выражения вполне проста - если номер квартала меньше или равен двум, то это первое полугодие, а иначе - второе.
Но тут интересным моментом является использование функции НСтр() для формирования локализованной версии строки.

Заключение

Надеюсь, что предоставленная выше информация помогла вам делать жизнь наших пользователей приятнее.