Управляемые формы - передача результатов запроса #660483


#0 by Gobo
Доброе время суток ! Создана процедура директивой сервера. В нем выполняется запроса и результат выгружается в ТЗ, методом Выгрузить. Теперь как его в таком же виде (ТЗ) возвращать процедуру с директивой клиента ?
#1 by Любопытная
Синтаксис: ЗначениеВДанныеФормы(<Значение>, <Объект>) Параметры: Тип: Произвольный. Значение прикладного типа, для которого определено преобразование в данные формы. Тип: ДанныеФормыСтруктураСКоллекцией; ДанныеФормыКоллекция; ДанныеФормыСтруктура. Данные формы, имеющие совместимую структуру. Описание: Преобразует объект прикладного типа в универсальный объект данных. Доступность: Сервер, толстый клиент.
#2 by el-gamberro
Никак, таблица значений не доступна на клиенте. Извращенный вариант: использовать таблицу - данныеформы коллекция. И сделать ее невидимой. А вообще раз такой вопрос возник, то скорее всего проблема в архитектуре или логике программы.
#3 by Aleksey
Преобразовать в структуру завести реквизит на форме тип ТЗ и передавать через него
#4 by Aleksey
Т.е. нужно получить список документов с реквизитами, а так как нельзя прервать на сервере выполнения вернуться на клиента и продолжить, то приходится разбивать логику, сначало получаем данные на сервере, затем перебираем данные на клиенте и работаем с ними на сервере. Логика была бы другое если бы можно было не только с клиента вызывать сервер, но и с сервера вызывать клиента
#5 by Gobo
С клиента разве можно выполнить запрос ?
#6 by Aleksey
с клиента можно вызывать серверную процедуру в которой будет запрос
#7 by Птах
Какие гуру-то набижали, вы еще в массив выгрузить посоветуйте :) прав, изначальный косяк в логике работы формы.
#8 by toypaul
ТаблицаНаФорме.Загрузить(Запрос.ВЫполнить.выбрать);
#9 by Defender aka LINN
Нахрена данные перебирать на клиенте?
#10 by Aleksey
да потому что в результате перебора может понадобиться вопрос задать пользователю, или документ програмно не провелся, я хочу открыть его чтобы пользователь провёл руками и дальше продолжить работать
#11 by Aleksey
да элементарна тот же прогресс бар
#12 by Aleksey
я может не хочу показывать в течении получаса курсор в виде колесика, я хочу сообщить клиенту о ходе работы
#13 by el-gamberro
это в уф делается по другому, через ОбработчикОжидания на клиенте.
#14 by cw014
А через временное хранилище нельзя выкинуть?
#15 by Defender aka LINN
Точно. Давайте на клиент кучу дерьма передадим, нахерачим серверных вызовов, да побольше! И вот тогда можно будет с чистой совестью рассказывать, какое 1С тормозное гуано.
#16 by Gobo
, про Хранилище высказались ? Получается оптимальный вариант ?
#17 by Нуф-Нуф
интересно, а зачем ТЗ на клиенте?
#18 by Gobo
Запрос возвращает 4 значения, ссылочного типа. Их надо вернуть процедуру клиента.
#19 by Любопытная
Вернуть для чего?
#20 by Gobo
Для добавления в табличную часть формы. Можно объявить переменную доступный серверу и клиенту в рамках модуля этой формы ?
#21 by Любопытная
Ты хочешь полученную ТЗ загрузить в ТЧ на форме?
#22 by Gobo
Да, но ТЧ форму содержит 15 колонок, из них только 4 определяется с помощью ТЗ полученным запросом, а остальное заполняется в процедуре клиента.
#23 by 1Сергей
про динамические списки не слышал, да?
#24 by Любопытная
Как табличная часть может заполняться на клиенте?
#25 by Gobo
На клиентской части идет загрузка из текстового документа. Там есть идентификаторы поставщика. Надо найти его элементы, документы из прикладных объектов 1С и добавить в табличную часть формы.
#26 by Gobo
После этого возникла идея сделать так:
#27 by Любопытная
Ну так ты загружаешь из файла все, что можно, потом передаешь это на сервер, на сервере дозаполняешь незаполненные колонки и отдаешь обратно на клиент уже готовую ТЧ. Разве так не правильнее будет?
#28 by Gobo
Но выдает ошибку: Поле объекта не обнаружено (Поставщик) Для этой строки: Сообщить(ТЗ.Поставщик);
#29 by Любопытная
Сообщить(ТЗ_тек.Поставщик)
#30 by Любопытная
Строку сообщай, а не всю колонку. ЗначениеВДанныеФормы(ТЗ.Поставщик, Элементы.БанкКлиентКлиентПоставщик); - это загрузка колонки в таблицу? ЧТо-то мне кажется, что так не выйдет
#31 by Gobo
Нельзя прочитать ТЗ ? Почему это не выполняется ? Для каждого ТЗ_тек из ТЗ Цикл ;    Сообщить(ТЗ.Поставщик); КонецЦикла;
#32 by Gobo
Понял Для каждого ТЗ_тек из ТЗ Цикл ;
#33 by Любопытная
Еще раз: Строку сообщай, а не всю колонку. Ты же написал Для каждого ТЗ_тек из ТЗ Цикл А теперь в цикле обращайся к ТЗ_Тек, в нем хранится текущая строка твоей ТЗ. Вот из строки поставщика и сообщай
#34 by Gobo
Не понял, как сообщать строку ?
#35 by Любопытная
ты уже все понял) продолжай
#36 by Gobo
Выдает ошибку о не несоответствии типов.
#37 by Любопытная
а что такое Элементы.БанкКлиентКлиентПоставщик? Полагаю, что это ДанныеФормыСтруктура. Все же считаю, что лучшим вариантом было бы на сервере собрать всю таблицу, не пришлось бы мучиться с передачей всякой хрени на клиент
#38 by Rovan
вот как у меня работает ЭТО (ТаблицаДокументов - это таблица на форме) &НаСервере
#39 by Gobo
Спасибо Всем, особенно - Любопытная.
#40 by Любопытная
Ничего не поняла. Объект.БанкКлиент[нстр-1].КлиентПоставщик=ТЗ_тек.Поставщик; Что это за конструкция? Что здесь где? Как оно работает?
#41 by Gobo
Элементы.БанкКлиентКлиент связан с Объект.БанкКлиент.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям