Программа "Убийца нежелательных окон 1С"

31.07.18

Разработка - Инструментарий разработчика

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
(только для физ. лиц)
Дистрибутив программы "Убийца нежелательных окон 1С":
.zip 315,43Kb ver:1.0
2 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вступление

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

Полные исходные коды программы доступны здесь: ссылка на github проект.

Проблема, которую решает программа

Внимание! Все проблемы ниже относятся только к файловым базам.

Суть: пользователь может, не работая в базе, заблокировать её так, чтобы стали невозможны тестирование, обновление, архивация и другие операции, требующие монопольного доступа. И что самое важное: такого пользователя никак не выгнать стандартными средствами платформы.

Примеры сценариев такой блокировки базы:

  • Пользователь, у которого непустой пароль, оставил базу открытой и ушёл домой. Ночью запустилась программа обновления баз и выгнала этого пользователя на время операций с базой. Выгнала через стандартный механизм платформы, когда в базе создаётся объект "Блокировка сеансов". Операция с базой закончилась, блокировка сеансов была удалена и платформа вновь пустила пользователя обратно. Так как у него непустой пароль, то в базу он автоматически не попал, но осталось висеть окно авторизации. И теперь, пока пользователь не придёт и не закроет это окно, никто не сможет заблокировать базу для монопольного доступа.
  • Пользователь попытался войти в базу, забыл пароль и оставил висеть окно авторизации. Пока будет висеть это окно, базу монопольно не заблокировать.
  • Пользователь запустил загрузку базы и ушел, не дождавшись её окончания. Но конфигурация не загрузилась, так как появилось окно о том, что конфигурация отличается от конфигурации базы данных. Пока будет висеть эта загрузка, базу монопольно не заблокировать.

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

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

Риски, связанные с программой

Чтобы исключить и минимизировать риски, связанные с установкой дополнительного ПО на клиентские компьютеры:

  1. Код программы имеет небольшой размер и выложен полностью на github.
  2. Установщик и исполняемый файл программы имеют цифровую подпись автора.
  3. Исполняемый файл программы (KillerOfUnwantedWindows1C.exe) легко декомпилируется, показывая код в неизменном виде, например через dotPeek.
  4. Установщик и исполняемые файлы проходят проверки всех антивирусов на virustotal.
  5. При желании и необходимости вы можете собрать свои бинарные файлы программы.

Установка

  1. Скачайте релиз для имеющейся у вас версии .NET Framework: ссылка на скачивание.
  2. Установите этот msi на все клиентские компьютеры, с которых возможен запуск файловых 1С, вручную или через групповую политику.
  3. Программа будет автоматически установлена и её запуск (с ключом -r) будет прописан в общую автозагрузку всех пользователей.
  4. Теперь при входе любого пользователя в систему, у него автоматически будет запускаться в фоне программа "KillerOfUnwantedWindows1C.exe".
  5. Чтобы проверить, что программа работает корректно: перелогиньтесь, чтобы произошёл запуск процесса "KillerOfUnwantedWindows1C.exe", а затем запустите и оставьте висеть окно авторизации 1С. При этом не работайте за компьютером. В течение 45 секунд это окно будет закрыто автоматически. Это лишь один из примеров работы программы, подробнее читайте ниже.

Лицензия

Программа опубликована на github по лицензии Mozilla Public License, version 2.0. С полным текстом лицензии вы можете ознакомиться в файле LICENSE.

Требования к окружению

Программа разработана для платформы 1С версии 8. Настройки программы по умолчанию написаны для платформы 1С с русским интерфейсом. Чтобы адаптировать работу программы под другие языки интерфейса платформы 1С, смотрите раздел Локализация.

В системе должна быть установлена одна из версий Microsoft .NET Framework.

Среди дистрибутивов вы можете найти установочный файл для нужной вам версии .NET:

  • setup_for_net_2_0.msi - для версии .NET 2.0 и .NET 3.5
  • setup_for_net_4_0.msi - для версии .NET 4.0 и выше

Узнать, какая версия .NET идёт вместе с вашей ОС по умолчанию, а какая может быть установлена дополнительно, можно по этой ссылке: https://docs.microsoft.com/ru-ru/dotnet/framework/get-started/system-requirements

Принцип работы

  • При установке программа прописывается в автозагрузку всех пользователей компьютера.
  • В момент авторизации пользователя в его сессии в скрытом режиме запускается KillerOfUnwantedWindows1C.exe.
  • Процесс всё время висит в фоне, практически не потребляя ресурсов.
  • Каждые 15 секунд этот процесс проверяет:
    • есть ли запущенные экземпляры 1С (1cv8.exe и 1cv8c.exe)
    • если есть, то имеются ли у них видимые окна, заголовки которых совпадают с одними из тех, что прописаны в config.xml
    • если такие заголовки находятся, то они запоминаются
  • Как идёт учёт и обработка нежелательных заголовков:
    • у каждого заголовка, описанного в config.xml, есть следующие поля:
    • Title: текст заголовка, точное совпадение с которым, означает, что данное окно является нежелательным.
    • InactivatePeriodLimitSeconds: интервал в секундах. Если окно с этим заголовком висит в течение указанного интервала (реальное значение может отличаться в большую сторону на 15 секунд), и при этом пользователь не шевелит мышкой, не нажимает на кнопки мыши и не вводит ничего на клавиатуре, это означает что данное окно должно быть убито (о методах убийства см. ниже). При значении 0 параметр не учитывается, и окно может висеть сколь угодно долго, но тогда должен быть не нулевым параметр LifePeriodLimitSeconds.
    • LifePeriodLimitSeconds: интервал в секундах. Если окно с этим заголовком висит в течение указанного интервала (реальное значение может отличаться в большую сторону на 15 секунд), и при этом не важно работает пользователь за компьютером или нет, это означает, что данное окно должно быть убито (о методах убийства см. ниже). При значении 0 параметр не учитывается, и окно может висеть сколь угодно долго, но тогда должен быть не нулевым параметр InactivatePeriodLimitSeconds.
    • KillAction: метод убийства окна. Возможны значения: "CloseWindow" (окну посылается сигнал для его закрытия) или "CloseProcess" (принудительно закрывается весь процесс 1С, с которым связано данное окно)

