Как сделать блокировку записи регистра сведений при её редактировании в форме записи?

Заблокировать данные регистра сведений для редактирования

Доброго времени суток, уважаемые посетители! На нашем сайте уже не раз уделялось внимание
работе с регистрами сведений. Например уже было написано Как открыть форму записи регистра сведений из строки табличного поля? или Как в регистре сведений обеспечить уникальность каждой записи? Кроме того были написаны небольшие заметки в статье, связанной с примерами работы в 1С здесьтут и здесь.


Заблокировать данные регистра сведений для редактирования

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

Чтобы запретить доступ к записи, которую уже кто-то редактирует, то её нужно блокировать. Для этого воспользуемся двумя функциями для работы с информационными базами ЗаблокироватьДанныеДляРедактирования и РазблокироватьДанныеДляРедактирования. В форме записи регистра сведений напишем следующий код:

Перем КлючУникальностиФормы, КлючРегистра;

Функция ПолучитьКлючЗаписиРегистраСведений()
// У вас может быть другой регистр сведений и
// соответственно другие измерения
ТекСтрока = РегистрСведенийМенеджерЗаписи;
Отбор1 = Новый Структура;
Отбор1.Вставить(“Период”, ТекСтрока.Период);
Отбор1.Вставить(“Ответственный”, ТекСтрока.Ответственный);
Отбор1.Вставить(“Направление”, ТекСтрока.Направление);
Отбор1.Вставить(“Приоритет”, ТекСтрока.Приоритет);
Отбор1.Вставить(“Счетчик”, ТекСтрока.Счетчик);
Рег = РегистрыСведений.СписокДел;
Возврат Рег.СоздатьКлючЗаписи(Отбор1);
КонецФункции

Процедура ПриОткрытии()
ЗаблокироватьДанныеДляРедактирования(КлючРегистра, , КлючУникальностиФормы);
КонецПроцедуры

Процедура ПриЗакрытии()
РазблокироватьДанныеДляРедактирования(КлючРегистра, КлючУникальностиФормы);
КонецПроцедуры

КлючРегистра = ПолучитьКлючЗаписиРегистраСведений();
КлючУникальностиФормы = Новый УникальныйИдентификатор;

Теперь, после сохранения кода, если пользователь №1 будет редактировать запись регистра сведений,
пользователь №2 не сможет этого сделать, так как запись будет заблокирована и
появится примерно такое сообщение:

Запрет редактирования заблокированной записи регистра сведений

Пользователь №2 сможет редактировать запись только после закрытия формы записи регистра сведений пользователем №1.


Этот блог читают уже более 3000 человек
- читай и ТЫ!

10 ответы
  1. Ангелина says:

    Во во! У нас на работе совсем недавно была такая ситуация, что одновременно аж три пользователя стали редактировать одну и ту же запись.. После этого случая стали искать как делается блокировка записей. Сейчас все работает нормально, с вашей конечно же помощью 🙂

    Ответить
  2. Softmaker
    Softmaker says:

    Здравствуйте, Ангелина! Рад, что вам помогло объяснение о том, как сделать блокировку записи регистра сведений!

    Ответить
  3. Наталья says:

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

    Ответить
  4. Softmaker
    Softmaker says:

    Здравствуйте, Ангелина! То что блокировка записей должна делаться в обязательном порядке, не совсем так. Но рад, что вы всё сделали как надо.

    Ответить
  5. Максим says:

    регистр сведений стал осваивать совсем недавно. В связи с этим вопрос: если уже произошло редактирование записи двумя пользователями, как то можно посмотреть \\\"перетертое\\\" значение? Или такая информация нигде не сохраняется?

    Ответить
  6. Softmaker
    Softmaker says:

    Максим, если в регистре сведений такое произошло, то восстановить не удастся! Нигде значение не сохраняется.

    Ответить
  7. Максим says:

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

    Ответить
  8. Softmaker
    Softmaker says:

    Да, Максим, ничего не поделаешь с этим в регистрах сведений, но блокировка поможет. Рад помочь в освоении системы 1С:Предприятие.

    Ответить
  9. Рустам says:

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

    Ответить

Ответить

Want to join the discussion?
Feel free to contribute!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *