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


1С:Предприятие :: 1С:Предприятие 8 общая

Как закрыть программу после окончания обмена?

Как закрыть программу после окончания обмена?
Я
   Мигрень
 
16.10.16 - 19:43
УТ 11.2 Файловая. РИБ. Сеанс запустился с планировщика Винды. По регламентному заданию прошел обмен. Как завершить сеанс?
 
 
   RomanYS
 
1 - 16.10.16 - 19:46
(0) смотря где этот код запускался. Где-то достаточно 
Отказ = Истина;
В общем случае
ЗавершитьРаботуСистемы()//вроде бы
   Мигрень
 
2 - 16.10.16 - 19:48
(1) Да про общий случай понятно. Но у меня не общий случай, а частный. Он описан в (0). Какой код вас интересует, который "запускается", я вам расскажу. Но в (0) вроде все подробно доступно описано, где что запускается.
   MaxS
 
3 - 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
О, придумал. Из модуля приложения запустить форму и пускай она висит открытой. Когда завершится обмен, серверная процедура обмена передаст сообщение форме, а та закроет программу.

Как такое решение? Или можно проще.
   RomanYS
 
7 - 16.10.16 - 20:36
отказ = истина
приначалеработысистемы 
и никаких регламентных
   Мигрень
 
8 - 16.10.16 - 20:40
(7) Как это? А обмен как же? Мне обмен сделать нужно.
   RomanYS
 
9 - 16.10.16 - 20:46
(8) так и делай в приначалеработысистемы
   Мигрень
 
10 - 16.10.16 - 20:53
(9) Ну можно и так, чичас попробую!
 
 Рекламное место пустует
   assasu
 
11 - 17.10.16 - 05:21
(6) не надо заниматься этим тряхомудием...
есть стандартная настройка, которая говорит что выполнять обмен надо при запуске системы. Далее надо запустить под нужным пользователем и потом (1)
   Wit77
 
12 - 17.10.16 - 05:29
(11) можно чуть проще, в настройках обмена указываем, что запускать обмен при завершении работы системы. Пишем обработку с одной строчкой ЗавершитьРаботуСистемы() и запускаем эту обработку при старте 1с через параметр.
   Wit77
 
13 - 17.10.16 - 05:29
(12) на обычных формах точно работало.
   assasu
 
14 - 17.10.16 - 07:06
(12) что удивительно, если обмен делать при запуске, а не при завершении , то обработка будет тоже с одной строчкой ЗавершитьРаботу...
   MaxS
 
15 - 17.10.16 - 10:23
(4) Моё дело предложить типовое решение, использующее функционал БСП, где обработку можно запускать как на клиенте так и на сервере...
Ваше дело найти причины для изобретения другого велосипеда... ;)
   Мигрень
 
16 - 17.10.16 - 11:09
(11) Нет такой настройки в УТ 11.2, я не нашел.
   Мигрень
 
17 - 17.10.16 - 11:11
(12) Нет такой настройки в УТ 11.2, я не нашел.
   Serg_1960
 
18 - 17.10.16 - 11:24
Не свисти,  денег не будет :) Эта "нет такой настройки" называется обмен данными, "автоматический обмен".

Кстати у меня так работало и не возбухало:

Процедура ПриНачалеРаботыСистемы()
...
   Если ПараметрыСеанса.ТекущийПользователь = Константы.ПользовательДляВыполненияРегламентныхЗаданийВФайловомВарианте.Получить() Тогда
      ЗавершитьРаботуСистемы();
   КонецЕсли;
КонецПроцедуры
   Serg_1960
 
19 - 17.10.16 - 11:26
+ эээ... Хотя это не принципиально, но у меня УПП, естественно обычные формы, толстый клиент.
   Serg_1960
 
20 - 17.10.16 - 11:31
(12) Можно ещё проще :) без внесения изменений в конфигурацию. Используем командную строку для вызова внешней обработки, в которой инициализация запуска обмена данными и завершение сеанса работы.
   Мигрень
 
21 - 17.10.16 - 11:35
(18) Ты видать УТ11 никогда не открывал. Нет такой настройки, чтобы при включении программы обмен шел. И при выключении тоже нет.
   Мигрень
 
22 - 17.10.16 - 11:37
(20) Да вот так пожалуй и сделаю. Процедуру из БСП, которую нужно дернуть, я уже нашел. Но типовой настройки НЕТ.
   Wit77
 
23 - 17.10.16 - 11:42
(20) собственно я про это и написал. :) обработка внешняя. Путь к ней передаем как параметр в командной строке. Весь цимес в том, что не надо конфигурацию трогать.
   Wit77
 
24 - 17.10.16 - 11:43
(20) если нет в 11 настроек таких - тогда да, можно сразу все в обработке написать и старт обмена и завершение работы
   Мигрень
 
25 - 17.10.16 - 12:13
(20) Н-да, ничего не получилось. Программа сразу закрывается, обмен не происходит. Оно и понятно, поскольку обмен - это фоновое задание.

Вопрос остается открытым. Как закрыть программу после окончания обмена? Как на клиенте отловить момент, когда в фоновом задании на сервере закончился обмен?
   Мигрень
 
26 - 17.10.16 - 12:23
А молодцы программисты БСП, они предусмотрели отсылку оповещения с сервера после окончания обмена. Его нужно перехватить и обработать.
   MaxS
 
27 - 17.10.16 - 12:51
Обработку внешнюю можно штатно в режиме предприятия добавить и назначить расписание.
Запускается база, запускается обмен как это сделано сейчас,
параллельно по расписанию например каждые 5 минут в течение ночи запускается обработка в режиме "ВызовСерверногоМетода",  проверяется состояние обмена. Если он завершался этой ночью, завершает работу базы.
Сам такого не пробовал ))
Есть такая команда Disconnect
...
// Получить соединения базы.

СоединенияБазы = Сервер.GetInfoBaseConnections(ИнформационнаяБаза);

// Разорвать соединения клиентских приложений.

Для Каждого Соединение Из СоединенияБазы Цикл
      Сервер.Disconnect(Соединение);
КонецЦикла;
   Мигрень
 
28 - 17.10.16 - 14:24
(27) Нет, это все ерунда.

На данный момент добился следующего. Есть внешняя обработка. Если её открыть через Файл-открыть, то отработает процедура ПриОтркрытии(), которая запустит фоновый обмен и закроет потом программу.

Если же тоже самое сделать, подключив обработку как внешнюю, и открыть её через интерфейс "ДополнительныеОбработки", то она не запускает фоновый процесс обмена.

Если нажать на кнопку на форме обработки и дернуть запуск обмена, то он конечно идет. А автоматически - не идет. Вот зараза.

Какая-то засада в БСП.
   Мигрень
 
29 - 17.10.16 - 14:59
Ну, в общем, мне надоело возиться с этой ерундой, добавил обработку в конфигурацию и дергаю ей из ПриНачалеРаботыСистемы. Остальное делает обработка.
   Serg_1960
 
30 - 17.10.16 - 15:35
(25) Тьфу, чёрт, у тебя же файловая версия :( Нет сеанса - некому фоновое задание выполнять :( Тебе нужно было в конце обработки поставить ожидание завершения работы фонового задания.
   Мигрень
 
31 - 17.10.16 - 16:29
(30) это-то я решил, обработка ждет окончания обмена. Там другая засада, описанная в (28).


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