Как передать таблицу значений через клиента на управляемых формах
При выполнении одной из задач возникла передать между клиентскими частями обработки данные таблицы значений.
Может, и есть какие либо другие решения, но мне не попадались, да и искать не захотелось.
Накидал по-быстрому свой вариант. Для небольших таблиц работает без каких либо существенных нагрузок на систему.
Может, кому и пригодится данное решение.
- Описание
- Подробнее
Описание
Задача. Получить данные из таблицы объекта, поместить эти данные в параметры оповещения
для открываемой формы. Загрузить эти данные в таблицу открывшейся формы.
Получение данных. Данные решено было поместить в массив структур. Структура описывает данные строки таблицы значений.
// ВыгрузитьТаблицуЗначенийВМассив:
// Выгружает данные из таблицы значений в массив структур.
// Структура содержит данные строки. Ключами являются имена колонок
&НаСервере
Функция ВыгрузитьТаблицуЗначенийВМассив(ИмяТаблицыОбъекта)
ТаблицаОбъекта = Объект[ИмяТаблицыОбъекта].Выгрузить();
МассивСтрок = Новый Массив;
Для Каждого СтрокаДанных Из ТаблицаДанных Цикл
СтруктураСтроки = Новый Структура;
Для Каждого Колонка Из ТаблицаДанных.Колонки Цикл
ИмяКолонки = Колонка.Имя;
СтруктураСтроки.Вставить(ИмяКолонки, СтрокаДанных[ИмяКолонки]);
КонецЦикла;
МассивСтрок.Добавить(СтруктураСтроки);
КонецЦикла;
Возврат МассивСтрок;
КонецФункции
Получение данных из массива запись их в таблицу значений
///////////////////////////////////////////////////////////////////////////////
// ЗагрузитьТаблицуЗначенийИзМассива:
// Загружает данные из массива структур в таблицу значений.
// Таблица значений може быть как реквизитом объекта, так и
// реквизитом формы.
&НаСервере
Процедура ЗагрузитьТаблицуЗначенийИзМассива(МассивСДанными, ИмяТаблицыОбъекта)
ТаблицаОбъекта = Объект[ИмяТаблицыОбъекта].Выгрузить();
ТаблицаОбъекта.Очистить();
Для Каждого ЭлементМассива Из МассивСДанными Цикл
СтрокаТаблицы = ТаблицаОбъекта.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТаблицы, ЭлементМассива);
КонецЦикла;
Объект[ИмяТаблицыОбъекта].Загрузить(ТаблицаОбъекта);
КонецПроцедуры

