Вход | Регистрация


1С:Предприятие ::

Метки: 

Передать значение в другую процедуру без использования параметров

Я
   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);
    //СистемныеФункцииСервер.СменаСтатуса(Ссылка);


КонецПроцедуры
 
 
   LeoKeyn
 
1 - 05.03.18 - 12:35
(0) На выходе получаю неопределено, но это не удивительно, учитывая, что адрес меняется при каждом запуске. Можно ли это сделать как то еще?
   Torquader
 
2 - 05.03.18 - 12:35
Не очень понятно, какая связь между этими функциями.
Вы запихиваете GUID, а ищете строку GUID, причём совершенно в другом формате.
   Torquader
 
3 - 05.03.18 - 12:36
Обработчик ожидания работает на клиенте - почему бы - для него не использовать реквизит - получил значение - посмотрел и уже с ним пошёл на сервер за статусом.
   LeoKeyn
 
4 - 05.03.18 - 12:38
(3) Действие происходит в общем глобальном модуле, поэтому то и нет реквизита. Мне и нужно передать ссылку на документ
   Lexey_
 
5 - 05.03.18 - 12:41
(4) используй глобальную переменную
   Torquader
 
6 - 05.03.18 - 12:41
Или параметр сеанса.
   LeoKeyn
 
7 - 05.03.18 - 12:43
(5) А можно пример?)
   LeoKeyn
 
8 - 05.03.18 - 12:43
(5) Они вроде как в общих модулях не доступны)
   LeoKeyn
 
9 - 05.03.18 - 12:44
(6) А это как то единственный экземляр, тоже не подходит наверное)
   Torquader
 
10 - 05.03.18 - 12:45
(8) Обычно, для этого есть функция глЗначениеПеременной, чтобы из любого места получить значение.
 
 Рекламное место пустует
   LeoKeyn
 
11 - 05.03.18 - 12:45
(6) или я не до конца понимаю как этим пользоваться
   Torquader
 
12 - 05.03.18 - 12:45
(11) Создаёшь свой параметр сеанса, он будет доступен и на клиенте и на сервере.
   Cyberhawk
 
13 - 05.03.18 - 12:46
"нужно передать ссылку на документ" // Откуда и куда? Ни о чем информация
   Serg_1960
 
14 - 05.03.18 - 12:49
(11) Угу, не понимаешь. Разные адреса подставляешь.

PS: Ты только не говори до сотого поста, что хочешь это использоваться в различных сеансах, да и пользователи - тоже различные. Сохраняй интригу!
   LeoKeyn
 
15 - 05.03.18 - 12:50
(13) ИЗ
Функция ЗапускОбработчикаОжидания(ДокументСсылка) Экспорт

В
Процедура ВыполнениеОбработчикаОжидания() Экспорт
   LeoKeyn
 
16 - 05.03.18 - 12:50
(14) Нет, Право на это у одного пользователя, просто запусков этой процедуры может быть и будет не одно)
   LeoKeyn
 
17 - 05.03.18 - 12:51
(16) не одно одновременно)
   Тихий омут
 
18 - 05.03.18 - 12:52
(12) на толстом клиенте, на тонком не видно
   Lexey_
 
19 - 05.03.18 - 12:52
(15) почему не делать всё в одной процедуре?
   LeoKeyn
 
20 - 05.03.18 - 12:53
Вообще задача стоит в том, чтобы сменить статус через некоторое время после выполнения некоторого действия
   LeoKeyn
 
21 - 05.03.18 - 12:55
И лучше ничего кроме обработчика ожидания я не придумал, но тут засада с передачей параметров
   Lexey_
 
22 - 05.03.18 - 12:56
(21) пиши в базу, обработчиком ожидания запускай фоновое задание
   LeoKeyn
 
23 - 05.03.18 - 12:57
(22) А вот с этим у меня проблемки, в корень не понимаю, как работает фоновые задания)))
   Lexey_
 
24 - 05.03.18 - 12:59
(23) асинхронно, на сервере
   Torquader
 
25 - 05.03.18 - 13:13
(23) Фоновое задание работает на сервере в отдельной области памяти и ничем, кроме базы данных, с клиентскими сеансами не связано.
Соответственно, если мы хотим с клиента узнать что-то о фоновом задании, то мы должны обратиться к серверу, чтобы получить информацию из базы данных.
   Torquader
 
