АЦРК: автоматический запрет редактирования для пользователей в БП 2.0

11.11.12

Администрирование - Информационная безопасность

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
АвтоматическийЗапретРедактирования_БП20.rtf
.rtf 22,80Kb
27
27 Скачать (1 SM) Купить за 1 850 руб.

Как известно в конфигурации БП 2.0 нельзя штатными средствами установить дату запрета редактирования не в монопольном режиме. Это вызывает массу проблем, которые потом внедренцам приходится решать. (О чем думали разработчики - отдельный вопрос. Им много лет писали, но сделали они такую возможность только в БП 3.0. Причем в других конфигурациях такой проблемы нет).

Очень хотелось сделать для БП 2.0 что-то подобное АЦРК: Автоматический запрет редактирования для пользователей УТ 10.3. Немного углубившись в этот механизм в конфигурации обнаружил, что можно все-таки в типовой конфигурации устанавливать дату запрета и не в монопольном режиме. С другой стороны хотелось сделать и автоматический механизм установки даты запрета редактирования. Вроде все удалось.

1. Как в типовой бухгалтерии 2.0 установить дату запрета редактирования не в монопольном режиме ?

Вопрос очень актуальный. Как правило в течение рабочего дня не хочется выгонять всех пользователей, потому что это сложно. Они сидят в разных местах (кассир в кассе, например), у некоторых люди в очереди стоят, кому-то надо срочно отчет сделать или платежку подготовить и т.д. Кто-то от компьютера отошел. В общем главбух думает "установлю позже", но к концу дня забывает. В результате оказывается, что месяц закрыт, а дата запрета редактирования не установлена. Через месяц выясняется, что изменились остатки на конец предыдущего месяца и начинаются поиски причин и способов исправления.

Оказывается дату запрета все-таки можно установить и в немонопольном режиме. Это делается в режиме прямого редактирования регистра сведений "ГраницыЗапретаИзмененияДанных". Устанавливать надо дату запрета для каждой организации. Делать это может только пользователь с полными правами.

В штатной форме установки даты запрета редактирования есть три режима: ОбщаяДата, ПоОрганизациям и ПоОрганизациямИПользователям. Но режим ОбщаяДата соответствует не одной записи с пустой организацией и пользователем (как можно было бы предположить исходя из здравого смысла), а набору записей для всех организаций базы данных с одинаковой датой запрета редактирования. Поэтому надо заводить записи по всем организациям. Записи с пустой организацией в этот регистр вводить не надо, они ни на кого не подействуют.

На пользователей такое изменение подействует при следующем их входе в базу данных. Многим этого будет вполне достаточно.


2. Как в типовой бухгалтерии 2.0 сделать автоматический запрета редактирования вчерашнего дня при входе пользователей в систему?

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

Только в отличие от УТ 10.3 в БП 2.0 нет возможности вводить новые дополнительные права пользователей, с помощью которых можно отделить пользователей, для которых будет действовать механизм запрета, от тех, на кого он действовать не будет. Поэтому действовать он будет на всех без исключения. Но это даже и лучше !

Но если при входе в систему будет автоматически закрываться предыдущий день для всех, как же редактировать прошлые периоды, если будет очень нужно ?

Ну во-первых есть возможнось отключить флажок "Использовать дату запрета для полных прав" и редактировать прошлые периоды. Но это сможет сделать только пользователь с полными правами. И он обязательно должен не забыть вернуть флажок на место.

Но лучше мы будем устанавливать запрет редактирования вчерашнего дня не при входе в систему, а при выходе из нее. То есть при входе дата запрета для пользователя изменяться не будет. Тогда при необходимости редактировать прошлые периоды пользователь должен выйти из базы, подойти к уполномоченному пользователю с полными правами (главбуху), тот, пользуясь рекомендациями пункта 1, через регистр сведений установит для нужного пользователя по нужной организации (и для самой нужной организации) нужную дату запрета и все (то есть надо будет изменить две даты: у организации и у пользователя по этой организации). Теперь пользователь может снова войти в базу и делать изменения в прошлых периодах, а при выходе из базы для него опять закроется период по вчерашний день включительно.

Вроде все красиво. Сегодня 11.11 пользователь с утра зашел в базу, поработал, вышел из базы - для него закрылся период по 10.11 включительно. Завтра, 12.11 он войдет в базу, для него будет открыт период по 10.11 включительно, выйдет - закроется по 11.11 включительно. 12.11 останется открытым.

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

2.1 Делаем изменения в конфигурации.

К сожалению, придется включить возможность изменения конфигурации. Конечно, не хочется снимать бухгалтерию с поддержки, но ... Разработчиков убедить делать что-то в БП 2.0 теперь уже невозможно, когда 3.0 уже есть.

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

 

Добавляем новый общий модуль "АЦРК_Привилегированный", в свойствах модуля устанавливаем флажки "Сервер", "Вызов сервера" и "Привилегированный".

Вот текст модуля:

=======

Процедура ЗакрытиеПредыдущегоДня(п_ОтступВДнях=1) Экспорт
    л_ПользовательОпределен = ЗначениеЗаполнено(ПараметрыСеанса.ТекущийПользователь);

    л_ВыборкаОрганизаций = Справочники.Организации.Выбрать();
    Пока л_ВыборкаОрганизаций.Следующий() Цикл
        л_Запись = РегистрыСведений.ГраницыЗапретаИзмененияДанных.СоздатьМенеджерЗаписи();
        л_Запись.Организация = л_ВыборкаОрганизаций.Ссылка;
       Если л_ПользовательОпределен Тогда
           л_Запись.Пользователь = ПараметрыСеанса.ТекущийПользователь;
       Иначе
       КонецЕсли;
       л_Запись.ГраницаЗапретаИзменений = НачалоДня(НачалоДня(ТекущаяДата())-п_ОтступВДнях*60*60*24);
       л_Запись.Записать();

       л_Запись = РегистрыСведений.ГраницыЗапретаИзмененияДанных.СоздатьМенеджерЗаписи();
       л_Запись.Организация = л_ВыборкаОрганизаций.Ссылка;
       л_Запись.Пользователь = "";
       л_Запись.ГраницаЗапретаИзменений = КонецГода(КонецДня(ТекущаяДата())+60);
       л_Запись.Записать();
   КонецЦикла;

   ПолныеПрава.УстановитьПараметрГраницыЗапретаИзмененияДанных();
КонецПроцедуры

=======

Теперь откроем модуль обычного приложения, найдем процедуру ПриЗавершенииРаботыСистемы() и перед ее окончанием вставим строку

    АЦРК_Привилегированный.ЗакрытиеПредыдущегоДня(1); //АЦРК

 

ВСЕ.

Параметр в процедуре ЗакрытиеПредыдущегоДня() определяет, на сколько дней дата запрета будет отставать от текущей даты.

Теперь дата запрета редактирования будет автоматически продвигаться вперед для каждого пользователя и будет отставать на 1-2 дня от текущей даты.

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

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

 

 

См. также

Информационная безопасность Пароли Платформа 1С v8.3 Бесплатно (free)

Все еще храните пароли в базе? Тогда мы идем к вам! Безопасное и надежное хранение секретов. JWT авторизация. Удобный интерфейс. Демо конфигурация. Бесплатно.

30.05.2024    7830    kamisov    19    

62

Информационная безопасность Программист Платформа 1С v8.3 Бесплатно (free)

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

27.02.2024    10483    PROSTO-1C    10    

40

Информационная безопасность Программист Платформа 1С v8.3 Абонемент ($m)

Интеграционные решения стали неотъемлемой частью нашей жизни. Правилом хорошего тона в современных приложениях является не давать интегратору доступ к чувствительным данным. Device flow позволяет аутентифицировать пользователя, не показывая приложению чувствительные данные (например: логин и пароль)<br> Рассмотрим Device flow аутентификацию, в приложении, на примере OpenID провайдера Yandex.

1 стартмани

27.10.2023    2879    platonov.e    1    

23

Информационная безопасность Системный администратор Платформа 1С v8.3 1C:Бухгалтерия Россия Абонемент ($m)

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

5 стартмани

24.04.2023    6654    22    soulner    8    

33

Информационная безопасность Системный администратор Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

1С, начиная с версии платформы 8.3.21, добавили в систему возможность двойной аутентификации. Как это работает: в пользователе информационной базы появилось свойство «Аутентификация токеном доступа» (АутентификацияТокеномДоступа во встроенном языке), если установить этот признак и осуществить ряд манипуляций на встроенном языке, то появляется возможность при аутентификации отправлять HTTP запросы, которые и реализуют этот самый второй фактор. Данное расширение позволяет организовать двухфакторную аутентификацию с помощью электронной почты или мессенджера Telegram.

2 стартмани

08.12.2022    7939    55    Silenser    12    

24

Информационная безопасность Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

От клиента клиенту, от одной системы к другой, мы вновь и вновь встречаем одни и те же проблемы и дыры в безопасности. На конференции Infostart Event 2021 Post-Apocalypse Виталий Онянов рассказал о базовых принципах безопасности информационных систем и представил чек-лист, с помощью которого вы сможете проверить свою систему на уязвимость.

26.10.2022    11570    Tavalik    46    

117
Оставьте свое сообщение