|
Реквизит формы VS. переменная | ☑ | ||
---|---|---|---|---|
0
NewBieOneS
08.04.14
✎
20:13
|
Здравствуйте!
Есть необходимость сохранять значение определенного реквизита справочника при открытии формы элемента и проверять его при закрытии этой формы. Что лучше использовать в качестве временного хранилища: переменную или реквизит формы? |
|||
1
vi0
08.04.14
✎
20:30
|
переменную
реквизит есть смысл использовать если юзаешь его на форме |
|||
2
Wobland
08.04.14
✎
20:35
|
(0) а как ты пришёл к такомурешению?
|
|||
3
Ksandr
08.04.14
✎
20:38
|
от задачи зависит.
В обычном приложении - переменную В управляемом - реквизит |
|||
4
Asmody
08.04.14
✎
20:39
|
(0) управляемая?
|
|||
5
Ненавижу 1С
гуру
08.04.14
✎
20:44
|
в управляемом вроде нет переменных на клиенте
|
|||
6
jsmith82
08.04.14
✎
20:45
|
>>сохранять значение определенного реквизита справочника при открытии формы
поменять мозг |
|||
7
Котокот
08.04.14
✎
20:46
|
(0) "Что лучше использовать в качестве временного хранилища:". Временное хранилище использовать не предлагать?
|
|||
8
Ненавижу 1С
гуру
08.04.14
✎
20:46
|
(6) что тебя смущает?
|
|||
9
Котокот
08.04.14
✎
20:46
|
(0) Проверять надо на сервере или на клиенте?
|
|||
10
KUBIK
08.04.14
✎
20:48
|
Записать в ЖР реквизит справочника ПриОткрытии() ?
|
|||
11
Котокот
08.04.14
✎
21:05
|
(10) Не надо, в реквизите формы оно будет лежать пока форма открыта, в ЖР - вечно.
|
|||
12
Котокот
08.04.14
✎
21:06
|
(0) Короч, если надо проверять на сервере факт изменения значения реквизита, то лучше всего это делать через
Если Объект.Ссылка.МойРеквизит <> Объект.МойРеквизит Тогда В Объект.Ссылка лежит записанное в базе значение, в Объект - текущее значение. Если надо проверять на клиенте - делай реквизит формы и не парься. |
|||
13
NewBieOneS
09.04.14
✎
08:16
|
Спасибо!
|
|||
14
NewBieOneS
09.04.14
✎
08:18
|
(6) P.S. Мне нравиться стиль подобных ответов: обидеть человека, но ответ на его, пусть глупый, вопрос не дать при этом. Типа "ну очень умный".
|
|||
15
Wobland
09.04.14
✎
08:25
|
(14) это он для того, чтобы ты себе задал вопрос "что я делаю не так?"
|
|||
16
Infsams654
09.04.14
✎
08:55
|
(5) переменные есть и на сервере и на клиенте. Только, на сервере значение переменной сохраняется только в одном вызове сервера (т.е. для передачи какого-то значения между методами в пределах одного вызова, чтоб не передавать через параметр), а на клиенте - постоянно лежит, пока форма существует.
|
|||
17
fisher
09.04.14
✎
10:50
|
(0) Если можно использовать переменную на клиенте, ессно надо её использовать. Реквизит формы - только если на сервер значения передавать надо. Но и тогда можно обойтись передачей переменной через параметры.
Меня, кстати, смущает, как в типовых сделано. Они весь клиентский кэш держат в одной структуре (это ладно) и постоянно гоняют его весь на сервер и обратно. А вот это уже ненормально, ИМХО. |
|||
18
NewBieOneS
09.04.14
✎
11:11
|
Существует справочник с сотрудниками. При создании нового элемента выполняется проверка на наличие уже созданного сотрудника с заданными ФИО. Если такой существует, то возникает диалоговое окно в режиме вопроса (да/нет): "Создать дубликат?".
Так вот, идея была следующая. Чтобы при редактировании каких-либо других реквизитов (помимо ФИО) существующего сотрудника не вызывать серверную процедуру проверки наличия, нужно зафиксировать факт изменения ФИО. Собственно, для этого и создавались временные объекты: переменная или ревизит формы. Если ФИО не изменялось - то просто пишем без всяких проверок (отсюда -1 серверный вызов). Если же ФИО изменялось - то задаем вопрос, и пишем только при утвердительном ответе (здесь серверный вызов для проверки в любом случае). Либо я что-то не понимаю в механизме платформы, либо я зря заморачиваюсь с лишним серверным вызовом. Отсюда и возник вопрос. |
|||
19
Wobland
09.04.14
✎
11:12
|
аллах запрещает сервер при необходимости вызвать?
|
|||
20
Рэйв
09.04.14
✎
11:14
|
(18)ПередЗаписью сравнивай данные объекта с данными ссылки и не изобретай веловипедов
|
|||
21
NewBieOneS
09.04.14
✎
11:19
|
(19) :-))) нет, но я хотел избавиться от лишнего вызова таким вот "механизмом"
(20) если сравнивать в событии "ПередЗаписьюНаСервере", то невозможно отобразить диалог вопроса. Поэтому приходиться это делать на клиенте. |
|||
22
Wobland
09.04.14
✎
11:29
|
(21) а если сравнивать в событии ПередЗаписью?
|
|||
23
Wobland
09.04.14
✎
11:29
|
+(22) точнее, уходить на сервер, сравнивать, а потом наклиентеспрашивать
|
|||
24
NewBieOneS
09.04.14
✎
11:31
|
(22) событие "ПередЗаписью" исполняется на клиенте. Как я получу данные ссылки? Я ведь не смогу выполнить на клиенте код:
Объект.ФИО = Объект.Ссылка.ФИО |
|||
25
NewBieOneS
09.04.14
✎
11:31
|
(23) да, так можно. Вся соль вопроса в том и состоит. Что дороже: вызвать лишний раз сервер или хранить в переменной/реквизите значение?
|
|||
26
Wobland
09.04.14
✎
11:33
|
зачем-то же придумали сервер. пускай работает. а если страшно, то можно и без контекста его вызывать
|
|||
27
NewBieOneS
09.04.14
✎
11:37
|
Wobland, Спасибо большое за интересную и полезную беседу. Буду юзать серверный вызов.
|
|||
28
Рэйв
09.04.14
✎
11:37
|
(25)Это такие микросекунды разности что не стоит и огород городить
|
|||
29
fisher
09.04.14
✎
11:39
|
(28) Не скажи. Серверный вызов через тонкие каналы - это вовсе не микросекунды.
|
|||
30
hhhh
09.04.14
✎
11:39
|
(27) но реально эта ситуация может возникнуть раз в 200 лет. Поэтому вам лучше забить на эту тупую задачу и заняться действительно нужными вопросами.
|
|||
31
fisher
09.04.14
✎
11:40
|
Ежели разработка идет с прицелом и на мобильные девайсы тоже, то за серверные вызовы стоит побороться.
|
|||
32
Wobland
09.04.14
✎
11:41
|
тут я за без контекста. совсем немного пойдёт
|
|||
33
Котокот
09.04.14
✎
14:07
|
(14) Он ведущий секции "Психология и отношения", собирает себе материал для исследований: необоснованными резкими высказываниями пытается спровоцировать человека на конфликт и анализирует его последующую реакцию. Он во всех ветках так делает.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |