Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Передача Таблицы значений с сервера на клиент (внешняя обработка)

Передача Таблицы значений с сервера на клиент (внешняя обработка)
Я
   MAPATNK2
 
17.08.21 - 14:06
Заезженная тема, понимаю. Но на УФ раньше работал мало, а тут понять не могу, как работает механизм.

Получаю наименования документов базы:

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

Далее нужно показать этот список на уже созданной таблице значений на форме.  "ТЗ1"

Хотел передать ТБ2 с сервера на клиент способом

ПоместитьВоВременноеХранилище(ТБ2, ЭтаФорма.УникальныйИдентификатор);

А потом на клиенте

ПолучитьИзВременногоХранилища(ЭтаФорма.УникальныйИдентификатор);

Но способ не работает, пишет "Ошибка получения значения из временного хранилища". Какая ошибка, не известно, никаких подробностей в "Подробнее" и в конфигуратор не попадает.
   MAPATNK2
 
1 - 17.08.21 - 14:08
Знаю, что есть механизм РеквизитФормыВЗначение("Объект"), но так и не понял, как его сюда запихнуть. Постоянно вываливаются ошибки.
писал так РеквизитФормыВЗначение("Объект"), ошибка типа.
писал так РеквизитФормыВЗначение("ТЗ1") та же ошибка.
   acht
 
2 - 17.08.21 - 14:09
На клиенте таблица значений не существует. Вообще. Никак.
Для обхода есть реквизиты формы и массивы структур
   lodger
 
3 - 17.08.21 - 14:09
это всё потому, что вы не понимаете сущности процесса работы клиент-сервера.
   lodger
 
4 - 17.08.21 - 14:10
(1) если ТЗ1 уже есть на форме, так и заполни её на сервере. на клиент она сама приедет в конце серверного вызова.
   lodger
 
5 - 17.08.21 - 14:10
Получаю наименования документов базы:

Для каждого стр Из Метаданные.Документы Цикл
    Новстр = ТЗ1.Добавить();
    Новстр.док = (стр.Синоним);            
КонецЦикла;
   MAPATNK2
 
6 - 17.08.21 - 14:14
(4) Спасибо большое.
Надо почитать книжки по УФ
   MAPATNK2
 
7 - 17.08.21 - 14:16
(2) Как пользоваться реквизитом формы? Я пробовал по аналогиис примерами в интернете делать, ещё на сервере ошибка вылезала.
РеквизитФормыВЗначение("Объект"), ошибка типа.
писал так РеквизитФормыВЗначение("ТЗ1") та же ошибка.
   Флориан
 
8 - 17.08.21 - 14:25
с сервера на клиент
&На сервере:
 ДокументОбъект = РеквизитФормыВЗначение("Объект");
ДокументОбъект.Запасы.Загрузить(ВыборкаДетальныеЗаписи.Скопировать());
ЗначениеВРеквизитФормы(ДокументОбъект,"Объект");
   Kassern
 
9 - 17.08.21 - 14:28
(0) ну так заполните реквизит модуля формы ТЗ на сервере и все. Он автоматом у вас не клиенте отобразится, если выведен на форму.
   MAPATNK2
 
10 - 17.08.21 - 14:29
(9) Да, уже выше писали, Так получилось. Хотел попробовать другим способом. Например  РеквизитФормыВЗначение
   MAPATNK2
 
11 - 17.08.21 - 14:30
(8) У меня тут внешняя обработка, а не документ объект...
   Флориан
 
12 - 17.08.21 - 14:33
(11) передай через массив структур
   runoff_runoff
 
13 - 17.08.21 - 14:35
(12) не надо так.. надо как в (9)
   MAPATNK2
 
14 - 17.08.21 - 14:40
(13) Я понимаю, просто рассматривал способы передачи ТЗ
   MAPATNK2
 
15 - 17.08.21 - 14:41
(13) Только я так и не понял. Почему клиентская таблица заполняется на сервере, а на самом клиенте её вообще не существует, как писали выше.
   runoff_runoff
 
16 - 17.08.21 - 14:42
на клиенте существует ДанныеФормыКоллекция
   Вафель
 
17 - 17.08.21 - 14:45
Проще всего
РеквизитФормыТз.загрузить(моятз)
Всякие объекты в значения не нужны
   Kassern
 
18 - 17.08.21 - 15:17
(14) массив структур вам в помощь. Даже где то были тут куски кода, которые такое делают
   VladZ
 
19 - 17.08.21 - 15:21
(0) Зачем ее передавать?
   ildary
 
20 - 17.08.21 - 15:36
(16) Потому что так решила 1С.
   lamme
 
21 - 17.08.21 - 16:10
Я так пользуюсь для передачи ТЗ с сервера на клиент функциями
ПреобразоватьТаблицуЗначенийВМассив(входящаяТЗ) - это когда на сервере сформировал ТЗ и ее надо на клиента вернуть

а на клиенте конвертирую ее обратно в ТЗ
ПреобразоватьМассивВТаблицуЗначений (входящиймассив)

(в инете есть полные примеры фунгкций. как я понимаю - это из БСП)

--

а по (0)
если у формы есть реквизит - с типом ТаблицаЗначений
то ее на сервере и заполнить через

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


только структуру - задать руками у этого реквизита
   AlvlSpb
 
22 - 17.08.21 - 21:55
(0) "Далее нужно показать этот список на уже созданной таблице значений на форме.  "ТЗ1"". Так если надо показать на форме, используй ТЧ а не ТЗ и способ из (17). Создаешь трудности там где их нет
   серый КТУЛХУ
 
23 - 17.08.21 - 22:03
(2): таладно "несущиствууииит".
попробуй на коиенте
ОписаниеТипа = Новый ОписаниеТипов("ТаблицаЗначений");
ОйШоЕтоТакое = Новый(ОписаниеТипа.Типы()[0]);
отладка = истина;// суй сюдой брейкпойнт и шифт-ф9 на ОйШоЕтоТакое... а потом на киенте погоняй методы...
   acht
 
24 - 17.08.21 - 22:24
(23) А теперь тоже самое на веб-клиенте. ОйШоЕтоТакое, а?
   1ctube
 
25 - 17.08.21 - 22:33
ТЗ ты можешь дополнить данными на сервере. А на клиенте получаются устаревшие данные. Непорядок


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.