Версия для печати темы (https://pro1c.org.ua/index.php?s=9bc9a4835a0828baa9da54aea1a727ce&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