|
УФ. 8.3. Как на форме в контексте сервера хранить значение со сложными типами? | ☑ | ||
---|---|---|---|---|
0
SeiOkami
04.09.14
✎
13:47
|
Вопрос, возможно, туповат, но всё же. Имеется отчет для тонкого клиента. Нужно иметь возможность в контексте серверных процедур хранить структуру, в которой несколько ТЗ, схемы компоновки и прочее. Как это оптимальнее делать?
Общая переменная очищается при каждом выходе из сервера на клиент, поэтому не подходит. Реквизит не подходит, потому что, насколько я понял, ему нельзя присвоить значение типа, которого нет на клиенте, даже если реквизит не выводится на форму для отображения. Временное хранилище. Не вижу смысла постоянно поднимать хранилище, чтобы обратиться к моим данным. Как сделать такую простую вещь правильнее? |
|||
1
Cube
04.09.14
✎
13:50
|
(0) Храни во временном файле или в РС СохраненныеНастройки
|
|||
2
Cube
04.09.14
✎
13:51
|
+(1) Или вообще в настройках пользователя, если другим пользователям доступ не нужен
|
|||
3
SeiOkami
04.09.14
✎
13:52
|
(1),(2), это стеб такой? легче уже во временном хранилище)
|
|||
4
MrStomak
04.09.14
✎
13:53
|
(0) ЗначениеВСтрокуВнутр?
|
|||
5
Cube
04.09.14
✎
13:54
|
(3) Это информация))
|
|||
6
SeiOkami
04.09.14
✎
13:55
|
(4), думал об этом, но это же похуже временного хранилища будет. Постоянно преобразовывать из значения в строку и обратно...
Неужели в УФ нельзя хранить такие значения без всяких махинаций? |
|||
7
SeiOkami
04.09.14
✎
13:56
|
Нет альтернативы переменной? Чтобы не очищалась постоянно
|
|||
8
Maxus43
04.09.14
✎
13:57
|
Реквизит формы - альтернатива, другой нет
|
|||
9
Maxus43
04.09.14
✎
13:57
|
а, ну параметр Сеанса можно ещё заюзать)
|
|||
10
Chai Nic
04.09.14
✎
13:57
|
(8) По идее это же вызовет перекачку данных клиент-сервер при каждом серверном вызове.. что вряд ли полезно..
|
|||
11
SeiOkami
04.09.14
✎
13:58
|
(8), хорошо, можно тогда заставить реквизит хранить типы, которых нет на клиенте? Мне ведь не нужно с ними что-то на клиенте делать. Главное, чтобы на сервере были
|
|||
12
SeiOkami
04.09.14
✎
13:58
|
(10), проблема в том, что в реквизит нельзя запихнуть структуру с ТЗшками
|
|||
13
Chai Nic
04.09.14
✎
13:59
|
(12) Это не проблема. ЗначениеВСтрокуВнутр.
|
|||
14
MrStomak
04.09.14
✎
13:59
|
(11) ТЗ нет на клиенте, но её можно хранить в реквизите формы.
|
|||
15
SeiOkami
04.09.14
✎
13:59
|
(9), ну можно тогда уже и регистр специальный сделать. Гулять так гулять)
|
|||
16
Chai Nic
04.09.14
✎
13:59
|
Проблема как раз в том, что использование реквизитов формы вынуждает гонять данные между сервером и клиентом почем зря..
|
|||
17
SeiOkami
04.09.14
✎
14:00
|
(14), мне нужно хранить структуру, которая содержит помимо всего прочего ТЗ
|
|||
18
Maxus43
04.09.14
✎
14:00
|
Правильнее логику будет пересмотреть и уйти от необходимости хранить такого рода данные в памяти во время работы с объектом, имхо
|
|||
19
SeiOkami
04.09.14
✎
14:00
|
(13), да, но это тоже не выход - постоянно преобразовывать
|
|||
20
MrStomak
04.09.14
✎
14:00
|
(17) Можно использовать параметры формы, там может быть произвольный тип.
|
|||
21
Chai Nic
04.09.14
✎
14:01
|
(19) Преобразование дешевле обходится, чем перекачка
|
|||
22
Локи-13
04.09.14
✎
14:01
|
Временное хранилище.
"Не вижу смысла постоянно поднимать хранилище, чтобы обратиться к моим данным." - что значит поднимать? можно использовать общий модуль с повторным использованием на время сеанса |
|||
23
SeiOkami
04.09.14
✎
14:01
|
(20), но тогда данные очистятся после создания формы. Если сделаю ключевым, то результат будет как с реквизитами - будет ругаться
|
|||
24
MrStomak
04.09.14
✎
14:02
|
(22) А если структура меняется?:)
|
|||
25
SeiOkami
04.09.14
✎
14:03
|
(22), вот! это надо бы обмозговать...
|
|||
26
SeiOkami
04.09.14
✎
14:03
|
(24), да, меняется )
|
|||
27
SeiOkami
04.09.14
✎
14:04
|
(21), мне бы как раз без перекачки. Просто чтобы только на сервере и было
|
|||
28
lxndr
04.09.14
✎
14:04
|
гугли ПоместитьВоВременноеХранилище
|
|||
29
MrStomak
04.09.14
✎
14:04
|
(26) Сделай не структуру, а ТЗ. В ТЗ могут содержаться другие ТЗ в реквизитах формы.
|
|||
30
Локи-13
04.09.14
✎
14:05
|
(24) обновлять. делов то
|
|||
31
MrStomak
04.09.14
✎
14:05
|
(30) Так обновляется сразу весь кеш.
|
|||
32
SeiOkami
04.09.14
✎
14:06
|
(29), нет это архитектурно не верно. У меня именно структура. Плюс, колонки придется все прописывать на форме, а они могут измениться
|
|||
33
MrStomak
04.09.14
✎
14:10
|
(32) Ну и программно прописать колонки как бы не проблема. Блин, короче есть 100500 способов, тебе все не нравятся.
Используй временное хранилище, это лучший вариант. |
|||
34
famnam
04.09.14
✎
14:11
|
у меня сейчас подобная задачка :) создал структуру, в которой несколько компоновщиков, таблица и прочие доп.данные. держу все это хозяйство во временном хранилище
|
|||
35
Chai Nic
04.09.14
✎
14:14
|
(34) Если бы еще там можно было хранить всё что угодно. Так фигвам.. во временное хранилище можно засунуть лишь то, что сериализуется..
|
|||
36
SeiOkami
04.09.14
✎
14:14
|
(33), ну согласись, они ведь реально не удобны)
Почему переменные очищаются? Ну за что такая хрень ? =( |
|||
37
SeiOkami
04.09.14
✎
14:15
|
(35), кстати, да. Что вообще странно. Получается в УФ нельзя хранить, например, настроеный запрос с МВТ
|
|||
38
olegves
04.09.14
✎
14:15
|
(0) Реквизит формы произвольного типа - сворачивай свои данные в структуру и туда прячь
|
|||
39
SeiOkami
04.09.14
✎
14:17
|
(38), я же написал уже, что нельзя - ругается
|
|||
40
Chai Nic
04.09.14
✎
14:18
|
(37) Угу.. вот что мешало фирме 1с сделать "глобальный контекст сеанса", доступный из всех серверных вызовов одного сеанса? Насколько бы это упростило всё..
|
|||
41
SeiOkami
04.09.14
✎
14:19
|
(40), пусть бы хотя бы переменные не очищали
|
|||
42
Локи-13
04.09.14
✎
14:20
|
1с сейчас уходит от несериализуемых объектов
учитесь программировать правильно. |
|||
43
Chai Nic
04.09.14
✎
14:22
|
(41) Это то же самое, но другими словами. Контекст сервера каждый раз новый, и переменные соответственно каждый раз новые.. а глобального контекста в 8.2 нет.
(42) На сериализацию уходит время и процессорные ресурсы. Там, где раньше можно было обойтись передачей адреса из нескольких байт, теперь приходится передавать сериализованный буфер.. |
|||
44
SeiOkami
04.09.14
✎
14:26
|
(42), и как в данной ситуации будет правильно?
|
|||
45
MrStomak
04.09.14
✎
14:33
|
(44) Использовать временное хранилище. В которое, кстати, начиная с 8.3 тоже только сериализуемые данные нужно помещать. Потому что содержание хранилища может между серверами перекидываться при падении.
|
|||
46
SeiOkami
04.09.14
✎
14:34
|
(45), жесть... в погоню за "тонким" клиентом сделали всё намного "толще"
|
|||
47
Chai Nic
04.09.14
✎
14:37
|
(46) В угоду "мультисерверности" пожертвовали глобальным контекстом.. "не осилили" прозрачную передачу контекста между серверами..
|
|||
48
Зойч
04.09.14
✎
15:02
|
Но вот почему вдруг ТЗ оказалась несереализуема это большой вопрос
|
|||
49
SeiOkami
04.09.14
✎
15:07
|
(48), эту тайну знает только Он
|
|||
50
MrStomak
04.09.14
✎
15:10
|
(48) ТЗ сериализуется, просто она не поддерживается на клиенте:
Возможен обмен с сервером. Сериализуется. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/core}. Имя типа XDTO: ValueTable. |
|||
51
Зойч
04.09.14
✎
15:29
|
(50) не нужно словам придираться
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |