|
Передать значение в другую процедуру без использования параметров | ☑ | ||
---|---|---|---|---|
0
LeoKeyn
05.03.18
✎
12:33
|
Здравствуйте, Всем! Помогите, пожалуйста, есть ли способ передать
значение(какое-либо, в моем случае ссылку) в другую процедуру без параметров. Мой способ не сработал, но для примера: Функция ЗапускОбработчикаОжидания(ДокументСсылка) Экспорт СтрокаGUID = "a763cfbb-f94f-4c67-8e13-0e96a3a7f353"; НовыйGUID = Новый УникальныйИдентификатор(СтрокаGUID); Адрес = ПоместитьВоВременноеХранилище("212121115", НовыйGUID); ПодключитьОбработчикОжидания("ВыполнениеОбработчикаОжидания", 5, Истина); КонецФункции &НаКлиенте Процедура ВыполнениеОбработчикаОжидания() Экспорт СтрокаGUID = "e1cib/tempstorage/fe5a376e-4e52-41b0-a3d5-5637380d3f5a"; Ссылка = ПолучитьИзВременногоХранилища(СтрокаGUID); //СистемныеФункцииСервер.СменаСтатуса(Ссылка); КонецПроцедуры |
|||
1
LeoKeyn
05.03.18
✎
12:35
|
(0) На выходе получаю неопределено, но это не удивительно, учитывая, что адрес меняется при каждом запуске. Можно ли это сделать как то еще?
|
|||
2
Torquader
05.03.18
✎
12:35
|
Не очень понятно, какая связь между этими функциями.
Вы запихиваете GUID, а ищете строку GUID, причём совершенно в другом формате. |
|||
3
Torquader
05.03.18
✎
12:36
|
Обработчик ожидания работает на клиенте - почему бы - для него не использовать реквизит - получил значение - посмотрел и уже с ним пошёл на сервер за статусом.
|
|||
4
LeoKeyn
05.03.18
✎
12:38
|
(3) Действие происходит в общем глобальном модуле, поэтому то и нет реквизита. Мне и нужно передать ссылку на документ
|
|||
5
Lexey_
05.03.18
✎
12:41
|
(4) используй глобальную переменную
|
|||
6
Torquader
05.03.18
✎
12:41
|
Или параметр сеанса.
|
|||
7
LeoKeyn
05.03.18
✎
12:43
|
(5) А можно пример?)
|
|||
8
LeoKeyn
05.03.18
✎
12:43
|
(5) Они вроде как в общих модулях не доступны)
|
|||
9
LeoKeyn
05.03.18
✎
12:44
|
(6) А это как то единственный экземляр, тоже не подходит наверное)
|
|||
10
Torquader
05.03.18
✎
12:45
|
(8) Обычно, для этого есть функция глЗначениеПеременной, чтобы из любого места получить значение.
|
|||
11
LeoKeyn
05.03.18
✎
12:45
|
(6) или я не до конца понимаю как этим пользоваться
|
|||
12
Torquader
05.03.18
✎
12:45
|
(11) Создаёшь свой параметр сеанса, он будет доступен и на клиенте и на сервере.
|
|||
13
Cyberhawk
05.03.18
✎
12:46
|
"нужно передать ссылку на документ" // Откуда и куда? Ни о чем информация
|
|||
14
Serg_1960
05.03.18
✎
12:49
|
(11) Угу, не понимаешь. Разные адреса подставляешь.
PS: Ты только не говори до сотого поста, что хочешь это использоваться в различных сеансах, да и пользователи - тоже различные. Сохраняй интригу! |
|||
15
LeoKeyn
05.03.18
✎
12:50
|
(13) ИЗ
Функция ЗапускОбработчикаОжидания(ДокументСсылка) Экспорт В Процедура ВыполнениеОбработчикаОжидания() Экспорт |
|||
16
LeoKeyn
05.03.18
✎
12:50
|
(14) Нет, Право на это у одного пользователя, просто запусков этой процедуры может быть и будет не одно)
|
|||
17
LeoKeyn
05.03.18
✎
12:51
|
(16) не одно одновременно)
|
|||
18
Тихий омут
05.03.18
✎
12:52
|
(12) на толстом клиенте, на тонком не видно
|
|||
19
Lexey_
05.03.18
✎
12:52
|
(15) почему не делать всё в одной процедуре?
|
|||
20
LeoKeyn
05.03.18
✎
12:53
|
Вообще задача стоит в том, чтобы сменить статус через некоторое время после выполнения некоторого действия
|
|||
21
LeoKeyn
05.03.18
✎
12:55
|
И лучше ничего кроме обработчика ожидания я не придумал, но тут засада с передачей параметров
|
|||
22
Lexey_
05.03.18
✎
12:56
|
(21) пиши в базу, обработчиком ожидания запускай фоновое задание
|
|||
23
LeoKeyn
05.03.18
✎
12:57
|
(22) А вот с этим у меня проблемки, в корень не понимаю, как работает фоновые задания)))
|
|||
24
Lexey_
05.03.18
✎
12:59
|
(23) асинхронно, на сервере
|
|||
25
Torquader
05.03.18
✎
13:13
|
(23) Фоновое задание работает на сервере в отдельной области памяти и ничем, кроме базы данных, с клиентскими сеансами не связано.
Соответственно, если мы хотим с клиента узнать что-то о фоновом задании, то мы должны обратиться к серверу, чтобы получить информацию из базы данных. |
|||
26
Torquader
05.03.18
✎
13:14
|
Если файловый вариант, то фоновое задание выполняется в отдельном сеансе.
|
|||
27
LeoKeyn
05.03.18
✎
13:17
|
(26) серверный
|
|||
28
LeoKeyn
05.03.18
✎
13:18
|
(25) А можно ссылочку на какой нибудь пример с использованием, найти не могу
|
|||
29
catena
05.03.18
✎
13:21
|
(20)>>Вообще задача стоит в том, чтобы сменить статус через некоторое время после выполнения некоторого действия
А что будет, если за это "некоторое время" пользователь произведет "некоторое действие" с другим документом? |
|||
30
LeoKeyn
05.03.18
✎
13:26
|
(29) Тот документ так ж должен сесть на таймер и сменить статус через скажем час
|
|||
31
Torquader
05.03.18
✎
13:26
|
(28) Я вот не очень понимаю:
Сменить статус документа - если статус документа в базе отражается, то мы просто пишем в базу (статус обычно в регистре сведений) - просто, клиенты, если их статус интересует, периодически читают этот регистр. Если статус в базе не хранится, то вообще зачем он нужен ? Тогда, опять же - пишем в регистр изменение, а клиент, которому оно нужно, читает и удаляет запись, чтобы в регистре ничего не было. |
|||
32
LeoKeyn
05.03.18
✎
13:27
|
(29) если подробнее после того как статус стал равер СовершилПосадку, через час у этого документа должен смениться статус на РейсЗавершен
|
|||
33
Torquader
05.03.18
✎
13:27
|
(30) Вообще - это называется "бизнес процесс" - мы ждём час, если наши черепахи не доползли, то им нужен втык - запускается дочерний бизнес-процесс.
|
|||
34
Torquader
05.03.18
✎
13:28
|
(32) Вот я и говорю, бизнес-процесс "полёт" с переходом из одного состояния в другое - перевод сервисом.
|
|||
35
FIXXXL
05.03.18
✎
13:28
|
(28) (32) складируй данные для обработки в очередь, используй РегистрСведений
|
|||
36
LeoKeyn
05.03.18
✎
13:30
|
(31) (35) А вот это кажется понимаю. Создать регистр и класть туда данные, которые нужно переделать через час? И как? проверять их каждые минуту?
|
|||
37
LeoKeyn
05.03.18
✎
13:31
|
(35) Или фоновое задание которое будет висеть вечно и проверять?
|
|||
38
тарам пам пам
05.03.18
✎
13:37
|
а не проще сделать периодический регистр сведений со статусом и писать туда статус сразу с нужным временем?
|
|||
39
тарам пам пам
05.03.18
✎
13:37
|
и не нужно тогда никаких регл. заданий и прочих извращений
|
|||
40
LeoKeyn
05.03.18
✎
13:42
|
(38) Суть в том, что система должна поменять статус через час. А не пользователь
|
|||
41
тарам пам пам
05.03.18
✎
13:46
|
(40) ну и пиши в этот регистр данные при проведении документа "Рейс" или что у тебя там фиксирует вылет
|
|||
42
LeoKeyn
05.03.18
✎
13:56
|
(41) Ну а как мне поменять статус этого рейса после часа как он получил статус СовершилПосадку?)
|
|||
43
LeoKeyn
05.03.18
✎
13:57
|
(41) Через час после СОвершилПосадку он должен стать РейсЗавершен автоматом и провестись)
|
|||
44
Mankubus
05.03.18
✎
15:26
|
(43) Сделай статус расчётным значением там где он отображается
|
|||
45
FIXXXL
05.03.18
✎
16:13
|
(42)(43) вынеси Статус полностью в периодический РС
при записи СОвершилПосадку пиши сразу запись "в будущее" с РейсЗавершен срез не забудь только на дату всегда брать :) |
|||
46
dezss
05.03.18
✎
16:42
|
(45) +100500)
|
|||
47
Мимохожий Однако
05.03.18
✎
16:56
|
А если через 20 минут взлетит? ))
|
|||
48
H A D G E H O G s
05.03.18
✎
17:03
|
Вообще то фоновое задание связано с основным.
|
|||
49
catena
06.03.18
✎
05:10
|
(43)Делаешь сразу две записи в регистре:
ТекущаяДата() "Приземлился" ТекущаяДата()+60*60 "Завершен" Все, никаких обработчиков и фоновых не нужно. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |