|
Как закрыть программу после окончания обмена? | ☑ | ||
---|---|---|---|---|
0
Мигрень
16.10.16
✎
19:43
|
УТ 11.2 Файловая. РИБ. Сеанс запустился с планировщика Винды. По регламентному заданию прошел обмен. Как завершить сеанс?
|
|||
1
RomanYS
16.10.16
✎
19:46
|
(0) смотря где этот код запускался. Где-то достаточно
Отказ = Истина; В общем случае ЗавершитьРаботуСистемы();//вроде бы |
|||
2
Мигрень
16.10.16
✎
19:48
|
(1) Да про общий случай понятно. Но у меня не общий случай, а частный. Он описан в (0). Какой код вас интересует, который "запускается", я вам расскажу. Но в (0) вроде все подробно доступно описано, где что запускается.
|
|||
3
MaxS
16.10.16
✎
19:54
|
Подключить внешнюю обработку, которая в регламентом задании проверяет состояние обмена. Если завершен, то (1)
|
|||
4
Мигрень
16.10.16
✎
19:59
|
(3) Не получится. Команда ЗавершитьРаботуСистемы() выполняется на клиенте. А регламентное задание с запуском на клиенте "Открытие формы" не может быть подключено к регламентному заданию.
|
|||
5
Мигрень
16.10.16
✎
20:13
|
(+4) Вернее так. Обработка с видом запуска на клиенте (Открытие формы) не может быть подключена к регламентному заданию. Иначе можно было бы написать обработку, имеющую в модуле формы одну строку, подключить её к регламентному заданию, назначить ей расписание и всё.
|
|||
6
Мигрень
16.10.16
✎
20:27
|
О, придумал. Из модуля приложения запустить форму и пускай она висит открытой. Когда завершится обмен, серверная процедура обмена передаст сообщение форме, а та закроет программу.
Как такое решение? Или можно проще. |
|||
7
RomanYS
16.10.16
✎
20:36
|
отказ = истина
приначалеработысистемы и никаких регламентных |
|||
8
Мигрень
16.10.16
✎
20:40
|
(7) Как это? А обмен как же? Мне обмен сделать нужно.
|
|||
9
RomanYS
16.10.16
✎
20:46
|
(8) так и делай в приначалеработысистемы
|
|||
10
Мигрень
16.10.16
✎
20:53
|
(9) Ну можно и так, чичас попробую!
|
|||
11
assasu
17.10.16
✎
05:21
|
(6) не надо заниматься этим тряхомудием...
есть стандартная настройка, которая говорит что выполнять обмен надо при запуске системы. Далее надо запустить под нужным пользователем и потом (1) |
|||
12
Wit77
17.10.16
✎
05:29
|
(11) можно чуть проще, в настройках обмена указываем, что запускать обмен при завершении работы системы. Пишем обработку с одной строчкой ЗавершитьРаботуСистемы() и запускаем эту обработку при старте 1с через параметр.
|
|||
13
Wit77
17.10.16
✎
05:29
|
(12) на обычных формах точно работало.
|
|||
14
assasu
17.10.16
✎
07:06
|
(12) что удивительно, если обмен делать при запуске, а не при завершении , то обработка будет тоже с одной строчкой ЗавершитьРаботу...
|
|||
15
MaxS
17.10.16
✎
10:23
|
(4) Моё дело предложить типовое решение, использующее функционал БСП, где обработку можно запускать как на клиенте так и на сервере...
Ваше дело найти причины для изобретения другого велосипеда... ;) |
|||
16
Мигрень
17.10.16
✎
11:09
|
(11) Нет такой настройки в УТ 11.2, я не нашел.
|
|||
17
Мигрень
17.10.16
✎
11:11
|
(12) Нет такой настройки в УТ 11.2, я не нашел.
|
|||
18
Serg_1960
17.10.16
✎
11:24
|
Не свисти, денег не будет :) Эта "нет такой настройки" называется обмен данными, "автоматический обмен".
Кстати у меня так работало и не возбухало: Процедура ПриНачалеРаботыСистемы() ... Если ПараметрыСеанса.ТекущийПользователь = Константы.ПользовательДляВыполненияРегламентныхЗаданийВФайловомВарианте.Получить() Тогда ЗавершитьРаботуСистемы(); КонецЕсли; КонецПроцедуры |
|||
19
Serg_1960
17.10.16
✎
11:26
|
+ эээ... Хотя это не принципиально, но у меня УПП, естественно обычные формы, толстый клиент.
|
|||
20
Serg_1960
17.10.16
✎
11:31
|
(12) Можно ещё проще :) без внесения изменений в конфигурацию. Используем командную строку для вызова внешней обработки, в которой инициализация запуска обмена данными и завершение сеанса работы.
|
|||
21
Мигрень
17.10.16
✎
11:35
|
(18) Ты видать УТ11 никогда не открывал. Нет такой настройки, чтобы при включении программы обмен шел. И при выключении тоже нет.
|
|||
22
Мигрень
17.10.16
✎
11:37
|
(20) Да вот так пожалуй и сделаю. Процедуру из БСП, которую нужно дернуть, я уже нашел. Но типовой настройки НЕТ.
|
|||
23
Wit77
17.10.16
✎
11:42
|
(20) собственно я про это и написал. :) обработка внешняя. Путь к ней передаем как параметр в командной строке. Весь цимес в том, что не надо конфигурацию трогать.
|
|||
24
Wit77
17.10.16
✎
11:43
|
(20) если нет в 11 настроек таких - тогда да, можно сразу все в обработке написать и старт обмена и завершение работы
|
|||
25
Мигрень
17.10.16
✎
12:13
|
(20) Н-да, ничего не получилось. Программа сразу закрывается, обмен не происходит. Оно и понятно, поскольку обмен - это фоновое задание.
Вопрос остается открытым. Как закрыть программу после окончания обмена? Как на клиенте отловить момент, когда в фоновом задании на сервере закончился обмен? |
|||
26
Мигрень
17.10.16
✎
12:23
|
А молодцы программисты БСП, они предусмотрели отсылку оповещения с сервера после окончания обмена. Его нужно перехватить и обработать.
|
|||
27
MaxS
17.10.16
✎
12:51
|
Обработку внешнюю можно штатно в режиме предприятия добавить и назначить расписание.
Запускается база, запускается обмен как это сделано сейчас, параллельно по расписанию например каждые 5 минут в течение ночи запускается обработка в режиме "ВызовСерверногоМетода", проверяется состояние обмена. Если он завершался этой ночью, завершает работу базы. Сам такого не пробовал )) Есть такая команда Disconnect ... // Получить соединения базы. СоединенияБазы = Сервер.GetInfoBaseConnections(ИнформационнаяБаза); // Разорвать соединения клиентских приложений. Для Каждого Соединение Из СоединенияБазы Цикл Сервер.Disconnect(Соединение); КонецЦикла; |
|||
28
Мигрень
17.10.16
✎
14:24
|
(27) Нет, это все ерунда.
На данный момент добился следующего. Есть внешняя обработка. Если её открыть через Файл-открыть, то отработает процедура ПриОтркрытии(), которая запустит фоновый обмен и закроет потом программу. Если же тоже самое сделать, подключив обработку как внешнюю, и открыть её через интерфейс "ДополнительныеОбработки", то она не запускает фоновый процесс обмена. Если нажать на кнопку на форме обработки и дернуть запуск обмена, то он конечно идет. А автоматически - не идет. Вот зараза. Какая-то засада в БСП. |
|||
29
Мигрень
17.10.16
✎
14:59
|
Ну, в общем, мне надоело возиться с этой ерундой, добавил обработку в конфигурацию и дергаю ей из ПриНачалеРаботыСистемы. Остальное делает обработка.
|
|||
30
Serg_1960
17.10.16
✎
15:35
|
(25) Тьфу, чёрт, у тебя же файловая версия :( Нет сеанса - некому фоновое задание выполнять :( Тебе нужно было в конце обработки поставить ожидание завершения работы фонового задания.
|
|||
31
Мигрень
17.10.16
✎
16:29
|
(30) это-то я решил, обработка ждет окончания обмена. Там другая засада, описанная в (28).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |