Передача таблицы значений на клиент 1С
-

Передача таблицы значений на клиент 1С

5
83017
28.10.2020 Роман Барабанов

Содержание:

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% нужд.


Специалист компании «Кодерлайн»

Роман Барабанов

 

Задать вопрос автору статьи
Тема вопроса*
Ваше имя*
E-mail или телефон*
Ваш вопрос*
 

0
Guest
Использование временного хранилища 1С - это работает только на толстом клиенте?
Имя Цитировать 0
0
Guest
Цитата
Guest пишет:
Использование временного хранилища 1С - это работает только на толстом клиенте?
Да.
Имя Цитировать 0
0
Guest
ПолучитьИзВременногоХранилища(ЭтаФорма.УникальныйИдентификтор);
1. Тут опечатка в слове "Идентификтор"
2. При таком подходе из временного хранилища ничего не получите, правильный подход такой:
АдресВХранилище = ПоместитьВоВременноеХранилище(ТЗ);
ПолучитьИзВременногоХранилища(АдресВХранилище);
Имя Цитировать 0
0
Guest
В методе 2 отсутствует процедура ИзменитьРеквизиты.
Имя Цитировать 0
0
Александр
В методе 2 строку:
 УдаляемыеРеквизиты.Добавить(ТаблицаЗначенийФормы + "." + ТекКолонка.Имя);

заменить на:
 УдаляемыеРеквизиты.Добавить("ТаблицаЗначенийФормы" + "." + ТекКолонка.Имя);

Хотя при первом заполнении отрабатывает и так, поскольку удаляемых колонок ещё нет. Данная ошибка выявляется при повторном заполнении ТЗ.
Имя Цитировать 0
Добавить комментарий
Текст сообщения*
Защита от автоматических сообщений
 
Услуги программиста 1С
Получите специалиста
для решения всех задач
в области 1С
Программы 1С
Цены и подробное описание программ 1С:Предприятие 8.