Настройки по умолчанию и их смысл

По умолчанию config.xml выглядит следующим образом:

<UnwantedTitles>
    <Item Title="1с:предприятие. доступ к информационной базе" KillAction="CloseWindow" InactivatePeriodLimitSeconds="30" LifePeriodLimitSeconds="120"/>
    <Item Title="доступ к информационной базе" KillAction="CloseProcess" InactivatePeriodLimitSeconds="0" LifePeriodLimitSeconds="600"/>
    <Item Title="загрузка конфигурационной информации..." KillAction="CloseProcess" InactivatePeriodLimitSeconds="0" LifePeriodLimitSeconds="600"/>
</UnwantedTitles>

Что означает:

  • Закрывать окно 1С с заголовком "1с:предприятие. доступ к информационной базе", которое висит более 30 (+15) секунд при неактивном пользователе.
  • Закрывать окно 1С с заголовком "1с:предприятие. доступ к информационной базе" висит более 120 (+15) секунд в любом случае.
  • Закрывать процесс 1С, у которого висит окно "доступ к информационной базе" в течение 10 минут.
  • Закрывать процесс 1С, у которого висит окно "загрузка конфигурационной информации..." в течение 10 минут.

Эти настройки и временные интервалы подобранны таким образом, чтобы:

  • Закрывать открытые окна авторизации в 1С, с которыми не взаимодействует пользователь.
  • Закрывать зависшую загрузку базы (более 10 минут).
  • Но при всём при этом не создавать помех пользователю, который просто долго выбирает под кем войти в базу и вводит пароль, возможно не с первой попытки и т.д.

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

Локализация

Измените файл config.xml на соотв. сообщения платформы на вашем языке. Можете также прислать его мне - я включу его в цепочку подготовки дистрибутивов и буду выпускать программу и для вашего языка.

Сборка проекта

Для сборки проекта использовался Microsoft Visual Studio 2015. Для сборки установщика (подпроект installer) необходим установленный wix toolset 3.11.

Полные исходники проекта доступны на github: ссылка.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    201892    1114    410    

1021

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    35431    206    104    

195

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

22200 руб.

06.10.2023    23893    63    26    

92

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

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

16000 руб.

10.11.2023    16389    69    39    

88

Инструментарий разработчика Программист 1С v8.3 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    34568    122    53    

165

SALE! 30%

Инструментарий разработчика WEB-интеграция 1С v8.3 1C v8.2 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Инструмент для генерации OpenApi (Swagger) спецификаций на основании файлов конфигураций 1С. Это консольное и десктопное приложение на языке Rust с полноценным редактором кода, содержащим автозамену и подсвечивание ошибок для быстрого и безошибочного написания документирующего комментария.

18000 12600 руб.

22.11.2024    1602    1    0    

8

Инструментарий разработчика Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

6000 руб.

07.02.2018    107101    249    100    

313
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Timur.V 83 31.07.18 09:59 Сейчас в теме
А такой вариант не подойдет?

Для Файлового варианта:
"C:\Program Files\1cv81\bin\1cv8.exe" ENTERPRISE /F <путь к базе> /N <имя> /P <пароль> /WA- /AU- /DisableStartupMessages /C ЗавершитьРаботуПользователей
При этом произойдет запуск программы под админскими правами пользователя <имя>, а на экране других выйдет сообщение, оповещающее об отключении. Сам пользователь <имя> отключится тоже через 60 сек.

Рабочий пример:
"C:\Program Files\1cv81\bin\1cv8.exe" ENTERPRISE /FD:\FileBases\myDB\ /NАдминистратор /P123 /WA- /AU- /DisableStartupMessages /CЗавершитьРаботуПользователей
2. alexey.karmanov 189 31.07.18 10:02 Сейчас в теме
(1) К сожалению, не подойдёт. Ведь пользователь ещё не в базе (но при этом файл базы данных уже заблокирован от монопольного доступа) и стандартными средствами блокировки его выгнать.
3. Timur.V 83 31.07.18 10:05 Сейчас в теме
(2) А если удалить создавшийся файлик с расширением .cdn находящийся в папке с базой?
4. alexey.karmanov 189 31.07.18 10:09 Сейчас в теме
(3) А файлика этого (при описанной мною блокировке) ещё нет, ведь пользователь не в базе. Но при этом сам файл базы данных используется платформой и препятствует переводу базы в монопольный режим.
Оставьте свое сообщение