В начало

Перетаскивание ТЗ через клиент-сервер

 

            Известно, что таблицу значений, например, полученную из запроса так просто не перетащишь через клиент-сервер, не тот тип оказывается.

            Как вариант можно сначала преобразовать таблицу значений в массив, потом перетащить, после чего опять преобразовать в таблицу значений.

            Ниже привожу необходимые для этого функции.

 

Листинг. Функции для перетаскивания ТЗ через клиент-сервер

Функция ТаблицаЗначенийВМассив(ТаблицаЗначений) Экспорт

   Массив = Новый Массив();

   СтруктураСтрокой = "";

   НужнаЗапятая = Ложь;

   Для Каждого Колонка Из ТаблицаЗначений.Колонки Цикл

       Если НужнаЗапятая Тогда

           СтруктураСтрокой = СтруктураСтрокой + ",";

       КонецЕсли;

       СтруктураСтрокой = СтруктураСтрокой + Колонка.Имя;

       НужнаЗапятая = Истина;

   КонецЦикла;

   Для Каждого Строка Из ТаблицаЗначений Цикл

       НоваяСтрока = Новый Структура(СтруктураСтрокой);

       ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);

       Массив.Добавить(НоваяСтрока);

   КонецЦикла;

   Возврат Массив;

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

 

&НаСервереБезКонтекста

Функция ПреобразованиеМассивВТаблицуЗначений(Массив)

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

 

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

       Если ТЗ.Колонки.Количество() = 0 Тогда

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

               ТЗ.Колонки.Добавить(ЭлементМассива.Ключ);

           КонецЦикла;

       КонецЕсли;

 

       НоваяСтрока = ТЗ.Добавить();

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

           НоваяСтрока[ЭлементМассива.Ключ] = ЭлементМассива.Значение;

       КонецЦикла;

   КонецЦикла;

 

   Возврат ТЗ;

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