Версия для печати темы (https://pro1c.org.ua/index.php?s=9baae9130b4a99128f516dc3ed93a387&showtopic=67525)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Работа с объектом ДанныеФормыКоллекция 1С 8.3 (УФ)
Автор: andrew76 02.04.24, 11:48
Добрый день всем.
Не получается передать Таблицу Значений с сервера на клиент.
На управляемой форме имеется реквизит РеквизитТЗ с типом ТаблицаЗначений.
Мне нужно передать ТЗ с сервера на клиент.
&НаСервере
Результат=Запрос.Выполнить().Выгрузить();
//заполняю реквизит формы РеквизитТЗ результатом запроса данных
ЭтотОбъект.РеквизитТЗ.Загрузить(Запрос.Выполнить().Выгрузить());
А как этот объект (ДанныеФормыКоллекция) прочитать на клиенте ?
Или я неправильно его заполнил в процедуре на сервере ?
Автор: alex-l1904 02.04.24, 12:05
andrew76 @ Сегодня, 12:48
,
Не має можливості передати, можна передати масив структур...
Автор: andrew76 02.04.24, 12:11
Цитата(alex-l1904 @ 02.04.24, 15:05)
andrew76 @ Сегодня, 12:48

,
Не має можливості передати, можна передати масив структур...
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).
Может использоваться в реквизитах управляемой формы.
Автор: Vofka 02.04.24, 13:21
alex-l1904 правильно подсказал: таблицу значений передать с сервера на клиент нельзя. Это если отвечать на
Цитата(andrew76 @ 02.04.24, 12:48)
Мне нужно передать ТЗ с сервера на клиент
Вы этот реквизит на сервере заполнили (правда вы 2 раза зачем-то запрос там выполняете, но не суть). Теперь, судя по этому
Цитата(andrew76 @ 02.04.24, 12:48)
А как этот объект (ДанныеФормыКоллекция) прочитать на клиенте ?
вы хотите прочитать это на клиенте.
Для Каждого Строка ИЗ РеквизитТЗ Цикл не подходит?
Автор: andrew76 02.04.24, 13:58
Vofka @ Сегодня, 16:21
,
Цитата(Vofka @ 02.04.24, 16:21)
Для Каждого Строка ИЗ РеквизитТЗ Цикл не подходит?
Цикл то работает,но в отладчике ничего не видно.пишет что значение = ДанныеФормыЭлементКоллекции.
Как с этим объектом работать не пойму.Количество элементов показывает 8.и все.
Цитата(Vofka @ 02.04.24, 16:21)
(правда вы 2 раза зачем-то запрос там выполняете, но не суть)
да , действительно.
Для каждого стр из РеквизитТЗ Цикл
//вот здесь отладчик пишет что стр =ДанныеФормыЭлементКоллекции
//как можно вытащить название колонки и ее значение ?
КонецЦикла
Автор: Vofka 02.04.24, 14:13
Сложновато понять что вы там делаете, честно говоря. Но внутри элемента коллекции должны быть свойства, соответствующие, колонкам.
Автор: sava1 02.04.24, 14:20
andrew76,
почитайте про РеквизитФормыВЗначение и наоборот
ДанныеФормыКоллекция - это не объект, а суррогат - обходить надо ТЗ
а для передачи ТЗ используйте Хранилище
Автор: andrew76 02.04.24, 14:25
sava1 @ Сегодня, 17:20
,
может это поможет ?
https://pro1c.org.ua/redirect.php?https://sakhexpo.ru/peredat-tabliczu-znachenij-v-rekvizit-formy/
Автор: sava1 02.04.24, 14:28
Цитата(andrew76 @ 02.04.24, 15:25)
может это поможет ?
мне ?
Автор: AnryMc 02.04.24, 14:33
Цитата(andrew76 @ 02.04.24, 14:58)
Для каждого стр из РеквизитТЗ Цикл
//вот здесь отладчик пишет что стр =ДанныеФормыЭлементКоллекции
//как можно вытащить название колонки и ее значение ?
КонецЦикла
!!!
???
Не РеквизитТЗ
А
РЕЗУЛЬТАТ Для каждого стр из РЕЗУЛЬТАТ Цикл
нс = РеквизитТЗ .Добавить();
ЗаполнитьЗначенияСвойств(нс, стр);
КонецЦикла
З.Ы, Если "колонки" определены в РеквизитТЗ
ИЛИ
ТекДок = РеквизитФормыВЗначение("Объект");
тз_Продукты = ТекДок.ПодробностиЗапроса.Выгрузить(,);
Для КАЖДОГО текПродукт ИЗ тз_Продукты Цикл
КонецЦикла;
ТекДок.ПодробностиЗапроса.Загрузить(тз_Продукты);
ЗначениеВРеквизитФормы(ТекДок, "Объект");
Автор: andrew76 02.04.24, 17:10
sava1 @ Сегодня, 17:28
,
Цитата(sava1 @ 02.04.24, 17:28)
мне ?
нет,это я про себя.
Автор: andrew76 03.04.24, 6:46
Цитата(AnryMc @ 02.04.24, 17:33)
Для каждого стр из РЕЗУЛЬТАТ Цикл
нс = РеквизитТЗ .Добавить();
ЗаполнитьЗначенияСвойств(нс, стр);
КонецЦикла
З.Ы, Если "колонки" определены в РеквизитТЗ
Доброе утро всем.
Получилось ! Получилось передать заполненную Таблицу Значений с серверной процедуры на клиентскую.
Сначала добавил в реквизит формы РеквизитТЗ -
колонки реквизита,которые соответствуют названиям полей запроса,
т.е. добавлял в реквизит на форме название колонки и соответвующий ей тип (ПараметрыРаботыУстановки.Ссылка КАК Ссылка)
Только после этого нормально отработала выгрузка данных из запроса в РеквизитФормы - РеквизитТЗ.
т.е. пока вручную не добавил колонки соответствующие по типу и имени колонкам данных из запроса,ничего выгрузить в эту
таблицу не получалось.Туда выгружались пустые строки и все !
Результат=Запрос.Выполнить().Выгрузить();
ЭтотОбъект.Реквизит3.Загрузить(Результат);
код заполнения отработал на сервере,а на клиенте я легко прочитал этот Реквизит формы РеквизитТЗ (заполненный данными из запроса).
&НаКлиенте
Для каждого стр из ЭтотОбъект.Реквизит3 Цикл
a=стр; //отладчик ее определяет как ДанныеФормыЭлементКоллекции
КонецЦикла;
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua