Имя: Пароль:
1C
1С v8
Реквизит формы 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) Он ведущий секции "Психология и отношения", собирает себе материал для исследований: необоснованными резкими высказываниями пытается спровоцировать человека на конфликт  и анализирует его последующую реакцию. Он во всех ветках так делает.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn