1с дата запрета в привилегированном режиме
Дата запрета редактирования данных — стандартная функция конфигураций 1С 8.3, использующих библиотеку стандартных подсистем (БСП). Данный механизм позволяет задавать ограничения для редактирования, добавления, удаления и проведения документов ранее определенной даты. Иначе говоря, позволяет закрыть период для редактирования. Запрет можно устанавливать как в целом во всей программе. Так и по отдельным объектам, например, по организациям. Так же его можно установить для определенных пользователей. Как правило, настраивает и определяет даты запрета, главный бухгалтер или администратор системы, либо иной пользователь с полными правами доступа.
Устанавливать дату запрета приходится так как очень часто возникает ситуация, когда кто-либо из пользователей «случайно» открыл, перепровел или вообще изменил документ закрытого периода. В результате, как минимум придется восстанавливать последовательность документов и перезакрывать месяц, а это в свою очередь может привести к разночтениям в текущих данных и данных отраженных в регламентированных отчетах. В оперативном или управленческом учете, могут появиться расхождения, в том числе и отрицательные остатки. Поэтому внесение корректировок в старые периоды должно делаться аккуратно и только при необходимости.
На что влияет дата запрета
После установки запрета редактирования будет запрещено изменение, проведение и удаление документов. Таким образом, дата запрета
- не позволяет записать существующий документ с датой, входящей в период запрета
- запрещает сохранить новый документ с датой, входящей в период ограничений
- не позволяет удалить документы, помеченные на удаление, с датой, входящей в запрещенный период
Обратите внимание, дата запрета распространяется только на документы, но не на справочники и регистры сведений. Поэтому некоторые реквизиты, хранящиеся «вне документов» можно поменять. Например, статусы счетов или информацию об оригиналах документов при желании можно поменять.
Простая настройка даты запрета
Для включения функции запрета редактирования необходимо перейти в раздел Администрирование (Администрирование и НСИ) – Настройки пользователей и прав. На открывшейся форме необходимо включить флажок Даты запрета изменения и перейти по ссылке Настроить.
Самой простой является настройка общей даты запрета для всех пользователей. При такой настройке никто, даже вы сами, не сможете изменить документы в закрытом периоде. Для их корректировки придется отключать или изменять дату запрета. Данная настройка является наиболее широкой. Она эффективно страхует от случайных, в том числе и собственных ошибок.
Общие ограничения по пользователям
Когда требуется назначить ограничения для определенных пользователей, необходимо перейти на вкладку По пользователям. Далее необходимо указать с помощью кнопки Подобрать нужных пользователей. Таким образом, можно настроить даты запретов в зависимости от компетенции и должности того или иного пользователя системы. Например, бухгалтеры могут использовать более широкий период для коррекции, чем, скажем, кладовщики.
Ограничения по разделам и объектам
Важной настройкой ограничений является возможность установки запрета на определенные разделы и объекты учета. В поле Указывать дату запрета доступны следующие значения:
- Общая дата – дата запрета задается для всех данных.
- По разделам – для каждого раздела программы устанавливается своя дата запрета. При этом становится доступным список, в который можно добавлять Разделы и указывать для каждого раздела свое значение даты запрета.
- По разделам и объектам – даты запрета задаются и в разрезе разделов, и в разрезе объектов. Для каждого объекта устанавливается своя дата запрета. Если выбрано это значение, то становится доступным список, в который можно добавлять объекты и указывать для каждого объекта свое значение даты запрета.
Например, способ указания по разделам и объектам, можно использовать, когда в системе ведется учет по нескольким организациям. Поэтому, если вы хотите настроить запрет только определенным организациям, а для других хотите оставить возможность корректировки, необходимо выбрать именно этот способ. Таким образом, для настройки запрета изменений для интересующей вас организации в таблице разделов достаточно выбрать нужный раздел и нажать на кнопку Подобрать. Далее нужно указать организации, запрет по которым необходимо установить.
Таким способом можно настроить схему для разветвленной структуры предприятия.
Настройка автоматической установки даты запрета
Установка фиксированного значения даты запрета требует постоянного контроля. Другими словами, придется постоянно менять ее вручную. В 1С есть возможность настройки автоматического обновления даты запрета в соответствии с заданными параметрами. Например, можно настроить регулярное изменение даты запрета. Система будет автоматически продлевать даты запрета редактирования данных. Привязка может быть установлена к концу прошлого года, прошлого квартала, прошлого месяца, прошлой недели или предыдущему дню.
Для настойки автоматического формирования даты запрета необходимо перейти по ссылке «Больше возможностей». Там же, можно дополнительно установить отсрочку в днях для запрета.
Комбинация ограничений по пользователям и объектам
Как уже писалось выше, устанавливать запреты можно для конкретных пользователей. При этом для них существует возможность настройки индивидуальных ограничений по разделам и объектам. Такие ограничения описываются аналогично, с той лишь разницей, что заполнять их нужно для каждого пользователя.
Сброс и отключение дат запрета
Сбросить установленные настройки можно выбором пункта «Не установлена» в строке дата запрета. Для полного отключения всех установленных дат запрета редактирования, достаточно снять флажок «Даты запрета изменения»
Особенности использования.
Обратите внимание, что на данные хранящиеся в справочниках и некоторых регистрах установка даты запрета редактирования не влияет. Поэтому их изменение может привести к искажению отраженных ранее показателей, даже при установленной дате запрета. Разработчики стараются контролировать изменение таких показателей, поэтому на предупреждения которые выдает система, всегда стоит обращать внимание.
Тем не менее, некоторые показатели можно изменить без последствий. Например статусы оплаты и отгрузки счетов на оплату. Сделать это можно непосредственно в журнале счетов, выбрав соответствующую команду в контекстном меню.
На этом все. Приятной и удобной работы!
Подписывайтесь на наши группы в социальных сетях, чтобы не пропустить новые публикации.
Доброе утро! Возник такой вроде бы простенький вопрос, но который решить никак не удается. Вообщем перейдем к сути: В форме списка документа я добавил кнопку которая вызывает форму изменения комментария, я получаю нужное мне значения, но записать этот документ я никак не могу, программа ругается: "Редактирование данных этого периода запрещено. Изменения не могут быть записаны. ". как обойти эту ошибку?
Дарю рабочий код:
УстановитьПривилегированныйРежим(истина); вот решение проблемы и границы все как надо устанавливаются!
Вот сам код:
ТекСтрока = ЭтаФорма.ЭлементыФормы.ДокументСписок.ТекущаяСтрока;
ТекОбъект = ТекСтрока.ПолучитьОбъект();
ТекОбъект.ОбменДанными.Загрузка = Истина;
ТекОбъект.Записать(РежимЗаписиДокумента.Запись);
Режим ОбменДанными.Загрузка ничего не даст, так как проверка вынесена в подписку на событие "ПриЗаписи" и в процедуре подписки режим обмена данными не проверяется.
Как вариант решения: перед записью документа сдвигать дату запрета для текущего пользователя , а потом возвращать обратно. Для текущего пользователя границы даты запрета лежат в параметрах сеанса.
(7) Это точно так происходит?? Потому что я в бухгалтерии 3.0 так делал у меня прокатило!
А вот в УТ 10.3 нифига!
Дарю рабочий код:
(18) "Не прокатывает" означает, что комментарий не меняется у документа или что по-прежнему ругается на период?
(25) Говорили, что ругается на период, теперь про права говорите. Покажите, текст, который дает программа.
Столкнулся с такой проблемой в УТ 10.3. платформа 8.1.
Привилегированный режим установить по "УстановитьПривилегированныйРежим(истина); " не получается. Не поддерживает платформа данный метод.
Привилегированный режим можно установить только на общем модуле конфигурации. Каким и является модуль "ПолныеПрава". Повторюсь, делаю на УТ 10.3 платформа 8.1.
Благодаря разработчикам этой конфигурации, они добавили пару строк в процедуру установки даты запрета, а именно:
Написал обработку содержащую следующий код, который выполнил отмену проведения документа в закрытом периоде:
Суть алгоритма тот же. Скинуть дату запрета в параметре сеанса, после сделать манипуляции с документом и обратно восстановить дату запрета в параметре сеанса.
Дата запрета редактирования данных — стандартная функция конфигураций 1С 8.3. Данный механизм позволяет задавать ограничения для редактирования, добавления, удаления и проведения документов ранее определенной даты. Иначе говоря, позволяет закрыть период для редактирования . Запрет можно устанавливать как в целом во всей программе. Так и по отдельным объектам, например, по организациям. Так же его можно установить для определенных пользователей.
На что влияет дата запрета
После установки запрета редактирования будет запрещено изменение, проведение и удаление документов. Таким образом, дата запрета
Простая настройка даты запрета
Для включения функции запрета редактирования необходимо перейти в раздел Администрирование (Администрирование и НСИ) – Настройки пользователей и прав . На открывшейся форме необходимо включить флажок Даты запрета изменения и перейти по ссылке Настроить .
Самой простой является настройка общей даты запрета для всех пользователей. При такой настройке никто, даже вы сами, не сможете изменить документы в закрытом периоде. Для их корректировки придется отключать или изменять дату запрета.
Общие ограничения по пользователям
Когда требуется назначить ограничения для определенных пользователей, необходимо перейти на вкладку По пользователям. Далее необходимо указать с помощью кнопки Подобрать нужных пользователей. Таким образом, можно настроить даты запретов в зависимости от компетенции и должности того или иного пользователя системы.
Ограничения по разделам и объектам
Важной настройкой ограничений является возможность установки запрета на определенные разделы и объекты учета. В поле Указывать дату запрета доступны следующие значения:
- Общая дата – дата запрета задается для всех данных.
- По разделам – для каждого раздела программы устанавливается своя дата запрета. При этом становится доступным список, в который можно добавлять Разделы и указывать для каждого раздела свое значение даты запрета.
- По разделам и объектам – даты запрета задаются и в разрезе разделов, и в разрезе объектов. Для каждого объекта устанавливается своя дата запрета. Если выбрано это значение, то становится доступным список, в который можно добавлять объекты и указывать для каждого объекта свое значение даты запрета.
Например, способ указания по разделам и объектам , можно использовать, когда в системе ведется учет по нескольким организациям.
Зачастую находится кто-то «влезающий» в прошлый период и исправляющий документы, что приводит к изменению данных. Даже просто зайдя в документ, но при этом закрыв его не через кнопку «Закрыть», а через «Ок», можно изменить последовательность документов. Чтобы избежать подобных ситуаций в программах 1С можно воспользоваться функцией «Дата запрета изменения данных», которая не позволяет совершать любые действия с файлами в определенный промежуток времени. Запрет может распространяться на всю программу или на определенных сотрудников, а также на конкретную компанию.
Запрет также может устанавливаться автоматически при проведении операции «Свертка информационной базы». Если нужно внести правки в документ, необходимо поменять или убрать дату.
На образце 1С:Бухгалтерия предприятия 3.0, созданной для автоматизации бухгалтерского учета 1С:Предприятие, рассмотрим установку или удаление «Даты изменения данных». Данная инструкция подойдет и другим конфигурациям 1С 8.3, созданным на этой же платформе: конфигурации 1С:Управление торговлей 11, 1С:ERP 2.0, 1С:ЗУП ПРОФ, КОРП и Базовая, 1С:Зарплата и кадры государственного учреждения, а также другие.
Важно отметить, что только администратор может изменить дату, запрещающую изменение данных, или пользователи должны иметь «Право на изменение даты запрета редактирования».
Как установить дату запрета изменения данных в 1С
Зайдите в «Администрирование-Настройки пользователей и прав».
Откройте окно настроек и активируйте установку даты.
В 1С Бухгалтерия 8.3 можно найти настройку даты запрещения редактирования по ссылке с соответствующим названием. Тут мы имеем возможность установить дату для всех сотрудников или только для конкретных. Если редактировать дату без дополнительных настроек, то данные будут недоступны для редактирования для всех. В данной ситуации необходимо установить «Общую дату». Этим вариантом зачастую пользуются на практике.
В этом же окне (запрет для всех), зайдя в другие возможные способы указания даты, можно задать дополнительные настройки даты по разделам учета и по объектам учета (организациям).
При выборе опции «Указывать дату запрета: «По разделам», откроется настройка разделов учета, в которых можно установить запрет на раздел «Бухучет» или на «Обработку персональных данных».
Если вы выбрали способ настройки по разделам или объектам, то вам необходимо выбрать раздел и с помощью кнопки «Подобрать» выбрать организацию, по отношению к которой будет установлена дата, из появившегося окна. Так мы разделили «Дату запрета» между компаниями. Этот метод можно использовать, если пользователям одной компании нужен доступ к документам, хотя пользователи другой компании уже отправили все отчеты и данные уже запрещено изменять.
Компания-аутсорсер, которая оказывает бухгалтерские услуги по ведению учета организациям, у которых нет своей бухгалтерии, может послужить отличным примером. Аутсорсеры обычно ведут учет всех своих пользователей в одной базе и им удобно пользоваться «Датой» для их разделения.
Подберите объекты для учета, то есть компании из списка и задайте им отдельные даты.
Нажмите на опцию «Отключить» и сбросьте настройки.
Откройте окно «По пользователям», где вы сможете поставить отдельные запреты для всех пользователей программы. Однако изначально стоит настройка «Для всех пользователей». Измените ее, кликнув на «Подобрать». Таким образом, вы определяете группы и для каждой из них устанавливаете свои настройки при необходимости.
Например, когда основному бухгалтеру нужно открыть доступ к документам, а у других сотрудников оставить запрет, необходимо установить определенные настройки. Надо указать сотрудника с определенной датой (для других можно оставить «По умолчанию»): выделите фамилию и в окно «Настройка» установите дату специально для него.
Также эта настройка содержит сочетание настроек даты по разделам и объектам, которые мы рассматривали ранее для всех пользователей.
Формирование отчета о настройках даты
Нажмите на «Отчет», далее сформируйте список настроек, которые будут описывать параметры редактирования запрета каждого сотрудника.
В примере рассматривается ситуация, когда для Бухгалтер 1 и Бухгалтер 2 были подобраны даты запрета, а для остальных сотрудников компании настройки остались прежними.
Установка «динамической» даты запрета
Установка даты собственными руками не всегда является самым удобным вариантом, так как от человека требуется постоянный контроль настроек дат. Однако в программе 1С есть возможность использования механизма автоматического изменения даты.
Важно знать, что при выставлении даты запрета, система предлагает выбрать - конец прошлого года, квартала, месяца, недели или установить дату запрета на предыдущий день. В подобной ситуации программа автоматически подберет эту дату. Этими значениями можно воспользоваться в общей настройке и индивидуальной.
На практике файлы вносят в информационную базу на протяжении еще какого-либо промежутка времени, по завершению периода (месяца, квартала, года), поэтому такая автоматическая настройка даты является удобным методом. Вы можете поставить отсрочку на необходимое количество дней, система даст вам доступ к внесению данных в это время. В нашей ситуации мы установили срок отсрочки размером в пять дней.
Дата запрета загрузки данных из других программ 1С
Часто происходит так, что документы и операции в «1С:Бухгалтерия» загружаются из других сервисов, например, из «Зарплата и управление персоналом», «Управление торговлей». В программу «Бухгалтерия государственных учреждений» загружается из системы «Зарплата и кадры государственных учреждений». И может произойти ситуация, когда сотрудники сдали все отчеты, закрыли период, а эти данные загружаются заново при синхронизации, при этом мешая правильному функционированию уже обработанных документов.
Чтобы подобных неполадок не возникало, в программу 1С был установлен механизм «Дата запрета загрузки данных». Его настройкой можно заняться в окне меню «Администрирование-Синхронизация данных».
Для выполнения этого действия необходимо кликнуть на галку «Синхронизация данных» и «Даты запрета загрузки».
Для выполнения настройки нужно следовать шагам, которые были прописаны выше.
Установленный запрет не позволит внести изменения в документы, которые были введены раньше этой даты. При попытках сохранения или создания документа, который был создан ранее указанной даты, система оповестит вас об ошибке.
Вы узнали, как работает функция запрета в программах на платформе 1С. Если вам не хватило этой информации или возникли вопросы по программе, а также если вам нужна помощь программистов, обратитесь за консультацией к специалистам 1С.
Хотите получать подобные статьи по четвергам?
Быть в курсе изменений в законодательстве?
Подпишитесь на рассылку
В этой статье описывается усовершенствованная технология автоматической установки даты запрета редактирования
Во-первых, можно определить несколько стратегий запрета редактирования с разными параметрами. Например, запрет в днях, запрет доступа в предыдущие месяцы кварталы и т.п., с указанием отступа от текущей даты.
То есть для некоторых пользователей (рядовых менеджеров) при входе в базе будет устанавливаться запрет по вчерашний день, для других (старших менеджеров) на 5 дней назад, для третьих (администраторов базы или руководителей отдела) — запрет предыдущего месяца с отступом в 10 дней..
Во-вторых, запрет будет устанавливаться для ВСЕХ без исключения пользователей базы данных. Для самых привилегированных это будет максимальная глубина, но запрет будет установлен.
Управление этой системой осуществляется через механизм дополнительных прав пользователей.
При необходимости пользователь с полными правами может открыть для себя закрытый период, но только на текущий сеанс работы.
Многовариантный автоматический запрет редактирования
(для конфигурации УТ 10.3)
В этой статье описывается усовершенствованная технология автоматической установки даты запрета редактирования
Во-первых, можно определить несколько стратегий запрета редактирования с разными параметрами. Например, запрет в днях, запрет доступа в предыдущие месяцы кварталы и т.п., с указанием отступа от текущей даты.
То есть для некоторых пользователей (рядовых менеджеров) при входе в базе будет устанавливаться запрет по вчерашний день, для других (старших менеджеров) на 5 дней назад, для третьих (администраторов базы или руководителей отдела) — запрет предыдущего месяца с отступом в 10 дней..
Во-вторых, запрет будет устанавливаться для ВСЕХ без исключения пользователей базы данных. Для самых привилегированных это будет максимальная глубина, но запрет будет установлен.
Вообще идея автоматического продвижения даты запрета редактирования для всех пользователей кажется мне очень удачной. Мне представляется, что все экономические программы, в том числе все конфигурации на 1С, должны автоматически передвигать дату запрета редактирования с течением времени.
Сейчас мы имеем ситуацию, когда администратор базы должен периодически предпринимать некоторые действия, чтобы передвинуть вперед дату запрета редактирования, например, после составления отчетности за очередной месяц. Но администратор может забыть, заболеть, уволиться, наконец. А новый администратор не сразу вообще поймет важность этого действия по установке даты запрета. А в результате имеем многие проблемы с данными в реальных базах.
А должно быть так, чтобы программа сама, без всяких действий со стороны пользователя, передвигала с течением времени дату запрета для всех пользователей, кому ежедневно, кому ежемесячно (ежеквартально, ежегодно). А уж если надо залезть в закрытый период, то это должны делать только уполномоченные опытные пользователи, которые для этого смогут отодвинуть дату запрета только для себя и только на текущий сеанс работы. А после нового входа в базу дата запрета должна опять установиться автоматически.
В популярной конфигурации «1 С:Управление торговлей 10.3 » есть механизм установки запрета редактирования по пользователям базы данных.
Но практический опыт показал, что этого мало. Некоторым пользователям закрывать предыдущий день не надо, значит для них база остается открытой. По хорошему должен быть администратор базы, который выполняет регламентные операции, в том числе должен и устанавливать запрет редактирования для всех пользователей. Например, после закрытия месяца надо передвинуть дату запрета на месяц вперед. На практике такой администратор об этом, конечно, знает, но часто не делает: всегда найдется много причин, по которым надо отложить эту передвижку даты запрета, а потом про это и вовсе забывают. База остается открытой для изменения (не всеми пользователями, но все же), что приводит к нехорошим последствиям, например при наличии обменов информацией с другими базами. По хорошему запрет редактирования должен быть установлен для ВСЕХ пользователей. Ну а иногда администратора такого и вовсе нет.
В этой статье описывается усовершенствованная технология автоматической установки даты запрета редактирования
Во-первых, можно определить несколько видов закрываемого периода: день, месяц, квартал и т.п. Думаю, что достаточно дня и месяца, желающие могут доработать для квартала, года и т.д.
Во-вторых, можно определить несколько величин отступа от текущей даты в днях для закрытия предыдущего периода: например, 0 и 10 дней. То есть для некоторых пользователей предыдущий период будет закрываться прямо сегодня, для других — через 10 дней. Если закрываемый период день, то при отступе 0 дней при входе в базу будет закрыт период по предыдущий день включительно, а при отступе 10 дней — по дату на 10 дней меньше текущей. Если закрываемый период месяц, то в первом случае предыдущий месяц закроется первого числа очередного месяца, а во втором случае — 10-го числа
В-третьих, запрет будет устанавливаться ДЛЯ ВСЕХ ПОЛЬЗОВАТЕЛЕЙ базы данных. Для самых привилегированных это будет максимальная глубина из всех предусмотренных, но запрет будет установлен.
Управление этой системой осуществляется через механизм дополнительных прав пользователей.
Задача.
Требуется доработать конфигурацию таким образом, чтобы при входе любого пользователя в систему для него автоматически закрывался для редактирования некоторый период согласно сделанным в базе настройкам. Эти настройки должны задаваться с помощью механизма дополнительных прав пользователей. При этом уполномоченные пользователи должны иметь возможность открыть для редактирования любой период при необходимости.
Решение.
1. Вводим дополнительные права пользователя.
Все новые дополнительные права должны иметь вид «Автоматически НЕ закрывать предыдущий : N», где N — величина отступа от текущей даты в днях, положительное число, а может принимать значения «день» и «месяц» (желающие могут добавить еще и «квартал» и «год»).
Например, введем три дополнительных права:
Автоматически НЕ закрывать предыдущий день: 0
Автоматически НЕ закрывать предыдущий день: 5
Автоматически НЕ закрывать предыдущий месяц: 0
Автоматически НЕ закрывать предыдущий месяц: 10
Названия всех прав должны начинаться с текста « Автоматически НЕ закрывать предыдущий : », за которым должно следовать число дней (больше 0).
Работать с дополнительными правами пользователей могут только пользователи с полными правами.
В режиме Предприятие открываем меню « Операции / Планы видов характеристик / Права пользователей »
Добавляем новое право: « Автоматически НЕ закрывать предыдущий день: 0 », тип значения – Булево (составной тип отменяется). Во избежание возможных эксцессов при последующих обновлениях код нового элемента лучше установить в «1000», например. Разработчики конфигурации при пополнении списка новыми предопределенными характеристиками вряд ли дойдут до такого кода.
Копируем это право и переименовываем в « Автоматически НЕ закрывать предыдущий период: 5 ». Копируем еще раз и переименовываем в « Автоматически НЕ закрывать предыдущий месяц: 0 » . И еще раз копируем и переименовываем в « Автоматически НЕ закрывать предыдущий месяц: 10 »
Теперь в меню « Сервис / Пользователи / Настройка дополнительных прав пользователей » появились новые флажки, которые можно устанавливать пользователям.
Установка флажка отменяет закрытие соответствующего периода, значит для нового пользователя будет закрываться максимально возможный период — по вчерашний день включительно.
2. Дорабатываем конфигурацию
Добавляем новый ПРИВИЛЕГИРОВАННЫЙ общий модуль. Назовем его, например, « АЦРК_Привилегированный ». В свойствах модуля должны быть установлены галочки « Привилегированный », « Вызов сервера » и « Сервер ».
В этом модуле должны быть следующая процедура:
Процедура ЗакрытиеПредыдущегоПериода() Экспорт
л_ПрефиксДополнительногоПрава1 = «Автоматически НЕ закрывать предыдущий день:»;
л_ПрефиксДополнительногоПрава2 = «Автоматически НЕ закрывать предыдущий месяц:»;
л_ТекущийПользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
Запрос = Новый Запрос;
Запрос.Текст = «ВЫБРАТЬ
| ПраваПользователей.Ссылка КАК ДополнительноеПраво,
| ПраваПользователей.Наименование КАК НаименованиеДополнительногоПрава,
| ЕСТЬNULL(ЗначенияДополнительныхПравПользователя.Значение, ЛОЖЬ) КАК ЗначениеДополнительногоПрава
|ИЗ
| ПланВидовХарактеристик.ПраваПользователей КАК ПраваПользователей
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияДополнительныхПравПользователя КАК ЗначенияДополнительныхПравПользователя
| ПО (ЗначенияДополнительныхПравПользователя.Право = ПраваПользователей.Ссылка)
| И (ЗначенияДополнительныхПравПользователя.Пользователь = &Пользователь)
|ГДЕ
| (ПраваПользователей.Наименование ПОДОБНО &Наименование1
| ИЛИ ПраваПользователей.Наименование ПОДОБНО &Наименование2)»;
Запрос.УстановитьПараметр(«Наименование1″, л_ПрефиксДополнительногоПрава1+»%»);
Запрос.УстановитьПараметр(«Наименование2″, л_ПрефиксДополнительногоПрава2+»%»);
Запрос.УстановитьПараметр(«Пользователь», л_ТекущийПользователь);
Результат = Запрос.Выполнить();
л_ТаблицаДополнительныхПрав = Результат.Выгрузить();
л_ТаблицаДополнительныхПрав.Колонки.Добавить(«ДатаЗапрета»,Новый ОписаниеТипов(«Дата»));
л_ТаблицаДополнительныхПрав.Колонки.Добавить(«ГлубинаЗапрета»,Новый ОписаниеТипов(«Число»));
л_МаксимальнаяГлубина = 0;
л_Сутки = 24*60*60;
Для Каждого л_СтрокаТЗ из л_ТаблицаДополнительныхПрав Цикл
л_НаименованиеДополнительногоПрава = л_СтрокаТЗ.НаименованиеДополнительногоПрава;
Если Найти(л_НаименованиеДополнительногоПрава,л_ПрефиксДополнительногоПрава1) > 0 Тогда
л_ПараметрДополнительногоПрава = СокрЛП(Сред(л_НаименованиеДополнительногоПрава,44));
л_СтрокаТЗ.ГлубинаЗапрета = Число(л_ПараметрДополнительногоПрава);
л_СтрокаТЗ.ДатаЗапрета = ТекущаяДата() — л_СтрокаТЗ.ГлубинаЗапрета*л_Сутки;
ИначеЕсли Найти(л_НаименованиеДополнительногоПрава,л_ПрефиксДополнительногоПрава2) > 0 Тогда
л_ПараметрДополнительногоПрава = СокрЛП(Сред(л_НаименованиеДополнительногоПрава,45));
л_СтрокаТЗ.ГлубинаЗапрета = Число(л_ПараметрДополнительногоПрава);
л_СтрокаТЗ.ДатаЗапрета = НачалоМесяца(ТекущаяДата() — л_СтрокаТЗ.ГлубинаЗапрета*л_Сутки) — 1;
КонецЕсли;
Если л_МаксимальнаяГлубина < л_СтрокаТЗ.ГлубинаЗапрета Тогда
л_МаксимальнаяГлубина = л_СтрокаТЗ.ГлубинаЗапрета;
КонецЕсли;
КонецЦикла;
л_МассивСтрокТЗ = л_ТаблицаДополнительныхПрав.НайтиСтроки(Новый Структура(«ГлубинаЗапрета»,л_МаксимальнаяГлубина));
Для Каждого л_СтрокаТЗ из л_МассивСтрокТЗ Цикл
// Для максимальной глубины запрет не может быть отменен
// то ест ьдля ВСЕХ пользователей будет действовать установка запрета редактирования, хотя бы на максимальную глубину
л_СтрокаТЗ.ЗначениеДополнительногоПрава = Ложь;
КонецЦикла;
л_ТаблицаДополнительныхПрав.Сортировать(«ЗначениеДополнительногоПрава Возр, ДатаЗапрета Убыв»);
Если л_ТаблицаДополнительныхПрав[0].ЗначениеДополнительногоПрава = Истина Тогда
// отменена установка запретов редактирования для всех глубин, то есть ничего для этого пользователя не делаем.
// такого не будет
л_УстановитьЗапрет = Ложь;
Иначе
л_УстановитьЗапрет = Истина;
л_ДатаЗапрета = КонецДня(л_ТаблицаДополнительныхПрав[0].ДатаЗапрета);
Если л_ДатаЗапрета >= КонецДня(ТекущаяДата()) Тогда
л_ДатаЗапрета = НачалоДня(НачалоДня(ТекущаяДата()) — 1);
КонецЕсли;
КонецЕсли;
Если л_УстановитьЗапрет Тогда
л_Запись = РегистрыСведений.ГраницыЗапретаИзмененияДанных.СоздатьМенеджерЗаписи();
л_Запись.Пользователь = л_ТекущийПользователь;
л_Запись.ГраницаЗапретаИзменений = л_ДатаЗапрета;
л_Запись.Записать();
//Сообщить(«Дата запрета = «+л_ДатаЗапрета);
КонецЕсли;
ПолныеПрава.УстановитьПараметрГраницыЗапретаИзмененияДанных();
КонецПроцедуры
Вставляем одну строку в модуль обычного приложения, перед окончанием процедуры « ПриНачалеРаботыСистемы »
Как это работает
Если ничего с дополнительными правами не делать, то ни для каких пользователей не будет отменена установка запрета редактирования. Значит будет устанавливаться запрет редактирования на минимальную глубину, в нашем примере 1 день, то есть по вчерашний день включительно.
Чтобы увеличить эту глубину для некоторых пользователей, надо установить для них флажок у соответствующих прав. Сделать это может уполномоченный пользователь. При этом следует учитывать, что запрет будет установлен на наименьшую глубину из всех не отмененных. Например, если установить только один флажок «Автоматически НЕ закрывать предыдущий день: 5», а флажок «Автоматически НЕ закрывать предыдущий день: 0» оставить не установленным, то окажется, что запрет редактирования предыдущего дня не отменен, он и будет установлен при входе пользователя в базу. То есть, если надо открыть для редактирования 5 дней или месяц, надо прежде всего установить флажок «Автоматически НЕ закрывать предыдущий день: 0».
ВАЖНО! период с максимальной глубиной запрета будет установлен в любом случае, даже если установить все флажки «Автоматически НЕ закрывать предыдущий …». В нашем примере 10-го числа очередного месяца будет гарантировано закрыт предыдущий месяц для ЛЮБОГО пользователя, вошедшего в базу, даже для того, у кого установлен флажок «Автоматически НЕ закрывать предыдущий месяц: 10».
Итак, когда пользователи утром заходят в базу данных, для них автоматически устанавливается запрет редактирования, каждому на свою глубину. В этом можно убедиться, посмотрев в меню « Сервис / Настройка учета / Установка даты запрета изменения данных ». На закладке « Основная дата » вы увидите записи по всем пользователям, работающим в базе данных.
Делать изменения в закрытом периоде смогут только пользователи с полными правами. Для этого такой пользователь должен выполнить следующие действия:
выбрать меню « Сервис / Настройка учета / Установка даты запрета изменения данных ». На закладке « Основная дата » отображаются записи по пользователям. Для себя пользователь может отодвинуть дату запрета на нужную дату, нажать кнопку « Установить » . Для него дата запрета редактирования отодвинется немедленно, в этом же сеансе работы. Можно производить изменения в закрытом периоде, с осознанием всех последствий.
Но как только такой пользователь выйдет из базы и снова в нее зайдет, для него снова установится дата запрета редактирования согласно настройкам дополнительных прав пользователя. И это хорошо.
Читайте также: