1с завершитьработусистемы не работает

Обновлено: 07.07.2024

Как правильно пишется ф-ия завершения работы:


------------------
Есть многое на свете, друг Горацио.
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет) ЗавершитьРаботуСистемы (Exit)
Глобальный контекст
ЗавершитьРаботуСистемы (Exit)
Синтаксис:
ЗавершитьРаботуСистемы(<Запрашивать возможность>, <Перезапустить при завершении>, <Дополнительные параметры комадной строки>
Параметры:
<Запрашивать возможность> (необязательный)
Тип: Булево. Если Ложь, то завершение работы программы будет выполнено безусловно (не зависимо от наличия редактируемых данных).
Если значение параметра Истина, то будут вызываться обработчики закрытия для каждой открытой формы и для всего приложения. Для редакторов текстов, табличных документов и HTML-документов будет произведен анализ модифицированности. Если нет факторов, препятствующих закрытию (например, данные модифицированы и не сохранены), то выполняется завершение работы. В противном случае (такие данные есть) будет выдан вопрос о необходимости сохранения документов.
Значение по умолчанию: Истина
<Перезапустить при завершении> (необязательный)
Тип: Булево. Указывает необходимость выполнения запуска нового сеанса с текущими установками после завершения работы.
Значение по умолчанию: Ложь
<Дополнительные параметры комадной строки> (необязательный)
Тип: Строка. Содержит дополнительные параметры, которые будет переданы новому сеансу. Если такие параметры уже есть среди текущих установок, переданные заменят текущие.
Параметр указывается, если значение параметра <Перезапустить при завершении>=Истина.
Описание:
Позволяет принудительно вызвать завершение работы 1С:Предприятия. В зависимости от переданного параметра будут вызываться обработчики закрытия и завершения работы системы или завершает работу безусловно.
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Примечание:
Если вызов осуществляется из модуля формы, открытой в модальном режиме, завершение работы системы не выполняется.
Если параметр <Перезапустить при завершении>=Истина, то после завершения работы системы будет открыт новый сеанс 1С:Предприятия.
Если в процессе завершения системы пользователь отменит завершение работы, запуск нового сеанса выполнен не будет.
Пример:
// безусловное завершение работы программы
ЗавершитьРаботуСистемы(Ложь);

думаю, что в двойке аналогично

А чЁ про неё в хелпе написано.


------------------
Есть многое на свете, друг Горацио.
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)

В 8.2 эта ф-ия не работает.


------------------
Есть многое на свете, друг Горацио.
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)

мона попробовать по-аглицки написать типа Exit(), Quit(), Shutdown()
щас проста нету двойки под рукой

У меня тоже есть сомнения, на одном сервере ЗавершитьРаботуСистемы() работает, а на другом нет, при загрузке выдаёт, что такая ф-ия не определена.

Пока не знаю версий 1с8.2, в понедельник попробую узнать.


------------------
Есть многое на свете, друг Горацио.
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет) Я не особо вникал в суть. Но некоторые закономерности уловил. Функа не хочет работать из модуля формы(или руки кривые ?), но из модуля приложения отрабатывает.
Мне честно говоря лениво разбираться, если кто (piva, ау) прошел эти грабли - поделитесь medstrax
Я не особо вникал в суть. Но некоторые закономерности уловил. Функа не хочет работать из модуля формы(или руки кривые ?), но из модуля приложения отрабатывает.
Мне честно говоря лениво разбираться, если кто (piva, ау) прошел эти грабли - поделитесь

Точно. натолкнул на мысль, что я эти грабли уже проходил, сейчас поищу.


------------------
Есть многое на свете, друг Горацио.
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет) medstrax
Я не особо вникал в суть. Но некоторые закономерности уловил. Функа не хочет работать из модуля формы(или руки кривые ?), но из модуля приложения отрабатывает.
Мне честно говоря лениво разбираться, если кто (piva, ау) прошел эти грабли - поделитесь

Во, нашёл, сам же эти грабли раскопал, а потом забыл, forum.foxclub.ru, тем не менее за "наводку" держи medstrax


------------------
Есть многое на свете, друг Горацио.
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)

Функция скорее всего доступна только на сервере, пока ничего не могу сказать - дома 8.2 нету


------------------
Часто бывает так, что есть над чем задуматься, а нечем. Доступность:
Тонкий клиент, веб-клиент, толстый клиент.

А ты не иначе пытаешься ее вызвать из COmConnector или Application
В ComConnector ваще ничего не надо - умрет вместе с переменной, насколь помню у Application тоже самое


------------------
Часто бывает так, что есть над чем задуматься, а нечем. Доступность:
Тонкий клиент, веб-клиент, толстый клиент.
А ты не иначе пытаешься ее вызвать из COmConnector или Application
В ComConnector ваще ничего не надо - умрет вместе с переменной, насколь помню у Application тоже самое

Из Application, не умирает, проверено.


------------------
Есть многое на свете, друг Горацио.
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)

Ага - тока на серверном не могу проверить - нету. На файловом работает (тут есть нюансы и не маленькие)

Exit - это и есть ЗавершитьРаботуСистемы.


------------------
Часто бывает так, что есть над чем задуматься, а нечем. piva
Exit - это и есть ЗавершитьРаботуСистемы.

Вадим, сейчас не помню на какой версии (прога работает с 8.0, 8.1, 8.2), НО при "пертурбациях" ЗаписатьXML/ПрочитатьXML у меня не получалось "убить" 1С через внешнее завершение, только через штатную ф-ию ЗавершитьРаботуСистемы.


------------------
Есть многое на свете, друг Горацио.
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)

А зачем тебе запускать каждый раз Application ?


------------------
Часто бывает так, что есть над чем задуматься, а нечем. piva
А зачем тебе запускать каждый раз Application ?

А какая разница Application или Connector, прога работает ночью и вообщем-то без разницы скорость выполнения.


------------------
Есть многое на свете, друг Горацио.
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)

Ну если без разницы, на чем ездить за картошкой, то конечно на Белазе удобней


------------------
Часто бывает так, что есть над чем задуматься, а нечем. piva
Ну если без разницы, на чем ездить за картошкой, то конечно на Белазе удобней

Ты загадками не говори, а скажи почему на твой взгляд лучше так, а не так.

Начиная с версии 8.3.8 фирма 1С изменила подход к завершению работы и закрытию приложения. Новомодные веяния – ли, ошибки при работе с WEB интерфейсом – ли, но теперь со всех обработчиков событий, используемых нами при закрытии – «ПередЗавершениемРаботыСистемы» и «ПриЗавершенииРаботыСистемы», сервер не доступен. Рассмотрим, как теперь работают данные обработчики.

Обработчик: ПередЗавершениемРаботыСистемы(Отказ, ТекстПредупреждения)

Как мы помним возникает перед завершением программы, до закрытия главного окна. Если «Отказ» равен «Ложь», то программа просто закрывается, не выдавая никаких вопросов. В нем можно сделать всяческие проверки, все функции должны быть только клиентские (В процессе завершения работы приложения запрещены серверные вызовы и открытие окон.) и может быть установлен отказ от выхода из программы. И вот тут появляется первый подвох. Установление «Отказ» в Истина не отменяет выход из системы, а только указывает, что нужно выдать платформенный диалог, в котором будет предложено выйти или остаться с текстом из параметра «ТекстПредупреждения»:

Диалог завершения программы

И если пользователь нажмет «Завершить работу», все ваши проверки идут лесом. Платформа просто закрывает приложение не зависимо ни от чего. Отловить этот момент в коде нельзя, это все происходит на уровне платформы.

Если же пользователь нажмет на «Продолжить работу», то возможны два варианта событий:

    Если вы внутри вызова функций из данной процедуры подключали обработчик ожидания

Ответ на первый глобальный русский вопрос «кто виноват?» понятен. Я постараюсь ответить на второй «что делать?». Если нам надо что то зафиксировать в базе, например информацию о работе пользователей в системе. Кто когда заходил, кто когда вышел.

Решение однако лежит вообще в другой плоскости, а именно, в регламентном задании которое периодически будет опрашивать систему на активных пользователей, и фиксировать что такой то пользователь уже отсутствует в списке активных.

Для опроса системы у нас есть функция ПолучитьСеансыИнформационнойБазы(), которая возвращает массив сеансов. А для фиксации, что пользователя в сеансах уже нет нужно создавать новый регистр. Я предлагаю периодический (в пределах секунды) РС с двумя измерениями «Пользователь» и «НомерСеанса», в ресурсах же должно быть как минимум поле «ЗавершениеСеанса» по которому мы будем понимать что пользователь нами не обработан или обработан но активен.

Структура регистра

Обработчик: ПриЗавершенииРаботыСистемы()

Привожу полный текст справки:

Возникает перед завершением работы в режиме управляемого приложения после закрытия главного окна. В данной процедуре могут быть выполнены действия, необходимые при выходе из программы.

В данной процедуре не допускаются:

  • открытие форм и других окон,
  • использование серверных вызовов,
  • использование асинхронных вызовов.

Вот честно, не понимаю вообще какие действия можно осуществить в данной процедуре? Да мы можем написать кучу кода, что-то сделать с файлами, но ничего сообщить пользователю, что то сделать с базой – мы уже не можем.

Резюме

Резюмируя данную статью хочу поблагодарить фирму 1С, что не дает нам соскучиться и всегда на страже нашего свободного времени.

Agapov_Stas --> Agapov_Stas



Просмотр профиля

При старте системы открывается форма модально для проверки пользователя.
Вопрос - как завершить работу системы в случаи провала идентификации
Логику не нужно )
Тут заковырка:

не работает при вызове из модальной формы
Пробовал передать значение в общий модуль и оттуда закрыть - результата нет
Подскажите как это обойти ?

Vofka --> Vofka



Просмотр профиля При обновлении релиза, если не ошибаюсь, выскакивает модальное окно с вопросом о том легально ли получено обновлением. Если ответить нет, то, по-моему, программа закрывается. Подсмотрите там. Ardi --> Ardi



Просмотр профиля Magdych --> Magdych



Просмотр профиля Передать параметр в форму по месту вызова и при закрытии отработать завершение. Agapov_Stas --> Agapov_Stas



Просмотр профиля

не работает при вызове из модальной формы
Вот тут)

Batchir --> Batchir



Просмотр профиля Ну ведь модальная форма, на то и модальная что она ждет пока её закроют.
И ведь она ж когда то закрывается? Вам Magdych написал решение задачи.
Выполняйте завершение работы после закрытия формы.
Magdych --> Magdych



Просмотр профиля У модальной есть такая штука как "параметр закрытия". Собственно вот из помощника

Тип: Произвольный. Параметр закрытия формы, открытой в модальном режиме. Это значение будет возвращено как результат метода, открывающего форму модально.
Значение по умолчанию: Неопределено
Описание:

Закрывает форму. Если закрываемая форма была открыта в модальном режиме, то метод может передать команду закрытия методу, открывшему форму.

Тонкий клиент, веб-клиент, толстый клиент.
Вызов метода выполняет обращение к серверу

Agapov_Stas --> Agapov_Stas



Просмотр профиля

Нашел Решение :
ПриНачалеРаботыСистемы ()
Вставил код

Если идентификация не пройдена то форма закрывается так :

Спасибо за помощь

hda --> hda



Просмотр профиля

Читайте также: