1С 8.3 Преобразование Массива В Таблицу Значений - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Преобразование Массива В Таблицу Значений

Данные > Примеры кода 1С > 1С 8.3 Массив
При наличии в конфигурации БСП, можно использовать ДополнитьТаблицуИзМассива и обратный метод ТаблицаЗначенийВМассив.
Преобразование массива в ТЗ в 1С 8.3:
&НаСервереБезКонтекста
Функция ПреобразованиеМассивВТаблицуЗначений(Массив)

   ТЗ = Новый ТаблицаЗначений;

   Для Каждого СтрокаМассива Из Массив Цикл

       Если ТЗ.Колонки.Количество() = 0 Тогда
           Для Каждого ЭлементМассива Из СтрокаМассива Цикл
               ТЗ.Колонки.Добавить(ЭлементМассива.Ключ);
           КонецЦикла;
       КонецЕсли;

       НоваяСтрока = ТЗ.Добавить();
       Для Каждого ЭлементМассива Из СтрокаМассива Цикл
           НоваяСтрока[ЭлементМассива.Ключ] = ЭлементМассива.Значение;
       КонецЦикла;

   КонецЦикла;

   Возврат ТЗ;

КонецФункции
Преобразование массива в ТЗ (v.2) в 1С 8.3:
&НаСервереБезКонтекста
Функция ПреобразованиеМассивВТаблицуЗначенийV2(Массив, Знач НазваниеКолонки="") Экспорт

   Если ПустаяСтрока(НазваниеКолонки) Тогда
       НазваниеКолонки = "Колонка1";
   КонецЕсли;

   НазваниеКолонки = СтрЗаменить(НазваниеКолонки, " ", "_");

   ТЗ = Новый ТаблицаЗначений;
   ТЗ.Колонки.Добавить(НазваниеКолонки);

   Если ЗначениеЗаполнено(Массив) Тогда
       Для Сч = 1 По Массив.Количество() Цикл
           ТЗ.Добавить();
       КонецЦикла;
       ТЗ.ЗагрузитьКолонку(Массив, НазваниеКолонки);
   КонецЕсли;

   Возврат ТЗ;

КонецФункции
Пример из типовой Управление торговлей. Модуль ОбщегоНазначенияУТ в 1С 8.3:
// Возвращает таблицу значений на основании массива структур
//
// Параметры:
// МассивСтруктур - Массив Из Структура - Массив структур, которые будут преобразованы в таблиц значений.
//    Свойства структуры первого элемента массива определяют состав колонок результирующей таблицы.
//
// Возвращаемое значение:
// ТаблицаЗначений - таблица значений, созданная из массива структур.
//
Функция ПреобразоватьМассивВТаблицуЗначений(МассивСтруктур) Экспорт

   Таблица = Новый ТаблицаЗначений;
   // Создадим колонки по первой структуре массива
   Если ТипЗнч(МассивСтруктур) = Тип("Массив")
       И МассивСтруктур.Количество() <> 0 Тогда
       ПерваяСтруктура = МассивСтруктур[0];
       Для Каждого Свойство Из ПерваяСтруктура Цикл
           Таблица.Колонки.Добавить(Свойство.Ключ, ОписаниеТиповПоТипу(ТипЗнч(Свойство.Значение)));
       КонецЦикла;

       Для Каждого Структура Из МассивСтруктур Цикл
           НоваяСтрока = Таблица.Добавить();
           ЗаполнитьЗначенияСвойств(НоваяСтрока, Структура);
       КонецЦикла;
   КонецЕсли;

   Возврат Таблица;

КонецФункции

// Возвращает описание типов по переданному типу
//
// Параметры:
//    Тип - Тип - Тип значения
//
// Возвращаемое значение:
//    ОписаниеТипов - созданное на основании переданного типа описание типов.
//
Функция ОписаниеТиповПоТипу(Тип) Экспорт

   МассивТипов = Новый Массив;
   МассивТипов.Добавить(Тип);

   ОписаниеТипов = Новый ОписаниеТипов(МассивТипов);

   Возврат ОписаниеТипов;

КонецФункции
2
комментарии
Сергей Палыч
18 дек 2023
@Igor Misen, значит вы передали не массив
Igor Misen
11 дек 2023
Ошибка в этой строке:
Для Каждого ЭлементМассива Из СтрокаМассива Цикл

Итератор для значения не определен
{ВнешняяОбработка.МассовоеСозданиеРасходныхНакладныхИСчетовНаОплатуИзОстатков2.Форма.Форма.Форма(258)}: Для Каждого ЭлементМассива Из СтрокаМассива Цикл
____________________
Copyright©, «Программист 1С в г.Минске», 29.03.2021
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому