|
Передать структуру с сервера на клиент | ☑ | ||
---|---|---|---|---|
0
Pro1001C
09.04.18
✎
16:57
|
Хочу сделать обработку, которая будет заполнять данными документ и открывать форму нового не записанного документа. Для этого планирую использовать конструкцию с ОткрытьФорму
Пример: ПараметрыФормы= Новый Структура; ПараметрыФормы.Вставить("Дата",ТекущаяДата()); ОткрытьФорму("Документ.МойДокумент.ФормаОбъекта", ПараметрыФормы); Соответственно в модуле документа "МойДокумент" есть процедура ОбработкаЗаполнения которая подхватит дальнейшую обработку и заполнение документа. Вопрос собственно в том, как подготовить структуру ПараметрыФормы. Вернее я ее подготовил, но как ее теперь с сервера передать на клиент? Или как то по другому нужно действовать в поставленной задаче? |
|||
1
Pro1001C
09.04.18
✎
17:01
|
Т.е. мне в структуру нужно запихать разные данные с разных мест. Это реквизиты документа и табличные части для нового документа
|
|||
2
_Дайвер_
09.04.18
✎
17:03
|
||||
3
Pro1001C
09.04.18
✎
17:07
|
(2) это понятно, конструкция заполнения формы нового документа и меня есть. Я не знаю как структуру, собранную на сервере, передать на клиент, чтобы воспользоваться
ОткрытьФорму("Документ.МойДокумент.ФормаОбъекта", ПараметрыФормы); У меня нет возможности на клиенте собрать структуру ПараметрыФормы |
|||
4
dezss
09.04.18
✎
17:09
|
(3)
&НаСервереБезКонтекста Функция МояФункция(МоиПараметры) ВозвращаемаяСтруктура = Новый Структура; ...... Возврат ВозвращаемаяСтруктура; КонецФункции |
|||
5
_Дайвер_
09.04.18
✎
17:12
|
(3) В твоем случае можно использовать хранилище
|
|||
6
_Дайвер_
09.04.18
✎
17:15
|
(0) В месте откуда получаешь Структуру
АдресХранилища = ПоместитьВоВременноеХранилище(ТвояСтруктура); А между в параметрах формы передаешь адрес хранилища В месте где она тебе нужна: ТвояСтруктура = ПолучитьИзВременногоХранилища(АдресХранилища); |
|||
7
Pro1001C
09.04.18
✎
17:16
|
(4) так попробовал, выдает
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: |
|||
8
Pro1001C
09.04.18
✎
17:17
|
(6) на сервере помещаю в хранилище, а на клиенте вызываю из хранилища?
|
|||
9
_Дайвер_
09.04.18
✎
17:18
|
(7) Потому что мутабельные значения передаются, делай как я написал, и все будет чики пуки (8) да
|
|||
10
_Дайвер_
09.04.18
✎
17:18
|
(8) Только на клиенте она не вызовется, на сервере получай
|
|||
11
Cyberhawk
09.04.18
✎
17:19
|
Покажи код с ошибкой, пади реквизиты формы передаешь туда-сюда
|
|||
12
Rovan
гуру
09.04.18
✎
17:20
|
тФорма = ПолучитьФорму("Документ.МойДокумент.ФормаОбъекта"); тФорма.ЗаполнитьПоСтруктуре(ПараметрыФормы);
тФорма.Открыть(); |
|||
13
_Дайвер_
09.04.18
✎
17:21
|
(8) ПриСозданииНаСервере новой твоей не записанной формы документа (11) Там мутабельные значения, это нормально что он ошибку ловит, он же структуру передает
|
|||
14
_Дайвер_
09.04.18
✎
17:22
|
(11) Всмысле ссылочные данные
|
|||
15
Cyberhawk
09.04.18
✎
17:26
|
(14) Ссылки не являются мутабельными и отлично гуляют туда-сюда.
А (12) - завязывай уже быдлокодить ) |
|||
16
dezss
09.04.18
✎
17:28
|
(7) э...а что ж ты пихаешь в эту структуру?
пихай простые значения, никаких мутабельных, ТЗ и прочего, что живет только на сервере.... |
|||
17
_Дайвер_
09.04.18
✎
17:31
|
(15) Я имел ввиду структура его имеет ссылки на мутабельные значения
|
|||
18
Pro1001C
09.04.18
✎
18:14
|
Что-то не выходит у меня каменный цветок.
Я в структуру хочу запихать результат запроса для формирования табличной части документа. Попробовал так: &НаКлиенте ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Дата", ТекущаяДата()); Объект.АдресХранилища=ПоместитьВоВременноеХранилище(ПараметрыФормы); //Далее серверная процедура ПолучитьТабличнуюЧасть(); ПараметрыФормы=ПолучитьИзВременногоХранилища(Объект.АдресХранилища); ОткрытьФорму("Документ.МойДокумент.ФормаОбъекта", ПараметрыФормы); &НаСервере Процедура ПолучитьТабличнуюЧасть() ПараметрыФормы=ПолучитьИзВременногоХранилища(Объект.АдресХранилища); ПараметрыФормы.Вставить("Товары",Результат.Выгрузить()); Объект.АдресХранилища=ПоместитьВоВременноеХранилище(ПараметрыФормы); КонецПроцедуры Видно проблема в табличной части. Но у меня вся фишка в табличной части, по ней идет заполнение в новом документе |
|||
19
Pro1001C
09.04.18
✎
18:17
|
похоже все банально спустилось к передачи ТЗ с сервера на клиент
|
|||
20
lodger
09.04.18
✎
18:20
|
(19) у вас архитектура процесса неправильно построена.
|
|||
21
Pro1001C
09.04.18
✎
18:23
|
(20) возможно. Мне всего то нужно отработать следующую конструкцию:
ПараметрыФормы= Новый Структура; ПараметрыФормы.Вставить("Дата",ТекущаяДата()); //тут в структуру запихать разные реквизиты и табличные части для заполнения документа МойДокумент ОткрытьФорму("Документ.МойДокумент.ФормаОбъекта", ПараметрыФормы); Но чтобы в структуру запихать, нужно на сервер идти и получать все необходимые данные для этой структуры. Как только в структуру все запихал и отправил, то все нормально, создается форма нового документа с нужным заполнением. |
|||
22
Tateossian
09.04.18
✎
18:24
|
Разложи в структуру со структурами из примитивов.
|
|||
23
Cyberhawk
10.04.18
✎
08:31
|
(17) А, "ссылки" на объекты в памяти что ли? Такие "высокие" разговоры в кругу 1Сников не приживаются ) На самом деле хз что у него там в этой структуре, смотреть надо. Может и без мутабельных обойтись можно.
|
|||
24
Cyberhawk
10.04.18
✎
08:32
|
Зачем результат запроса помещать, когда можно текст запроса и его параметры передать и уже выполнить где надо?
|
|||
25
Cyberhawk
10.04.18
✎
08:37
|
Модуль формы или модуль объекта открываемого документа изменять нельзя, видимо?
|
|||
26
Cyberhawk
10.04.18
✎
08:40
|
Ну тогда можно извратиться через ПолучитьФорму на клиенте, затем получение объекта этой формы на клиенте как ДФС, передача этого объекта на сервер, там ДФС преобразуешь в ДокументОбъект, заполняешь его ТЧ, потом обратно ЗначениевДанныеФормы, возвращаешь на клиент ДФС, затем КопироватьДанныеФормы на клиенте в объект полученной ранее формы. Затем открываешь форму. Профит.
|
|||
27
Evgenchik
10.04.18
✎
08:48
|
На клиенте не нужно получать из хранилища.
Ушел на сервер, собрал все данные, положил в хранилище, получил адрес хранилища. Адрес передал на клиент. Адрес передал в обработку заполнения. В обработке заполнения на сервере уже получаешь из хранилища и далее заполняешь. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |