Имя: Пароль:
1C
1С v8
Незавершаемое регламентное задание
0 D_Pavel
 
01.12.11
08:38
Как сделать регламентное задание, которое постоянно висит в сеансе и не завершается? Дело в том что у меня должна быть загружена внешняя компонента сервера КПК, которую я запускаю из регламентного задания. Но мне кажется что она не работает потому что регламентное задание после запуска внешней компоненты закрывается и поэтому компонента выгружается.
1 Fish
 
01.12.11
08:48
Бесконечный цикл в нем сделай :))
2 Defender aka LINN
 
01.12.11
08:51
(0) Ну бедет у тебя ВК загружена. И что, тебе прямо легче станет? :)
3 D_Pavel
 
01.12.11
09:01
(1) :))
4 D_Pavel
 
01.12.11
09:10
(2) Если этим все мои проблемы будут решены, то да :)
5 Defender aka LINN
 
01.12.11
09:16
(4) Не будет. ВК загружается в конкретном сеансе. Всей остальной системе от этого ни жарко, ни холодно.
6 D_Pavel
 
01.12.11
10:23
(5) Это же хорошо!
Вопрос как это сделать остается открытым.
Как работает ОжидатьЗавершения(<Таймаут>) кто знает? Если задание выполнится раньше таймаута, оно выгружается?
7 D_Pavel
 
01.12.11
10:46
Uп
8 D_Pavel
 
01.12.11
11:03
не тони, щас кто-нибудь ответит!
9 sda553
 
01.12.11
11:09
Хех, у меня просто в терминале постоянно сеанс 1С запущен который как раз эту внешнюю компоненту КПК юзает

А если по правильному и есть ресурсы, то надо написать сервис, этот сервис будет грузить внешнюю компоненту, и если надо по Com (или веб сервис сейчас гламурен) подключаться к 1С и вносить в нее какие то изменения
10 Defender aka LINN
 
01.12.11
11:09
(6) Ты б лучше сказал, что тебе надо вообще. "Вечный фоновый сеанс" - это не задача, это ты способ решения задачи выбрал.
11 sda553
 
01.12.11
11:11
(10) я как знатный телепат скажу. У него есть сервер работающий с КПК, когда с КПК приходит сообщение, то этот сервис генерирует внешнее событие в 1С через специальную внешнюю компоненту, которая в этом 1С загружена
12 Defender aka LINN
 
01.12.11
11:12
(11) Ужоснах.
13 D_Pavel
 
01.12.11
11:33
(9) У меня тоже запущен сеанс в терминале, но хотелось бы чтобы при перезагрузке сервера не нужно было создавать заново терминал и сеанс.
(10) Это и есть часть задачи, которая требует решения. Ничего не изменится если я напишу всю задачу. Разница только в количестве букв.
14 sda553
 
01.12.11
11:43
(13) Ну тогда выделяете программиста знакомого с С++ (или на фрилансе возьмите временно) Пусть он напишет сервис для сервера. Этот сервис будет стартовать при старте сервера по неким пользователем. Далее он будет грузить в себя внешнюю компоненту 1С (сложностей быть не должно, интерфейс внешних компонент 1С хорошо описан) и будет выполнять прием сообщени
15 Fish
 
01.12.11
11:45
(13)(14) А батник по расписанию или при старте системы не судьба сделать?
16 sda553
 
01.12.11
11:48
(15) Не обижайтесь, но вы даете нэрроу майндед решение. Батник может выполнить недопустимую операцию и умереть. А службу сервер может перезапустить, если та недопустимую операцию выполнила.
К тому же есть журнал работы служб и остальные замечательные инструменты. Например службу можно запустить под другим пользователем. Вообщем батнику свои задачи, службе свои
17 D_Pavel
 
01.12.11
11:50
(14) Разве внешняя компонента не должна быть запущена из 1С? Если ее запускать из сервиса, это получится как обычный сервер КПК, почему разработчики сразу так не сделали? Наверное так не будет работать.
18 sda553
 
01.12.11
11:53
(17) Будет, я видел как это работает.
Внешняя компонента имеет программный интерфейс который соответствует требованиям предъявляемым 1С к внешним компонентам. Но это не значит что этим интерфейсом не может воспользоваться другие программы. Другая программа может у внешней компоненты запрашивать те же самые функции и данные, что запрашивает 1С.

Разработчики сразу этого не сделали, потому что считают, что необязательно сервер будет "сотрудничать" с 1С и пытались добиться таким образом универсальности сервера, независимой от дальнейшего учетного софта.
19 D_Pavel
 
01.12.11
11:55
Отлично, будем писать сервис и изучать С++ !
20 D_Pavel
 
01.12.11
12:01
(18) Внешняя компонента должна подключаться через COM соединение к серверу 1с, но в модуле подключения при создании ее нет никаких данных по имени пользователя и паролю. Тоесть если ее запускать из 1С, она не по COM подключается, а из сеанса.
21 sda553
 
01.12.11
12:13
(20) Зачем вообще внешняя компонента должна подключаться к 1С? Она всего лишь генерит событие, когда данные с КПК пришли. А кто на это событие отреагирует 1С, который ее предварительно загрузил под определенным пользователем, или твой сервис который запустился на сервере под определенной учеткой ей пофиг.

Я вижу схему так
Сейчас:
Сервер - >генерация события в ВК - >1С запущенная в терминал
Станет:
Сервер - >генерация события в ВК - >Служба сервера - > веб сервис 1С -> компонента 1С на веб сервере.
22 D_Pavel
 
01.12.11
12:30
так сложнее. Получается сервис будет подключаться к 1С. Лучше уж пусть компонента в регламентном задании сидит, меньше промежуточных звеньев.
23 Fish
 
01.12.11
12:36
(16) Не соглашусь :)) "Батник может выполнить недопустимую операцию и умереть" - так напиши батник так, чтобы он это предусматривал :)) С помощью батников либо скриптов виндовых можно не только тупые запуски программ делать :))
24 sda553
 
01.12.11
12:44
(22) Думаю что послать авторизованный SOAP запросик с какими то данными на определенный веб адрес, который слушает веб-сервер - не такая уж сложная задачка для службы.
(23) Конечно можно, но зачем писать и все это предусматривать, когда существует такой замечательный механизм, как службы (services) в которых уже все это предусмотрено и еще много чего
25 Fish
 
01.12.11
12:56
(24) Потому что это проще ИМХО :))
26 sda553
 
01.12.11
13:00
(25) Сделать сервис - это очень просто http://msdn.microsoft.com/en-us/library/zt39148a(v=vs.80).aspx
27 D_Pavel
 
02.12.11
08:50
Чото фигня какаято. Сделал проще, в конце процедуры регламентного задания написал:

   ................
   scr = Новый COMОбъект("WScript.Shell");
   scr.Run("ping 127.0.0.1 -t ", 0, 1);
КонецПроцедуры
28 Fish
 
02.12.11
09:03
(26) Не спорю, но в моей ситуации проще батник сделать, т.к. серверами у нас рулят админы и очень любят убивать "лишние" на их взгляд процессы и сервисы :)))
Программист всегда исправляет последнюю ошибку.