Запрет редактирования справочника 1с

Обновлено: 07.07.2024

Блокировка данных объекта для редактирования из кода

Область применения: управляемое приложение, обычное приложение.

1.1. Прежде чем изменять существующий объект информационной базы из кода на встроенном языке, следует предварительно его заблокировать (установить «блокировку данных для редактирования» или «объектную блокировку»), тем самым, во-первых, убедиться, не заблокирован ли он другими объектами, во-вторых, попытаться предотвратить его изменение другими пользовательскими сеансами (или другими экземплярами объекта в этом же сеансе).

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

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

1.2. Для блокировки данных для редактирования из встроенного языка следует вызывать метод объектов Заблокировать или метод глобального контекста ЗаблокироватьДанныеДляРедактирования .

«Не удалось заблокировать запись. Действие (изменение, удаление или блокировка записи) не выполнено. Ошибка блокировки объекта. Объект уже заблокирован: компьютер: <имя компьютера>, пользователь: <имя пользователя>, сеанс: <номер сеанса>, начат: <дата и время>, приложение: <тип клиентского приложения>».

Аналогичным образом, можно воспользоваться методом глобального контекста ЗаблокироватьДанныеДляРедактирования :

Пример № 2. Требуется пропустить обработку объекта, если он заблокирован для редактирования. При очередном вызове процедуры (например, из фонового или регламентного задания) будет предпринята повторная попытка изменения объекта.

ФайлОбъект = ТекущаяВерсия.ПолучитьОбъект();
// Выполнить блокировку объекта от изменения другими режимами или пользователями.
УстановитьПолноеНаименование = Истина;
Попытка
ФайлОбъект.Заблокировать();
Исключение
// в случае блокировки - не выполнять изменение объекта
УстановитьПолноеНаименование = Ложь;
// записать предупреждение в журнал регистрации
ЗаписьЖурналаРегистрации(НСтр("ru = 'Фоновое обновление имен файлов'", Метаданные.ОсновнойЯзык.КодЯзыка),
УровеньЖурналаРегистрации.Предупреждение,, ФайлОбъект, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;

// Пропустить обработку объекта, если он заблокирован.
Если УстановитьПолноеНаименование Тогда
ФайлОбъект.ПолноеНаименование = ПолноеНаименование;
ФайлОбъект.Записать();
КонецЕсли;

1.3. При редактировании данных в формах, платформа 1С:Предприятие автоматически устанавливает блокировку объекта, указанного в качестве основного реквизита формы.

2. Не следует проверять блокировку объектов для редактирования в следующих случаях:

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

При работе вы или другие пользователи часто открываете старые документы, для того, чтобы что-то посмотреть или проверить. Иногда, особенно в конце периода, при подготовке отчетности случайно можно поменять данные. Так же можно просто « случайно » перепровести старый документ. Напомню, что дата запрета у нас на текущий период еще не установлена. Изменения документов, включая даже простое перепроведение документа, могут привести к изменениям, которые сложно отловить, особенно если сразу не обратили на это внимание.

Рассмотрим несколько способов решения данной проблемы.

Использование даты запрета

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

Правильное закрытие документов

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

Использование расширения

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

Расширение предоставляет возможность включить режим «Только просмотр» для проведенных документов. Другими словами, когда вы открываете проведенный документ, вы не можете изменять данные на форме. Для того чтобы внести изменения, необходимо будет найти этот документ в списке и вызвав правой клавишей мыши контекстное меню, отменить его проведение. Таком образом, случайная ошибка при этом практически исключается.

Чтобы быстро найти нужный документ в списке можно использовать следующий метод: В открытой форме необходимого документа выбрать команду Еще. В открывшемся меню выбрать команду Показать в списке . Далее откроется список, текущей строкой в котором будет искомый документ. И уже здесь можно отменить проведение указанным выше способом

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

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

Второй режим, включает контроль для всех документов. Любые проведенные документы будут открываться в режиме «Только просмотр»

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

В заключение рассмотрим плюсы и минусы расширения.

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

Ознакомится с возможностями данного продукта вы также можете на странице расширения.

Напоминаю, что Вы всегда можете обратиться ко мне по любым вопросам связанными с доработкой и настройкой 1С

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

Видео инструкцию к данному материалу можно посмотреть в моем инстаграме

Дата запрета редактирования данных — стандартная функция конфигураций 1С 8.3. Данный механизм позволяет задавать ограничения для редактирования, добавления, удаления и проведения документов ранее определенной даты. Иначе говоря, позволяет закрыть период для редактирования . Запрет можно устанавливать как в целом во всей программе. Так и по отдельным объектам, например, по организациям. Так же его можно установить для определенных пользователей.

На что влияет дата запрета

После установки запрета редактирования будет запрещено изменение, проведение и удаление документов. Таким образом, дата запрета

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

Простая настройка даты запрета

Для включения функции запрета редактирования необходимо перейти в раздел Администрирование (Администрирование и НСИ) – Настройки пользователей и прав . На открывшейся форме необходимо включить флажок Даты запрета изменения и перейти по ссылке Настроить .

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

Общие ограничения по пользователям

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

Ограничения по разделам и объектам

Важной настройкой ограничений является возможность установки запрета на определенные разделы и объекты учета. В поле Указывать дату запрета доступны следующие значения:

  • Общая дата – дата запрета задается для всех данных.
  • По разделам – для каждого раздела программы устанавливается своя дата запрета. При этом становится доступным список, в который можно добавлять Разделы и указывать для каждого раздела свое значение даты запрета.
  • По разделам и объектам – даты запрета задаются и в разрезе разделов, и в разрезе объектов. Для каждого объекта устанавливается своя дата запрета. Если выбрано это значение, то становится доступным список, в который можно добавлять объекты и указывать для каждого объекта свое значение даты запрета.

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

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