Это несколько модифицированная обработка из Бухгалтерии 2.0.
Возникла необходимость, чтобы у одного пользователя был открыт только сегодняшний день. Была написана обработка, которая выполнялась каждую ночь и устанавливала дату запрета изменения данных на вчерашнее число. (Про регламентные задания знаю, но не хотелать вносить изменения в конфигурацию, да и высчитывать время когда это запускать, чтобы BackUp'у не мешать).
Возникла проблема, что иногда кто-то из пользователей забывал закрыть программу на ночь и тогда период не закрывался. (BackUp не так кретично, а период нужно обязательно закрывать.)
Начал смотреть обработку установки даты запрета изменения данных и обнаружил, что монопольный доступ для этого совсем не обязателен, просто применятся ограничения только при новом входе пользователя.
Ну и как обычно бывает когда закрываешь кому-нибдь доступ, сразу возникают ситуции, когда нужно срочно доступ открывать. Вот и пришлось модифицировать обработку из бухгалтерии, чтобы не выгонять кучу пользователе из базы в течение рабочего дня.
Кстати, мне до сих пор не понятно почему удаление помеченых данных из типовых конфигураций требует монопольного доступа, а обработка с ИТС делает это в разделёноом режиме...
Как бонус выкладываю обработку, котораю двигает границу запрета изменения данных для пользователя на вчерашний день. Её легко модифицировать для группы пользователей, фирмы или общей даты. Но если не получится, то прошу в личку.
Эту обработку можно запускать из скрипта или добавить в регламентные задания.
Коммандная строка для запуска:
"C:\Program Files\1cv82\common\1cestart.exe" ENTERPRISE /S"Сервер:1641\База" /nПользователь /p"Пароль" /WA- /AU- /DisableStartupMessages /RunModeOrdinaryApplication /AppAutoCheckMode /AppAutoCheckVersion /Execute"C:\Program Files\nnCron\bat\ЗакрытьПериод.epf"
UpDate: Для того чтобы пользователю не нужно было перезаходить в базу, нужно по таймеру или какому-либо событию выполнять комману у пользователя:
ПолныеПрава.УстановитьПараметрГраницыЗапретаИзмененияДанных();
Сделать такое из обработки для всех пользователей не возможно, так как доступ к ПараметрамСеанса есть только из сеанса пользователя.