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

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

1С 8.3 Передача Таблицы Значений с сервера на клиент

Данные > Примеры кода 1С > 1С 8.3 Таблица значений
Пример 1. Передать ТЗ на клиент с сервера (через процедуру ОбщегоНазначения) в 1С 8.3:
Процедура ПередатьТаблицуЗначенийНаКлиент(Элемент) Экспорт

   ОбщегоНазначения.ТаблицаЗначенийВМассив(ТаблицаЗначений);

КонецПроцедуры
Пример 2. Передать ТЗ на клиент с сервера (через Временное хранилище) в 1С 8.3:
Процедура ПередатьТаблицуЗначенийНаКлиент(ТаблицаЗначений) Экспорт

   АдресХранилищаСТЗ = ПоместитьВоВременноеХранилище(ТаблицаЗначений,ЭтаФорма.УникальныйИдентификатор);
   ПереносТЗ = ПолучитьИзВременногоХранилища(АдресХранилищаСТЗ);

КонецПроцедуры
Пример 3. Передать ТЗ на клиент с сервера (через ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр) в 1С 8.3:
&НаКлиенте
Процедура ПолучитьТаблицуНаСервере(Команда)

   ТЗ_Стр = ПолучитьТЗНаСервере(); // Получаем данные на сервере
   ТаблицаЗначений = ЗначениеИзСтрокиВнутр(ТЗ_Стр);

КонецПроцедуры

&НаСервере
Функция ПолучитьТЗНаСервере(ТЗ)

   Возврат ЗначениеВСтрокуВнутр(ТЗ);

КонецФункции
Пример 4. Передать ТЗ на клиент с сервера (через реквизит формы в 1С 8.3:
&НаСервере
Функция ПередатьТаблицуЗначенийНаКлиент(ОбъектСсылка, ИмяТабличнойЧасти)

   ОбъектЗначение = ОбъектСсылка.ПолучитьОбъект();
   ОбъектТЧ = ОбъектЗначение[ИмяТабличнойЧасти].Выгрузить();

   МассивРеквизитов = Новый Массив;
   МассивСтарыхРеквизитов = Новый Массив;
   МассивКолонок = Новый Массив;

   ИдКоллекции="РеквизитФормыТЗ"; // Реквизит формы с типом Табл.Значений

   ТаблицаФормы=РеквизитФормыВЗначение(ИдКоллекции);

   Для Каждого Колонка Из ТаблицаФормы.Колонки Цикл
       МассивСтарыхРеквизитов.Добавить(ИдКоллекции+"."+Колонка.Имя);
   КонецЦикла;

   Для Каждого Колонка Из ОбъектТЧ.Колонки Цикл
       МассивРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя,Колонка.ТипЗначения,ИдКоллекции));
       МассивКолонок.Добавить(Колонка.Имя);
   КонецЦикла;

   // Добвляем новые и удаляем старые колонки
   ЭтаФорма.ИзменитьРеквизиты(МассивРеквизитов,МассивСтарыхРеквизитов);

   // Помещаем значение в реквизит формы
   ЗначениеВРеквизитФормы(ОбъектТЧ,ИдКоллекции);

   Возврат МассивКолонок;

КонецФункции
Пример 5. Передать ТЗ на клиент с сервера (через Массив из структур) в 1С 8.3:
// Преобразуем ТаблицуЗначений в Массив из структур.
Функция ПреобразоватьТЗвМассив(ТЗ) Экспорт

   МассивТЗ = Новый Массив;
   Для Каждого СтрокаТЗ Из ТЗ Цикл

       СтруктураТЗ = Новый Структура;
       Для Каждого ИмяКолонки Из ТЗ.Колонки Цикл
           СтруктураТЗ.Вставить(ИмяКолонки.Имя, СтрокаТЗ[ИмяКолонки.Имя]);
       КонецЦикла;

       МассивТЗ.Добавить(СтруктураТЗ);

   КонецЦикла;

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

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

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

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

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

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

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

   Возврат ТЗ;

КонецФункции
3
комментарии
Nonap
15 ноя 2023
ЗначениеИзСтрокиВнутр() доступен только на сервере, толстом клиенте и внешнем соединении, так что пример 3 не рабочий.
Александр
10 авг 2023
По 5-му примеру неплохо было бы пояснить, где какая функция выполняется - на Сервере или Клиенте.
Новую таблицу значений на клиенте создать нельзя. И с сервера на клиент ее нельзя передать.
Алексей
28 фев 2023
ПереносТЗ = ПолучитьИзВременногоХранилища(АдресХранилищаСТЗ);
Это НЕ работает для ТЗ
____________________
Copyright©, «Программист 1С в г.Минске», 22.06.2021
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому