Пример использования функций СКД Массив (Array) и СоединитьСтроки (JoinStrings) в отчёте 1С 8

Доброго времени суток, уважаемые читатели нашего блога! Сегодня я хочу рассказать, на реальном примере, как использовать функции СКД Массив (Array) и СоединитьСтроки (JoinStrings). В статье об СКД немного упоминалось, как работать с функциями языка выражений СКД на закладке «Вычисляемые поля», также уже объяснялось как настроить итоги в схеме компоновки данных 1С, используя закладку «Ресурсы». Сегодня мы ещё раз обратим внимание на эти закладки в свете нашей темы.

Внешний вид примера отчета 1С с использованием двух функций СКД Массив и СоединитьСтроки следующий:

Форма отчета 1С 8 после применения функций СКД Массив (Array) и СоединитьСтроки (JoinStrings)

Постановка задачи для применения функций СКД Массив (Array) и СоединитьСтроки (JoinStrings)

Задача: Нужно все номера реализаций по одному товару вставить в одну ячейку. Что-то вроде:

номенклатура | кол-во | 001, 002, и т.д. |

Будем использовать запрос к регистру накопления «РеализацияТМЗ».

ВЫБРАТЬ
	РеализацияТМЗ.Регистратор.Номер,
	РеализацияТМЗ.Номенклатура,
	РеализацияТМЗ.Регистратор,
	РеализацияТМЗ.КоличествоОборот
ИЗ
	РегистрНакопления.РеализацияТМЗ.Обороты
	(, , Регистратор, ) КАК РеализацияТМЗ

Регистру накопления «РеализацияТМЗ» существует как в конфигурации Бухгалтерия, так и в конфигурации Управление торговым предприятием (УТП). Узнайте, как в конфигурации УТП установить свойство «Услуга» в элементе справочника «Номенклатура». Поэтому, после скачивания, для проверки его работоспособности вы можете запускать этот отчёт в обеих конфигурациях.

Реализация поставленной задачи с применением функций СКД Массив и СоединитьСтроки

    1. Создадим новый набор данных.
    2. Вставим в него, вышеуказанный запрос.
    3. Перейдём на закладку «Вычисляемые поля» и добавим новую запись.
    4. В поле «Путь к данным» напишем МассивНомеров.
    5. В поле «Выражение» напишем Массив(РегистраторНомер).

      Создание вычисляемого поля с функцией СКД Массив (Array)

    6. Перейдём на закладку «Ресурсы» и добавим новые записи из раздела «Доступные поля», используя кнопку «>».
    7. Добавим МассивНомеров.
    8. В поле «Выражение» напишем СоединитьСтроки(Массив(РегистраторНомер),»,»,»»).
    9. В поле «Рассчитывать по…» выберем Номенклатура.
    10. Добавим КоличествоОборот.
    11. В поле «Выражение» напишем Сумма(КоличествоОборот).
    12. В поле «Рассчитывать по…» выберем Номенклатура.

      Создание ресурсов поля с функцией СКД СоединитьСтроки (JoinStrings)

    1. Перейдём на закладку «Настройки» и добавим новую группировку номенклатура.
    2. Зесь же на закладке «Выбранные поля» добавим новые поля из раздела «Доступные поля», используя кнопку «>». Выберем три поля «Номенклатура», «МассивНомеров», «КоличествоОборот».

      Настройка группировок и полей отчёта СКД

  1. И наконец, перейдём на закладку «Другие настройки» и изменим две строки «Расположение общих итогов по горизонтали» и «Расположение общих итогов по вертикали».
  2. В поле «Значение» установим значение «Нет». Это необходимо для запрета вывода итогов.

    Настройка вывода итогов СКД

Такие же шаги, но с некоторыми дополнениями, были использованы при создании отчёта о продаже номенклатуры по ГТД.

Описание функции СоединитьСтроки (JoinStrings)

СоединитьСтроки (JoinStrings) Используется для объединения строк в одну строку.

Синтаксис:

СоединитьСтроки (Значение, РазделительЭлементов, РазделителиКолонок)

Параметры:

  1. Значение — выражения, которые нужно объединить в одну строку. Если является Массивом, то в строку будут объединяться элементы массива. Если является ТаблицаЗначений, то в строку будут объединяться все колонки и строки таблицы;
  2. РазделительЭлементов — строка, содержащая текст, который нужно использовать в качестве разделителя между элементами массива и строками таблицы значений. По умолчанию – символ перевода строк;
  3. РазделителиКолонок -строка, содержащая текст, который нужно использовать в качестве разделителя между колонками таблицы значений. По умолчанию «;».

ПОДПИСКА

10 ответы
  1. Алиса говорит:

    Массив, в отличии от соединения строк, никогда не вызывал у меня проблем. А вот JoinStrings для меня была штука совсем уж непонятная. Именно по этой причине я и стала искать примеры работы с JoinStrings. Ваш пример внес ясность в мою голову. Проблема решена!

  2. Softmaker говорит:

    Здравствуйте, Алиса! Здорово, что пример использования функций СКД был для вас полезен!

  3. Диана говорит:

    примеры для работы с массивами мне не совсем понятны.. Я привыкла к визуальному восприятию. Быть может у вас есть аналогичное, но в видео записи? Была бы вам премного благодарна…

  4. Softmaker говорит:

    Здравствуйте, Диана! К сожалению видео об использовании функций СКД пока нет.

  5. Nebiros777 говорит:

    День добрый. У меня похожая задача, только я беру данные из двух Регистров — Остатки номенклатуры и ШтрихКоды номенклатуры. Без Вашего примера у меня получалось так, что если у номенклатуры например 2 штрихкода, а по остакам значение КоличесвоОстаток = 1, то по иреархии выводилось две одинаковые строки только с разными штрихкодами и итоги по самой номенклатуре в коллонке КоличесвоОстаток получались умноженными на количество штрихкодов соответстввено. Использовал Ваш пример, только В ресурсах поле КоличесвоОстаток в выражении поставил среднее. По номенклатуре стало отображаться нормально, но мне нужны остальные итогм по иреархии. Даже если ставлю рассчитывать НоменклатураИрерархия, то все равно итоги получаются суммой строк до СоединенияСтроки. Подскажите, как получить Итоги по остальной иреархии?

  6. Nebiros777 говорит:

    Вопрос снимается, решил в ресурсах через:
    Сумма(ВычислитьВыражениеСГруппировкойМассив("Минимум(КоличествоОстаток)","Номенклатура"))
    Быть может кому понадобится.

  7. Softmaker говорит:

    Спасибо, Nebiros777! Рад, что вы разобрались, как получить Итоги по остальной иерархии справочника с функцией ВычислитьВыражениеСГруппировкойМассив.

  8. JIeoIIoJIbD говорит:

    на версии платформы ниже 8,2 по видимому не работает ни "Массив" ни "JoinStrings" на версии 1С:Предприятие 8.1 (8.1.15.14) точно

  9. Softmaker говорит:

    Функции МАССИВ и JoinStrings появились, начиная с релиза платформы 8.2.14.

Комментарии закрыты.