Как закрыть программу 1с

от admin

Новая концепция завершения работы приложения 1С 8.3.8

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • открытие форм и других окон,
  • использование серверных вызовов,
  • использование асинхронных вызовов.
  • выдача сообщений,
  • установка текста в панели состояния,
  • другие действия, требующие наличия главного окна.»

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

Резюме

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

Что делать если 1С зависла и не закрывается?

Иногда программа на компьютере зависает и перестаёт отвечать на запросы пользователя. Мышка может перестать отвечать на физические перемещения, а закрыть окно будет не получаться. Если человек давно пользуется компьютером, то для него алгоритм действий довольно-таки стандартный. Но когда зависает 1С, то вопросов появляется больше. Что делать, если 1С зависла и не закрывается при нажатии стандартных кнопок и элементов управления?

Главная опасность, которая видится тут пользователю – потеря данных. Ведь если вдруг произойдет какой-то сбой, то можно потерять, например, внесенные данные для отчёта. Эти данные иногда невозможно восстановить и физические носители или бумажные копии сегодня практически не используют.

По бесплатному телефону 8 (800) 600-32-31 или +7 (495) 139-09-60

Оставьте заявку через наш сайт или через раздел контакты

Несмотря на то, что опасность тут кажется большей, можно использовать стандартный алгоритм действий. В 1С предусмотрена система защиты данных, которая позволяет сохранить информацию даже при зависании. Внесённая информация обычно хранится в базе данных, а внешняя оболочка, которая и зависает – это просто удобный интерфейс и код для обработки сведений. Аварийный перезапуск или закрытие зависшей 1С никак не должно влиять на сохранность базы. По крайней мере так всё работает при правильной настройке.

Однако, повредить данные неумелым использованием всё-таки можно. Запомните простое правило:

Если 1С зависла, то если хочется обойтись без последствий для базы данных, ни в коем случае нельзя пользоваться кнопкой RESET на системном блоке или отключать питание компьютера/выдергивать вилку из розетки.

Читать:
Почему внешний жесткий диск мигает синим

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

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

  • Начните с нажатия комбинации клавиш ctrl+alt+del. Перед вами появится старый добрый диспетчер задач. Найдите там 1С и тыкните кнопку “Завершить процесс” или “Снять задачу”. Программа некоторое время подумает и закроется.
  • Попробуйте использовать комбинацию alt+f4. Компьютер запросит подтверждение завершения работы программы. После этого 1С закроется.
  • Если не получается вызвать диалоговое окно и даже нажать кнопку пуск, то попробуйте нажимать alt+tab и среди открытых окон выберите любое другое, кроме 1С. Окно с 1С можно будет закрыть мышкой, как вы сможет получить управление.
  • Есть ещё заветная комбинация ctrl+shift+esc. Она тоже вызывает диспетчер задач.

В некоторых редких случаях этот алгоритм действий не поможет. Или компьютер зависнет настолько глубоко, что не будет отвечать не на один запрос и на нажатие кнопок будет отвечать писком бипера, или процесс через “снять задачу” не будет завершаться и всё также продолжит висеть. В этом случае остаётся выполнять принудительную перезагрузку и рисковать. Но мы уже писали на тему важности бэкапа. Вероятно, база и не будет повреждена. Но наличие резервной копии сильно облегчит задачу.

Не забывайте подписываться на наш Telegram!

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

Многие пользователи недовольны интерфейсом программных продуктов 1С — он кажется им устаревшим и не особенно…

В некоторых случаях очень удобно иметь возможность выделять сразу несколько документов. Это требуется для группового редактирования…

Как правильно выходить из 1С

  1. В левом нижнем углу окна, нажмите кнопку с флажком
  2. В следующем окне, в правом верхнем углу нажмите кнопку с "человечком"
  3. В открывшемся меню выберите "Выйти"

Удаление сеанса пользователя в 1С

Завершение сеанса пользователя в 1С может потребоваться в следующих случаях:

  • обновление информационной базы;
  • проведение восстановления работы на сервере или профилактических работ;
  • зависшие сеансы пользователей, которые препятствуют повторному входу;
  • добавление нового объекта метаданных в конфигурацию.

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

Готовый сервер 1С с администрированием.

Обслуживание сервера 1С мы выполняем также в рамках ИТ-аутсорсинга.

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

Закрытие сеансов из конфигуратора

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

Ошибка активных сеансов

Рисунок 1 — Ошибка активных сеансов

Для завершения сеанса требуется:

  1. Нажать кнопку Завершить сеансы и повторить.
  2. Дождаться окна реструктуризации базы.
  3. Нажать Принять.

Завершение сеансов пользователя из программы 1С

В основном все продукты фирмы 1С 8 версии имеют механизм, позволяющий удаленно завершить работу пользователя и обеспечить администратору монопольный доступ к базе. Это обработка Блокировка соединений с информационной базой. Найти её можно по следующему адресу: Администрирование => обслуживание => блокировка работы пользователей.

Блокировка работы пользователей

Рисунок 2 — Блокировка работы пользователей

Подтверждение блокировки сеанса

Рисунок 3 — Подтверждение блокировки сеанса

Удаление пользователей из RDP

Удалить пользователя из терминального сервера можно при наличии определенных прав на это действие. Возможно завершить работу из стандартного диспетчера задач, но простое прерывание сеанса — не очень правильно. Второй вариант — использование диспетчера задач, удаленное подключение к сеансу и корректное завершение с помощью выхода из программы. Это, конечно, долгий способ и нет гарантий, что пока выполняется выход одного пользователя, не будет подключен еще пользователь, который запустит программу.

Для сервера 1С и обладая правами Администратора для кластера серверов 1С, необходимо:

  1. Запустить консоль администрирования сервера 1С.
  2. В ветке Информационные базы, найти базу, в которой будем завершать работу пользователя.
  3. Открыв её, зайти в ветку Сеансы.
  4. Щелкнув правой кнопкой мыши по имени пользователя, выбрать пункт Удалить.

Удаление в консоли администрирования

Рисунок 4 — Удаление в консоли администрирования

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

Перезагрузка сервера

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

Похожие статьи