При работе со списками в SharePoint не хочется сильно увлекаться представлением полей во множестве столбцах. С такими данными не очень удобно работать, а также это крайне расточительно в части операций записи/чтения для производительной работы. Всегда продумывайте структуру данных, и если это массив данных, который однозначно относится к одной сущности, то можно такой массив записать в одно поле, а не в несколько. Например, у вас есть серия испытаний в рамках одного теста, в котором вам надо записать 3 наблюдения. Каждое наблюдение содержит 3 характеристики.  

Неправильно создавать 3 столбца под каждую характеристику наблюдения, т.к. другой тип теста может содержать уже 4 и более характеристик. Вы можете создать поля впрок, но анализировать такие данные будет неприятно. Давайте "схлопнем" данные в одно текстовое поле в структурированном виде и будем читать для визуализации в табличном виде каждую запись такого теста. Разберем на примере такой обработки/визуализации данных в приложении Power APPS.

Чтобы задача выглядела несколько поинтереснее, затронем следующие моменты:

  1. Заполним таблицу из JSON данных.
  2. Запишем данные из коллекции в строку в JSON представлении.
  3. Сделаем кнопку для очистки таблицы от данных.
  4. Создадим кнопку для удаления выделенной записи из таблицы.

Для записи данных я буду в качестве примера писать 3 характеристики: CRF, CRI, CRC.

Давайте решать задачи логично и по порядку. 

  1. Придумайте название для коллекции, которая будет отвечать за представление характеристик: Поля1, Поля2, Поля3, допустим colConfig.
  2. Сейчас наша коллекция colConfig (массив) пустая, мы еще к ней вернемся. Поэтому хорошо бы разово инициировать коллекцию. Можно это сделать на событие вашей экранной формы OnVisible, прописав код создания структуры с пустой записью и следом удалить пустышку, оставив скелет коллекции для последующей работы.
    ClearCollect(colConfig, {CRF:"",CRI:"",CRC:""}); 
    Clear(colConfig);
  3. Можно прописать на свойство Items нашего визуального компонента "таблица" как раз только имя коллекции colConfig.

Разберем следующий блок - добавление записи характеристик из поле в коллекцию. Для этого на кнопку добавления записи пропишем функцию Collect() с составом значений, указанных в полях ввода выше. Функция RandBeetween() используется исключительно для примера для придания уникальности записываемым данным.

Collect(colConfig, 
 {CRF:Trim(e1.Value)&RandBetween(10000,1000000),
 CRI:Trim(e2.Value)&RandBetween(10000,1000000) ,
 CRC:Trim(e3.Value)&RandBetween(10000,1000000) 
 });

Нажав на кнопку добавления записи пополняется коллекция, а значит автоматически обновляется визуальная часть таблицы, у которой Items ассоциирован с коллекцией ColConfig.

Но ваша таблица всё еще ничего не покажет, пока вы не укажите инициированные поля (DataField), это легко сделать в интерфейсе среды разработки как на картинке:

 

Давайте отработаем попутно две простые функции из списка наших задач: удаление выделенной записи и очистка всей таблицы от введенных данных. Чтобы удалить данные из таблицы, достаточно почистить коллекцию, используя функцию Clear().

Clear(colConfig)

А чтобы удалить выделенную запись из таблицы Table1 (визуального компонента), которая к тому же относится Modern Controls, то используем функцию удаления по условию RemoveIf(). Не забываем, что мы работаем с коллекцией. поэтому от таблицы мы должны получить признак уникальности удаляемой строки. В нашем примере считаем, что любая запись фактически уникальна. Поэтому для корректного удаления записи из таблицы просто фильтруем коллекцию до результата с одной записью и удаляем ее из коллекции. Определение записи уникального значения для фильтра через свойство Table1.Selected.[Field] - запишем значение ячейки в переменную ActiveCell, которую объявим на событие OnSelect() нашей таблицы Table1:

Set(ActiveCell, Table1.Selected.CRC)

Удалим из коллекции строку со значением переменной ActiveCell :

RemoveIf(colConfig,CRC=ActiveCell)

Теперь разберемся с записью в строковую переменную коллекции в JSON. Это можно сделать, используя штатную функцию JSON() c параметрами. Достаточно важно преобразовать коллекцию в строку JSON, указав дополнительные параметры: JSONFormat.IgnoreUnsupportedTypes - игнорировать неподдерживаемые типы данных и  JSONFormat.IgnoreBinaryData - исключить при преобразование бинарные данные. Запишем результат в строковую переменную colJstr. Можете это сделать в любом месте вашего приложения: отдельно на кнопку, на OnSelect() таблицы и т.п.

Set(colJstr, JSON(colConfig,JSONFormat.IgnoreUnsupportedTypes & JSONFormat.IgnoreBinaryData))

Когда у нас есть строка с массивом данных в JSON формате, которую можно записать, то как ее можно корректно прочесть для визуализации в табличном виде. Для этого достаточно использовать функцию разбора JSON данных - ParseJSON() и прочесть данные в цикле обратно в коллекцию colConfig. Опять же событие определите сами, в нашем примере это будет кнопка Создать коллекцию.

ClearCollect(
    colConfig,
        ForAll(
        Table(ParseJSON(colJstr)),
        {   
            CRI: Text(Value.CRI),
            CRF: Text(Value.CRF),
            CRC: Text(Value.CRC)
        }
))

Вот так можно собрать из JSON коллекцию. 

Таким образом, можно записывать/считывать массивы данных. Подобный способ не имеет ограничений на количество табличных записей (конечно упираясь в пределы типа переменной Power APPS или поля списка Sharepoint List), позволяя сэкономить на полях вашего списка.