|
УФ: Переменные &НаСервере | ☑ | ||
---|---|---|---|---|
0
Полотенчик
14.01.13
✎
13:03
|
Ситуация:
В обычных формах было описание переменных, например, в модуле формы, из которых потом читается/пишется из разных процедур и функций. Так использовалось, допустим, чтобы хранить в описанной переменной Запрос сам запрос. В одной процедуре запрос создавался, в нем создавались какие-то временные таблицы, потом пользователь что-то мог выбрать/сделать, в других процедурах читалась эта переменная Запрос (т.к. в ней уже есть нужные временные таблицы), создавались, например новые таблицы, и т.д.: чтобы в каждой процедуре не выбирать заново данные использовалась единая переменная с запросом. Как что-то подобное реализовать в УФ если переменная, объявленная &НаСервере уничтожается при завершении серверного вызова? |
|||
1
Wobland
14.01.13
✎
13:09
|
за собой таскать? реквизит завести?
|
|||
2
SUA
14.01.13
✎
13:13
|
не перескакивать на клиент лишний раз?
|
|||
3
Полотенчик
14.01.13
✎
13:16
|
(2) В том и соль что клиент во время работы с формой может что-то изменить, после чего надо что-то пересчитать и чтобы каждый раз не выбирать данные из БД они выбирались один раз и хранились во временных таблицах.
Например, есть какая-то пошаговая обработка данных... |
|||
4
LAAry
14.01.13
✎
13:17
|
Никак. На клиенте не может быть запроса. Из одной серверной процедуры вызывать другую.
Правила хорошего тона говорят, что количества обращений на сервер должно быть минимальным. Значит все что нужно на сервере лучше делать за 1 раз. |
|||
5
LAAry
14.01.13
✎
13:19
|
(3) если у тебя к-с вариант, то данные и так закешируются. повторный запрос выполнится в разы быстрее.
|
|||
6
Полотенчик
14.01.13
✎
13:21
|
(5) на кэш надейся, а сам не плошай - поэтому используется один раз выбор данных из БД, а далее уже временные таблицы
|
|||
7
SUA
14.01.13
✎
13:23
|
(3) еще вариант:
- вытащить все из ВТ и утянуть на клиента - (вытащить все из ВТ - наверное все же нужно) использовать временное хранилище между вызовами |
|||
8
Defender aka LINN
14.01.13
✎
13:24
|
Временное хранилище кто мешает использовать?
|
|||
9
lefthander
14.01.13
✎
13:33
|
ДанныеФормыВЗначение - делаешь все что нужно на сервере и ЗначениеВданныеФормы.
|
|||
10
LAAry
14.01.13
✎
13:34
|
(9)И что за данные формы, которые хранят запрос или его результат?
|
|||
11
Полотенчик
14.01.13
✎
13:35
|
(8) а если там десяток временных таблиц с десятком тысяч строк в каждой? каждый раз выгружать все таблицы, сохранять во временном, читать из временного, загружать таблицы в запрос?
оптимальнее бы сохранять/передавать Запрос или МенеджерВременныхТаблиц |
|||
12
lefthander
14.01.13
✎
13:36
|
Правила хорошего тона говорят что если не нужны данные формы для запроса то &НаСервереБезКонтента, если в запрос нужны данные из формы то &НаСервере
|
|||
13
olegves
14.01.13
✎
13:36
|
(0) реквизит формы пользуй - доступен и на клиенте и на сервере
|
|||
14
LAAry
14.01.13
✎
13:36
|
Во временном можно хранить не обязательно результат.
|
|||
15
lefthander
14.01.13
✎
13:36
|
(10) Странный вопрос, может начнете с того что такое УФ?
|
|||
16
LAAry
14.01.13
✎
13:43
|
(15) У Вас пожалуй поостерегусь спрашивать.
|
|||
17
lefthander
14.01.13
✎
13:54
|
(16) Согласен, но можете в синтакс помошник заглянуть при случае.
в (3) автор топика спрашивает, как быть если юзер данные изменил во время работы с формой? Для того что бы исключить потерю измененных, но не записанных данных и используют выше названные методы. |
|||
18
lefthander
14.01.13
✎
13:56
|
Вопрос в другом, есть ли смысл на сервере хранить результаты запроса в переменной, не проще ли снова выполнить запрос, когда понадобятся данные. Ведь их может изменить и другой юзер.
|
|||
19
Defender aka LINN
14.01.13
✎
13:59
|
(11) А кто сказал, что будет легко?
|
|||
20
Полотенчик
14.01.13
✎
14:03
|
(20) ужас. есть же МенеджерВременныхТаблиц. почему нельзя где-то его сохранить чтобы использовать в других процедурах? это же так очевидно!
|
|||
21
Defender aka LINN
14.01.13
✎
14:07
|
(20) Таков путь 1С
|
|||
22
lefthander
14.01.13
✎
14:08
|
(3) Может это спасет - переменная в модуле управляемого приложения, экспортная? Будет доступна из любого модуля.
Перем (Var) Синтаксис: Перем <Имя переменной 1> [Экспорт] [, <Имя переменной 2> [Экспорт], …] Англоязычный синтаксис: Var <Имя переменной 1> [Export] [, <Имя переменной 2> [Export], …] Параметры: <Имя переменной 1>[, <Имя переменной 2>, …] Задается имя или имена объявляемых переменных. Экспорт Необязательное ключевое слово. Указывает, что данная переменная доступна при обращении к контексту этого модуля из других модулей. Не имеет смысла при объявлении переменных отдельных процедур или функций. Описание: Позволяет в явном виде объявить переменную. |
|||
23
Reset
14.01.13
✎
14:18
|
(22) Она же не будет видна на сервере?
|
|||
24
lefthander
14.01.13
✎
14:20
|
(20) Почему нельзя? Можно.
Вот из того же Синтакс Помошника Предназначен для хранения временных таблиц. При уничтожении или закрытии объекта временные таблицы, находящиеся в нем, удаляются. Если временная таблица создается, используется и уничтожается в рамках одного пакета запросов, менеджер временных таблиц создавать не нужно. Доступность: Сервер, толстый клиент, внешнее соединение. Пример: МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.Выполнить(); Запрос.Текст="ВЫБРАТЬ * из ВременнаяОсновная"; ТзПередано=Запрос.Выполнить().Выгрузить(); |
|||
25
Defender aka LINN
14.01.13
✎
14:21
|
(24) Между серверными вызовами его сохрани, продемонстрируй мастер-класс.
|
|||
26
lefthander
14.01.13
✎
14:22
|
(23) Это почему же?
ОбъектМетаданныхКонфигурация (ConfigurationMetadataObject) МодульУправляемогоПриложения (ManagedApplicationModule) Использование: Только чтение. Описание: Тип: Неопределено. Доступность: Сервер, толстый клиент, внешнее соединение. |
|||
27
Reset
14.01.13
✎
14:23
|
Еще есть серверные модули с повторным использованием значений, возможно можно использовать
|
|||
28
Полотенчик
14.01.13
✎
14:25
|
(22) для каждой задачи где надо ради оптимизации выбирать данные из БД 1 раз, а не 100 создавать переменную в модуле управляемого приложения? О_о
|
|||
29
lefthander
14.01.13
✎
14:28
|
(25) Мне это не надо, я не сторонник сохранять данные запроса между разными вызовами. Так как следить за актуальностью данных в переменной нет смысла, особенно если в переменную могут попасть десятки тысяч строк. Проще заново сделать запрос. Вот оптимизировать запрос, что бы туда не попадали ненужные данные, это более интересно.
|
|||
30
MSII
14.01.13
✎
14:28
|
(28) Если данные нужно извлечь один раз, то хранить их можно и нужно в реквизитах формы, в параметрах сеанса либо используя упомянутое в (27). Выбор конкретного варианта - в зависимости от задачи.
|
|||
31
Reset
14.01.13
✎
14:29
|
(26) Насколько я понимаю, процитированное не имеет отношения к видимости переменных
|
|||
32
lefthander
14.01.13
✎
14:29
|
(28) А что вы так боитесь переменных? Если локальная переменная, то время ее жизни не превышает время жизни локального контекста.
|
|||
33
LAAry
14.01.13
✎
14:29
|
Такое чувство, что леворукий тролит в этом топике.
|
|||
34
Defender aka LINN
14.01.13
✎
14:30
|
(29) Ты же сказал, что "Можно" и "Легко". так что пруф или GTFO
|
|||
35
lefthander
14.01.13
✎
14:33
|
(31) Это было к вопросу доступности переменных на сервере.
(34) GTFO, и можно, и легко ... удачи. |
|||
36
Reset
14.01.13
✎
14:34
|
(35) Именно к вопросу доступности переменных (а также процедур и функциий) процитированное не имеет отношения
|
|||
37
LAAry
14.01.13
✎
14:36
|
(27) Это, кстати, мысль. Нужно погонять повторное использование - что можно, а что нельзя вернуть. Спасибо.
|
|||
38
lefthander
14.01.13
✎
14:58
|
(36) Экспортная переменная объявленная в этом модуле будет видна для серверных вызовов.
|
|||
39
Defender aka LINN
14.01.13
✎
14:58
|
(38) Ну закинь туда Менеджер, вперед.
|
|||
40
Reset
14.01.13
✎
14:59
|
(38) Не будет.
|
|||
41
lefthander
14.01.13
✎
15:03
|
(40) Будет, но доказывать не буду. :)
|
|||
42
Reset
14.01.13
✎
15:07
|
(40) На твоей стороне а) то я почти полный ноль в УП и знания эпизодически/теоретические, то есть могу ошибаться.
б)Также на твоей стороне интересная цитата из справки: "В модуле управляемого приложения возможно объявление переменных, а также объявление и описание процедур и функций, которые будут доступны в любом модуле конфигурации (кроме модуля внешнего соединения)." На моей стороне - что переменная не видна. И все тут :) |
|||
43
Reset
14.01.13
✎
15:11
|
(41) Почему не будешь? Сделай (39).
Объяви такую пременную и занесив нее, к примеру, объект который процитировал в (26). |
|||
44
Defender aka LINN
14.01.13
✎
15:15
|
(41) Идешь по стопам Петрика?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |