|
Глобальные переменные на УФ | ☑ | ||
---|---|---|---|---|
0
ArturDoo
08.06.22
✎
18:24
|
Есть форма, создал в ней глобальную переменную. В процедуре задал ей значение, но в других процедурах она пустая. В чем здесь ошибка?
Перем Данные; &НаСервере Процедура ИзменитьИсп (Значение) Попытка Данные = Значение; Исключение КонецПопытки; КонецПроцедуры |
|||
1
Галахад
гуру
08.06.22
✎
18:24
|
По умолчанию на клиенте.
|
|||
2
DGorgoN
08.06.22
✎
18:25
|
Сервер и клиент вестимо.
|
|||
3
butterbean
08.06.22
✎
18:25
|
это все переменные бессмысленны на сервере, нужно делать через реквизиты формы или передавать параметрами процедур
|
|||
4
ArturDoo
08.06.22
✎
18:25
|
(1) Можно пользоваться ГП на сервере?
|
|||
5
DGorgoN
08.06.22
✎
18:26
|
(4) Я вообще против ГП
|
|||
6
ArturDoo
08.06.22
✎
18:26
|
(3) А можно как-то передать данные на сервере без реквизитов формы в не взаимосвязанных процедурах?
|
|||
7
Выпрь
08.06.22
✎
18:28
|
На сервере переменные будут жить до конца вызова. Юзай временное ранилище
|
|||
8
Выпрь
08.06.22
✎
18:28
|
(1) таки по умолчанию на сервере
|
|||
9
ArturDoo
08.06.22
✎
18:29
|
Так как передать адрес в не взаимосвязанных процедурах?
|
|||
10
butterbean
08.06.22
✎
18:31
|
(9) чем не устраивает реквизит формы или параметр процедуры (если без контекста)?
|
|||
11
Выпрь
08.06.22
✎
18:31
|
Адрес через реквизит передают обычно
|
|||
12
ArturDoo
08.06.22
✎
18:32
|
Без реквизита. Да и данные текстовые все равно, как их передавать, через хранилище или без него
|
|||
13
Выпрь
08.06.22
✎
18:33
|
(12) юзай метод г1с через справочник
|
|||
14
Выпрь
08.06.22
✎
18:33
|
Можно еще через параметр сеанса
|
|||
15
butterbean
08.06.22
✎
18:33
|
(12) сделай параметр сеанса
|
|||
16
ArturDoo
08.06.22
✎
18:34
|
(13) можно подробней?
|
|||
17
RomanYS
08.06.22
✎
18:40
|
(4) только если понимаешь, в каждом сервером вызове контекст формы создаётся заново
|
|||
18
ДедМорроз
08.06.22
✎
22:59
|
Есть еще вариант через функции повторного вызова,когда функция возвращает структуру,а потом в эту структуру добавляется все,что хочется сохранить между вызовами.
|
|||
19
Бабрак Кармаль
08.06.22
✎
23:17
|
(18) > Есть еще вариант
А потом наступает одно из https://its.1c.ru/db/v8321doc#bookmark:dev:TI000000181 "Сохраненные значения будут удалены: - на сервере, в толстом клиенте, во внешнем соединении, в тонком клиенте и в веб-клиенте с обычной скоростью соединения - через 20 минут после вычисления сохраняемого значения или через 6 минут после последнего использования; - в тонком клиенте и веб-клиенте с низкой скоростью соединения - через 20 минут после вычисления сохраняемого значения; - при нехватке оперативной памяти в рабочем процессе сервера; - при перезапуске рабочего процесса; - при переключении клиента на другой рабочий процесс." И очередного ливингстара, доверившегося "профи" с мисты увольняют нахрен, потому что он ничего не может понять. |
|||
20
palsergeich
09.06.22
✎
00:55
|
(1) По умолчанию - на сервере.
Но до конца текущего вызова) |
|||
21
palsergeich
09.06.22
✎
00:57
|
(19) - при переключении клиента на другой рабочий процесс.
- при нехватке оперативной памяти в рабочем процессе сервера; от эти штуки я ловил. когда вопт исп жило меньше минуты, и это была поццтава) С тех пор я к документацииотношусь гораздо трепетнее и читаю ее внимательнее) |
|||
22
palsergeich
09.06.22
✎
00:58
|
(0) Если нужна глобальная серверная переменная - используй параметры сеанса.
1с так и делает кста) |
|||
23
palsergeich
09.06.22
✎
00:58
|
(22) никакой магии и ограниченного времени жизни
|
|||
24
Сергиус
09.06.22
✎
01:27
|
(0)Сделай реквизит формы и в нем храни.
|
|||
25
MyNick
09.06.22
✎
06:18
|
(24) он боится. Этож целый реквизит надо создавать, а ему всего лишь переменная нужна (сарказм).
Всегда удивляли люди, упорно изобретающие квадратные колеса при наличии круглых в свободном доступе. Автор, реквизиты формы - это самое верное и надёжное решение для твоей Перем. Кроме того, механизм реквизитов формы и создан именно для того, чтобы решить твою "проблему". И используются повсеместно и независимо от того, что ты свою "проблему" считаешь уникальной, придумывая какой бы костыль, да покривее вкорячить в свою никчемную поделку. |
|||
26
Мультук
гуру
09.06.22
✎
07:04
|
Вот такой просто пример.
Желающие могут написать, что скажет "сообщить" при двух нажатиях на кнопку "Тест" &НаСервере Перем Данные; &НаСервере Процедура ТестНаСервере() Сообщить(Данные); Данные = Данные + 1; КонецПроцедуры &НаКлиенте Процедура Тест(Команда) ТестНаСервере(); КонецПроцедуры Данные = 123; |
|||
27
DimVad
09.06.22
✎
07:10
|
(25) Про реквизит формы - вещь общеизвестная. Ещё у Хрусталёвой в её книжке про управляемые формы всё описано.
Однако люди продолжают спрашивать ибо в реальной работе "возникают нюансы". Что-то типа "вот отчёт, вызывается форма, а из неё - ещё форма, а из неё - серверный код, он получает данные которые нужно передать в дальние долбеня и вернуть их потом в зад (в вызывающую всю хрень процедуру)". Вот тут возникаю НЕУДОБСТВА к которым программист 1С, который много лет был в ОФ просто не привык. Он привык заводить переменные уровня модуля этого отчёта с ключом "Экспорт" - и всё. Хоть структура там, хоть ТЗ, хоть соответствие... И ничто никуда не пропадает между разными вызовами. Под УФ же он не о задаче думает - а с бубнами танцует. Вот и рождаются идеи в стиле "а заведу я справочник/РС/временный файл и буду писать туда мою ценную хрень". |
|||
28
Выпрь
09.06.22
✎
07:10
|
(26) а как сохранить значение между нажатиями?
|
|||
29
DimVad
09.06.22
✎
07:13
|
+(27) Знаю я чела - он имел специальный каталог на сервере "для обмена". Там он туда файлы сбрасывал.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |