Содержание:
1. Использование временного хранилища 1С
2. Заполнение таблицы значений формы
3. ЗначениеВСтрокуВнутр() – только для толстого клиента 1С 8.3
1. Использование временного хранилища 1С
Если есть необходимость передать таблицу значений с сервера на клиент в 1С можно использовать несколько вариантов. Для начала можно начать с временного хранилища 1С – самого лаконичного варианта:
ПоместитьВоВременноеХранилище(<Данные>, <Адрес>)
Где данные — это наша таблица значений, а адрес — это уникальный идентификатор или строка, куда нам нужно передать таблицу значений 1С. Например:
ПоместитьВоВременноеХранилище(ТаблицаЗначений, ЭтаФорма.УникальныйИдентификатор);
Для получения на клиенте таблицы значений достаточно будет использовать следующий код:
ПолучитьИзВременногоХранилища(ЭтаФорма.УникальныйИдентификатор);
2. Заполнение таблицы значений формы
Самый лаконичный способ передать на клиента таблицу значений не означает, что это самый правильный вариант. Самым правильным (судя по экзаменам платформы 1С) является вариант заполнение Таблицы значений формы. Для начала необходимо добавить в форму новый реквизит с типом «ТаблицаЗначений» и именем «ТаблицаЗначенийФормы». На сервере пишем следующий код строки 1С:
//Считаем, что тут вы получили таблицу значений, у которой необходимо передать данные на форму
ТЗ = ПолучитьТЗ();
ДобавляемыеРеквизиты = Новый Массив;
УдаляемыеРеквизиты = Новый Массив;
//Получаем уже созданную на форме Таблицу значений 1С
ИмяТФ = «ТаблицаЗначенийФормы”;
ТаблицаФормы = РеквизитФормыВЗначение(«ТаблицаЗначенийФормы»);
Для Каждого ТекКолонка из ТаблицаФормы.Колонки Цикл
УдаляемыеРеквизиты.Добавить(ТаблицаЗначенийФормы + «.» + ТекКолонка.Имя);
КонецЦикла;
Для Каждого ТекКолонка из ТЗ.Колонки Цикл
ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ТекКолонка.Имя, ТекКолонка.ТипЗначения, ИмяТФ));
КонецЦикла;
//Добавим новые, удалим старые колонки
ИзменитьРеквизиты(ДобавляемыеРеквизиты, УдаляемыеРеквизиты);
// Поместим значение в реквизит формы 1С
ЗначениеВРеквизитФормы(ТЗ, ИмяТФ);
После выполнения этой процедуры на форме обновится таблица значений на клиенте 1С, и вы сможете оперировать ими.
3. ЗначениеВСтрокуВнутр() – только для толстого клиента 1С 8.3
Третий вариант – передать таблицу значений на клиент 1С. Для этого используется ЗначениеВСтрокуВнутр(), но лучше его не использовать, ибо эта функция на данный момент доступна только на толстом клиенте 1С 8.3. Сам код похож на временное хранилище:
//Укладываем ТЗ в строку
тзВСтроке = ЗначениеВСтрокуВнутр(тз);
//Вытаскиваем ТЗ из строки
тз = ЗначениеИзСтрокиВнутр(тзВСтроке);
Есть еще много вариантов передачи таблицы значений 1С на клиента, начиная со структур, заканчивая XML, но стоит ли их использовать решать Вам. В данной статье перечислены варианты которые покроют 100% нужд.
Специалист компании «Кодерлайн»
Роман Барабанов