helpf.pro
Регистрация
 0 
Распечатать

Как преобразовать таблицу значений в массив для передачи с сервера на клиента

Данная процедура Преобразует таблицу значений в массив.

Может использоваться для передачи на клиента данных, полученных на сервере в виде таблицы значений в том случае, если таблица значений содержит только такие значения, которые могут быть переданы на клиента 

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

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

Код 1C v 8.3
 
//
//    Параметры: ТаблицаЗначений
//    Возвращаемое значение: Массив
//
Функция ТаблицаЗначенийВМассив(ТаблицаЗначений) Экспорт
    
    Массив = Новый Массив();
    СтруктураСтрокой = "";
    НужнаЗапятая = Ложь;
    Для Каждого Колонка Из ТаблицаЗначений.Колонки Цикл
        Если НужнаЗапятая Тогда
            СтруктураСтрокой = СтруктураСтрокой + ",";
        КонецЕсли;
        СтруктураСтрокой = СтруктураСтрокой + Колонка.Имя;
        НужнаЗапятая = Истина;
    КонецЦикла;
    Для Каждого Строка Из ТаблицаЗначений Цикл
        НоваяСтрока = Новый Структура(СтруктураСтрокой);
        ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
        Массив.Добавить(НоваяСтрока);
    КонецЦикла;
    Возврат Массив;


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

Подробнее мы писали об этом в статье: Как передать таблицу значений с сервера на клиент?

вот еще пример:

Код 1C v 8.2 УП
 &НаКлиенте
Процедура ПолучитьТаблицуНаСервер(Команда)
 
  ТЗ = ПолучитьТЗНаСервере();
 
КонецПроцедуры

// Функция получает данные на сервере
&НаСервере
Функция ПолучитьТЗНаСервере()
  // Для примера сформируем ТЗ с данными
  ТЗ = ЗаполнитьТЗДанными();
 
  МассивЗнч = Новый Массив;
 
  Для Каждого СтрТЗ ИЗ ТЗ Цикл 
 
    СтруктураВМассив = Новый Структура;
    СтруктураВМассив.Вставить("Поле1" , СтрТЗ.Поле1);
    СтруктураВМассив.Вставить("Поле2" , СтрТЗ.Поле2);
    СтруктураВМассив.Вставить("Поле3" , СтрТЗ.Поле3);
    СтруктураВМассив.Вставить("Поле4" , СтрТЗ.Поле4);
    СтруктураВМассив.Вставить("Поле5" , СтрТЗ.Поле5);
 
    МассивЗнч.Добавить(СтруктураВМассив);
 
  КонецЦикла;  
  Возврат МассивЗнч;
КонецФункции

//Функция заполняет ТЗ
&НаСервере
Функция ЗаполнитьТЗДанными()
 
  ТЗ = Новый ТаблицаЗначений;
  ТЗ.Колонки.Добавить("Поле1");
  ТЗ.Колонки.Добавить("Поле2");
  ТЗ.Колонки.Добавить("Поле3");
  ТЗ.Колонки.Добавить("Поле4");
  ТЗ.Колонки.Добавить("Поле5");
 
  Для i = 1 По 3 Цикл 
 
    НоваяСтр = ТЗ.Добавить();
    НоваяСтр.Поле1 = i;
    НоваяСтр.Поле2 = 2*i;
    НоваяСтр.Поле3 = 3*i;
    НоваяСтр.Поле4 = 4*i;
    НоваяСтр.Поле5 = 5*i;
 
  КонецЦикла;   
 
  Возврат ТЗ;
 
КонецФункции 
Разместил:   Версии: |  Дата:   Прочитано: 6180
 0 
Распечатать
Возможно, вас также заинтересует
1C и Google Maps 12
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во...
1С 7.x : Как получить курсы валют с сайта НБУ http://www.bank.gov.ua/ за любую дату ? 2
Функция ПолучитьТаблицуКурсовНБУ(ДатаКурса, Ежедневно = 1) // если в качестве второго параметра указать число отличное от 1 - получем валюты, которые котируются на ежемесячной основе Перем Reader, Url, Точки, HtmlTab, Строк, Р,...
COM-подключение к базе 7.7 из 8.2 1С 4
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе="...
Cодержимое указанного ниже веб-сайта в этом приложении блокируется... Aboutsecurity_1cv8c.exe 0
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже...
Excel файл как Внешний источник данных 4
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . ...
Посмотреть все результаты поиска похожих
Комментарии
DJ_Serega
16.10.2014 07:01Комментарий: 1
DJ_Serega

Я обычно вместо "НужнаЗапятая":

Код 1C v 8.х
 НужнаЗапятая = Ложь;
Для Каждого Колонка Из ТаблицаЗначений.Колонки Цикл Если НужнаЗапятая Тогда СтруктураСтрокой = СтруктураСтрокой + ","; КонецЕсли; СтруктураСтрокой = СтруктураСтрокой + Колонка.Имя; НужнаЗапятая = Истина; КонецЦикла;

пишу так: "СтруктураСтрокой = Сред(СтруктураСтрокой, 1, СтрДлина(СтруктураСтрокой) - 1);"

Как по мне то без проверки на условие экономим 0.00001 секунды за цикл ))))

Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.