Строки как ресурсы в системе компоновки данных (СКД)

Ситуация : потребовалось вывести в отчете на платформе 1С Предприятие 8.2, выводимом с помощью системы компоновки данных (СКД), следующую таблицу из трёх колонок

Сотрудник Образование1 Сертификат1
Сотрудник Образование2 Сертификат1

таким образом :

Сотрудник Образование1;Образование2 Сертификат1

Каждое значение в колонке «Образование» представляло собой вычисляемое выражение вида

"Вид образования :" + ВидОбразования + 
"; Учебное заведение: " + УчебноеЗаведение + "; год окончания : " 
+ Формат(ГодОкончания, "ЧГ=") + "; Специальность: " + 
Специальность + "; Квалификация: " + Квалификация + 
"; Диплом: " + Диплом

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

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

Однако на этих форумах я почерпнул идею сделать из моих строк — ресурс, чтобы затем «просуммировать» его для группировки «Сотрудник». Функция «Сумма» для строк не подошла, поэтому я применил агрегатную функцию «СоединитьСтроки».

Я сделал из колонок «Образование» и «Сертификат» два ресурса таким образом :

СоединитьСтроки(Образование)
СоединитьСтроки(Сертификат)

и рассчитал их по группировке «Сотрудник», но на выходе получилось :

Сотрудник Образование1;Образование2 Сертификат1;Сертификат1

Возник вопрос : можно ли заставить СКД удалить дубли строк из результата функции СоединитьСтроки(), если она применяется к строковому ресурсу?

Оказалось, да! Для этого нужно было применить агрегатную функцию СКД Свернуть(), но не в определении ресурса типа

Свернуть(СоединитьСтроки(Образование) )

так как сам Конфигуратор недвусмысленно говорит, что вложенные агрегатные функции тут неприменимы, а в определении вычисляемого выражения Образование :

СВЕРНУТЬ("Вид образования :" + ВидОбразования + 
"; Учебное заведение: " + УчебноеЗаведение + "; год окончания : " 
+ Формат(ГодОкончания, "ЧГ=") + "; Специальность: " + 
Специальность + "; Квалификация: " + Квалификация + 
"; Диплом: " + Диплом)

Таким образом, задача была решена.

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.