Реквизит типа таблица значений в тонком клиенте #707586


#0 by mishkerdon
В общем у меня есть форма отчета с реквизитом типа "Таблица значений". В этом реквизите есть колонка "Помещение" типа "Справочник.Помещение". Когда я заполняю на сервере этот реквизит, потом при переборе через цикл пытаюсь получить доступ к полям справочника этой колонки (ну например, наименование, площадь и т.п.) он ругается что таких полей нету. Что я делаю не так??
#1 by ДенисЧ
Делай на сервере
#2 by mishkerdon
ДенисЧ, я пытаюсь именно на клиенте, так как создаю COMОбъект (Word) и пихаю в него данные. Как можно на клиенте сделать это??
#3 by ДенисЧ
"Исправьте 6 ошибок в слове 'клиент' и вы получите правильный ответ!"
#4 by mishkerdon
а как вообще реализовать заполнение COMОбъекта на сервере и передача его клиенту?? Через ВременноеХранилище только?
#5 by SSSSS_AAAAA
Данные дергают на сервере, а не на клиенте. И потом пихают куда надо.
#6 by oleg_prg
Думаю идея понятна
#7 by mishkerdon
ну вот в том то и дело что у меня очень много данных разномастных берется из базы (некоторые справочники до 20 реквизитов имеют), и в ворде некоторые данные пихаются в виде таблиц по циклу, а некоторые через ContentControl. Неужели нельзя как то автоматизированно создавать коллекцию структур уже при передаче данных??? А трюк с выполнить не будет снижать производительность? Чтобы на каждый элемент ТЗ туда сюда гонять данные?
#8 by Defender aka LINN
У тебя вместо коленки уже титановый протез, не иначе...
#9 by oleg_prg
Лучше код напиши. В вопросе человек в принципе не понимает как вытянуть на клиенте реквизит доступный на сервере, я кинул первым, что пришло в голову. Это код для понимания самого принципа.
#10 by mishkerdon
да я знаю этот трюк с "Выполнить". Просто когда у меня идет цикл на 800 строк, а внутри него еще цикл по 10-20 строк, к тому же эту задачу параллельно запускает 5 человек, то тут мне кажется "Выполнить" просто схавает сеть и сервер.
#11 by oleg_prg
Причем здесь выполнить... Создайте функцию на сервере в которой сформируйте нужную таблицу с реквизитами типа строка и отдайте эту таблицу на клиент. Я же говорю мой пример это лишь  пример для понимания, как с сервера вытянуть нужную информацию
#12 by Defender aka LINN
Код в типовых уже давно написан, даже, я так подозреваю, в типовых для Белоруссии.
#13 by mishkerdon
т.е. все равно придется для каждой таблицы формировать свои примитивные таблицы с полями типа "Строка"?
#14 by oleg_prg
Думаю да, если я не прав, пусть поправят. PS вот без выполнить ) &НаСервере
#15 by Fragster
обычно запросом получают все нужные данные, а затем уже обходят его результат. В данном случае - нужно заполнить коллекцию на сервере и обойти ее на клиенте. а ... Выборка.Номенклатура.БазоваяЕдиницаИзмерения ... КонецЦикла И в обычных формах было говнокодом.
#16 by Zhuravlik
- В управляемых формах "&НаКлиенте" нет типа "ТаблицаЗначений". Но есть тип "ДанныеФормаКоллекция". - В клиентских процедурах недоступно обращение через точку к ссылочным типам данных, поскольку это является по-сути запросом к БД, а все запросы должны происходить на сервере (&НаСервере - с передачей контекста формы, или &НаСервереБезКонтекста). - Неправильно воспользоваться примером, приведенным в - явное обращение через точку означает что платформа выполнит запрос к базе типа: "ВЫБРАТЬ * ИЗ Справочники.Помещения КАК Помещения ГДЕ Ссылка = &Ссылка", т.е. получает все поля объекта. Все поля дольше получать чем одно поле) - Необходимо стремится к тому, чтобы минимизировать объем данных, получаемых в запросе от сервера. - Следует избегать запросов в цикле. з.ы. В типовых конфах есть универсальная процедура для получения реквизитов объекта, туда передается ссылка на объект и структура, в которой каждый ключ - это наименование поля. К объекту строится запрос, результат которого заполняет структуру по ключам, и возвращает эти данные. Искать в модулях "ОбщегоНазначения" и "ОбщегоНазначенияПовтИсп". Самое лучшее при получении реквизитов использовать эту функцию из модуля "ОбщегоНазначенияПовтИсп" - но следует учитывать что возвращаемые значения закешируются, может случиться что после получения данных значение реквизита изменилось. И т.д. и т.п. Так-то)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С