26 - 05.03.18 - 13:14
Если файловый вариант, то фоновое задание выполняется в отдельном сеансе.
   LeoKeyn
 
27 - 05.03.18 - 13:17
(26) серверный
   LeoKeyn
 
28 - 05.03.18 - 13:18
(25) А можно ссылочку на какой нибудь пример с использованием, найти не могу
   catena
 
29 - 05.03.18 - 13:21
(20)>>Вообще задача стоит в том, чтобы сменить статус через некоторое время после выполнения некоторого действия

А что будет, если за это "некоторое время" пользователь произведет "некоторое действие" с другим документом?
   LeoKeyn
 
30 - 05.03.18 - 13:26
(29) Тот документ так ж должен сесть на таймер и сменить статус через скажем час
   Torquader
 
31 - 05.03.18 - 13:26
(28) Я вот не очень понимаю:
Сменить статус документа - если статус документа в базе отражается, то мы просто пишем в базу (статус обычно в регистре сведений) - просто, клиенты, если их статус интересует, периодически читают этот регистр.
Если статус в базе не хранится, то вообще зачем он нужен ?
Тогда, опять же - пишем в регистр изменение, а клиент, которому оно нужно, читает и удаляет запись, чтобы в регистре ничего не было.
   LeoKeyn
 
32 - 05.03.18 - 13:27
(29) если подробнее после того как статус стал равер СовершилПосадку, через час у этого документа должен смениться статус на РейсЗавершен
   Torquader
 
33 - 05.03.18 - 13:27
(30) Вообще - это называется "бизнес процесс" - мы ждём час, если наши черепахи не доползли, то им нужен втык - запускается дочерний бизнес-процесс.
 
 
   Torquader
 
34 - 05.03.18 - 13:28
(32) Вот я и говорю, бизнес-процесс "полёт" с переходом из одного состояния в другое - перевод сервисом.
   FIXXXL
 
35 - 05.03.18 - 13:28
(28) (32) складируй данные для обработки в очередь, используй РегистрСведений
   LeoKeyn
 
36 - 05.03.18 - 13:30
(31) (35) А вот это кажется понимаю. Создать регистр и класть туда данные, которые нужно переделать через час? И как? проверять их каждые минуту?
   LeoKeyn
 
37 - 05.03.18 - 13:31
(35) Или фоновое задание которое будет висеть вечно и проверять?
   тарам пам пам
 
38 - 05.03.18 - 13:37
а не проще сделать периодический регистр сведений со статусом и писать туда статус сразу с нужным временем?
   тарам пам пам
 
39 - 05.03.18 - 13:37
и не нужно тогда никаких регл. заданий и прочих извращений
   LeoKeyn
 
40 - 05.03.18 - 13:42
(38) Суть в том, что система должна поменять статус через час. А не пользователь
   тарам пам пам
 
41 - 05.03.18 - 13:46
(40) ну и пиши в этот регистр данные при проведении документа "Рейс" или что у тебя там фиксирует вылет
   LeoKeyn
 
42 - 05.03.18 - 13:56
(41) Ну а как мне поменять статус этого рейса после часа как он получил статус СовершилПосадку?)
   LeoKeyn
 
43 - 05.03.18 - 13:57
(41) Через час после СОвершилПосадку он должен стать РейсЗавершен автоматом и провестись)
   Mankubus
 
44 - 05.03.18 - 15:26
(43) Сделай статус расчётным значением там где он отображается
   FIXXXL
 
45 - 05.03.18 - 16:13
(42)(43) вынеси Статус полностью в периодический РС
при записи СОвершилПосадку пиши сразу запись "в будущее" с РейсЗавершен  
срез не забудь только на дату всегда брать :)
   dezss
 
46 - 05.03.18 - 16:42
(45) +100500)
   МимохожийОднако
 
47 - 05.03.18 - 16:56
А если через 20 минут взлетит? ))
   H A D G E H O G s
 
48 - 05.03.18 - 17:03
Вообще то фоновое задание связано с основным.
   catena
 
49 - 06.03.18 - 05:10
(43)Делаешь сразу две записи в регистре:
ТекущаяДата()             "Приземлился"
ТекущаяДата()+60*60       "Завершен"

Все, никаких обработчиков и фоновых не нужно.
 
 Рекламное место пустует



Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует