|
Вызов клиентской процедуры из серверной в общем модуле | ☑ | ||
---|---|---|---|---|
0
Aleksey1989
18.08.15
✎
13:37
|
Добрый день. Знаю, что из сервера клиент вызвать никак не получится, но посоветуйте, пжл, что-нибудь. В общем модуле есть процедура с директивой компиляции &НаКлиенте. Необходимо обеспечить ее запуск время от времени. С помощью регламентного задания, насколько мне известно, эту проблему не решить, т.к. там можно указывать только процедуры с директивами компиляции &НаСервере.
Подскажите, пжл, выход из ситуации? |
|||
1
Nuobu
18.08.15
✎
13:53
|
(0) &НаКлиентеНаСервереБезКонтекста
|
|||
2
Aleksey1989
18.08.15
✎
15:28
|
(1) Не помогает, при попытке сохранить регламентное задание возникает ошибка "Метод задания не найден"
|
|||
3
ДенисЧ
18.08.15
✎
15:30
|
Перенести процедуру НаСервер
|
|||
4
DexterMorgan
18.08.15
✎
15:32
|
Знаю, что из сервера клиент вызвать никак не получится, но посоветуйте, пжл, что-нибудь
Жж0шь |
|||
5
Aleksey1989
18.08.15
✎
15:39
|
(3) Проблема в том, что процедура, которая находится в общем модуле, запускает другую клиентскую процедуру. Эту самую другую клиентскую процедуру перенести не получится.
|
|||
6
Nuobu
18.08.15
✎
15:40
|
(5) Чего не получится? ВнешняяОбработка?
|
|||
7
Aleksey1989
18.08.15
✎
15:44
|
(6) Эта операция должна выполняться периодически, поэтому и сначала решил использовать регл. задания, пока не понял, что они работают только с серверными процедурами.
Похоже, придется решить проблему через виндовый диспетчер заданий, другого пути не вижу. |
|||
8
Nuobu
18.08.15
✎
15:45
|
(7) А сделать серверную ф-ю никак?
|
|||
9
Aleksey1989
18.08.15
✎
15:47
|
(8) нет, не получится - моя функция должна запускать другую, типовую клиентскую.
|
|||
10
Nuobu
18.08.15
✎
15:50
|
(9) Так типовую переделай.
Не обязательно переделывать именно эту типовую ф-ю. Можно ведь свою наваять. Точно такую же, только она будет делаться на сервере и сделать так, чтобы при обновлении она тоже "обновилась". |
|||
11
Дык ё
18.08.15
✎
15:50
|
(9) ПодключитьОбработчикОжидания ?
|
|||
12
vvp91
18.08.15
✎
16:03
|
В общем модуле доступны только две директивы компиляции &НаКлиенте и &НаСервере. Общие директивы для общих модулей не определены.
Вариант следующий: * общий модуль должен иметь признаки "Клиент (управляемое приложение)", "Сервер", "Вызов сервера". * в этом общем модуле 3 метода - первый без директивы компиляции, второй с директивой &НаКлиенте, третий с директивой &НаСервере. * первый метод может быть вызван как из второго метода, так и из третьего; * вызов из клиентского метода формы через второй метод работает на клиенте; * вызов из серверного метода формы через третий метода работает на сервере; Таким образом имеем один метод (первый) как для серверного, так и для клиентского исполнения. В общем случае достаточно не указывать директивы компиляции в общем методе, и нет необходимости писать заглушки с директивами копиляции. "Вызов сервера" у модуля тоже не особенно нужен. Разницу поведения потрохов первого метода на клиенте и на сервере можно организовать через инструкции препроцессора. Проверено для форм, для регл.заданий тестируй сам. |
|||
13
Aleksey1989
19.08.15
✎
08:14
|
(12) Это не будет работать в общем модуле.
|
|||
14
Aleksey1989
19.08.15
✎
08:37
|
В общем, наиболее лучшим решением для себя я нашел следующее:
1. Создаю внешнюю обработку, в событии открытия формы которой добавляю строку кода запуска необходимой мне процедуры, которая выполняется НаКлиенте в общем модуле. После этого обработка закрывает 1С. 2. Создаю регламентное задание, в котором указываю запуск требуемой базы 1С с обязательным параметром Execute, в котором указываю путь к моей внешней обработке. (11) ПодключитьОбработчикОжидания - этот способ не подойдет мне по той причине, что постоянно д.б. запущен сеанс 1С. П.с. База работает в клиент-серверном режиме. |
|||
15
vvp91
19.08.15
✎
11:19
|
(13) Что "это" не будет работать в общем модуле?
|
|||
16
Aleksey1989
19.08.15
✎
12:41
|
(15) - описанная последовательность действий.
Я создал общий модуль, проставил для него галки Клиент, Сервер, ВызовСервера, создал в нем 3 процедуры: Процедура1 без какой-либо директивы компиляции, Процедура2 с директивой компиляции НаСервере и Процедура3 с директивой компиляции НаКлиенте. Далее создаю регламентное задание, указываю для запуска Процедура2. Процедура2 вызывает Процедура1, а та, в свою очередь, должна вызвать Процедура3, но этого не происходит, т.к. Процедура1 не видит Процедура3. Если я понял (12), то предполагалась именно такая последовательность, разве не так? |
|||
17
ДенисЧ
19.08.15
✎
12:51
|
я бы рекомендовал ТС написать заявление по собственному в связи с полным служебным несоответствием
|
|||
18
vvp91
19.08.15
✎
13:31
|
(16) Не совсем так.
В твоем случае - убери у процедуры, которую надо вызывать, директиву компиляции &НаКлиенте; - убедись, что общий модуль имеет признаки клиента и сервера. |
|||
19
hhhh
19.08.15
✎
14:12
|
(16) в общем модуле директивы эти не работают.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |