3 принципа работы блокировок, о которых стоит знать каждому программисту 1С

Есть довольно понятная идея:

Если мы хотим, чтобы многопользовательская система работала быстро – нужно, среди прочего, подумать, как минимизировать ожидания на блокировках. Как только появляются ожидания – замедляется проведение документов.

Поэтому важно проектировать поведение системы на самых ранних этапах – до написания программного кода.

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

Это, увы, не так :)

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

Как это часто бывает, некоторые из этих нюансов в документации не описаны…

Длительность видео 9 минут – и оно того стоит.

Это же всегда неловкий момент, когда ты веришь, что что-то должно работать одним образом, а потом оказывается, что все совсем иначе :)

Тайминг ключевых моментов:

00:41 – постановка задачи
01:52 – демонстрация ожидания при управляемых блокировках
03:09 – первый принцип работы управляемых блокировок
04:40 – второй принцип работы управляемых блокировок
06:46 – третий принцип работы управляемых блокировок
07:37 – анализ причин ожидания на блокировках в решаемой задаче
08:47 – решение проблемы

Умение находить и устранять причины медленной и нестабильной работы систем на 1С - обязательно для программистов 1С

Чтобы Вы могли быстро и без ошибок решать эти задачи, мы выпустили курс «Ускорение и оптимизация 1С».

После курса Вы сможете:

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

Для кого этот курс

Вам нужен этот курс, если Вы хотите:
  • Писать код, за который не стыдно – в нестабильное время особенно важно быть в компании на хорошем счету
  • Быть востребованным специалистом – на каждом втором собеседовании спрашивают про умение оптимизировать 1С
  • Не терять клиентов из-за того, что «ваша 1С тормозит, а вы ничего не делаете» – это и раньше было нехорошо, а теперь и вовсе непозволительная роскошь.
Программа, стоимость и условия:
Ускорение и оптимизация работы 1С, Базовый курс
  • 16 учебных часов видео
  • 50 практических заданий
  • 3 месяца поддержки и доступа к ответам на вопросы
  • Пожизненный доступ к видео-урокам и учебным материалам

Комментарии / обсуждение (46):

  1. Антон

    Благодарю за понятное, наглядное объяснение!
    Всегда представлял в табличном виде. И вот наткнулся на неожиданное для меня поведение.
    И вот сегодня я прозрел! :)

    • Анна Бортникова

      Здравствуйте, Антон! Рады, что материал был полезен! Передали Ваши слова автору!
      Будет здорово, если Вы поделитесь этой статьей с коллегами, возможно, кто-то из них тоже получит новые знания ;)

  2. gusenica1337

    Актуальна ли данная статья на текущий день? Просто об этом как будто бы нигде не рассказывается в том числе и на сайте ИТС и в курсах от Учебного центра 1с. Я даже больше скажу, кроме вашего ресурса нигде больше не рассказывается про то, что блокировки происходят по области

    • Андрей Бурмистров

      Конечно актуальна!
      Это довольно тонкие материи, об этом немного говорят на курсах подготовки к 1С Эксперт (про блокировку областей), но не уделяют этому много внимания.
      Честно говоря, я тоже раньше не делал на этом акцент, но потом судя по вопросам понял, что люди не верно понимают работу упр. блокировок и путают их с блокировками строк на СУБД, а принципы то совершенно разные.
      Именно после большого числа таких вопросов я и решил записать это видео.
      Буду рад если поделитесь им с коллегами :)

  3. vlechu4uu

    Так сделано в УТ11 при выгрузке остатков на оффлайн ККМ, скорее всего, для устранения фантомного чтения. Обзор практики применения блокировок, оставшийся за пределами промо- видео, заслуживает отдельного внимания. имхо

  4. Arshanskiy Sergey

    А это так работает и на файловой базе? А то у меня почему-то конфликт блокировок происходит даже если я задаю все отборы, включая период – не могу понять почему.

    • Андрей Бурмистров

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

  5. Денчик

    Правильно ли я понял, что это справедливо и для объектных сущностей, например для документов. В типовой ЕРП есть строки:
    1-я блокировка
    Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить(“Документ.СообщениеЭДО”);
    ЭлементБлокировки.УстановитьЗначение(“Ссылка”, Ссылка);
    Блокировка.Заблокировать();

    2-я блокировка
    Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить(“Документ.СообщениеЭДО”);
    ЭлементБлокировки.УстановитьЗначение(“ЭлектронныйДокумент”, СообщениеОбъект.ЭлектронныйДокумент);
    Блокировка.Заблокировать();

    2-я блокировка будет ожидать первую?

    • Андрей Бурмистров

      Да вы все верно поняли, в принципе это легко проверить если провести опыт.
      Эти блокировки не будут ждать друг друга только если у них режим Разделяемый, но т.к. тут режим явно не указан, то по умолчанию используется режим Исключительный, поэтому ожидание будет.

  6. axae

    Хорошая визуализация! У меня как-то понимание пространства блокировок появилось сразу, без уточнений, видео и прочего, хотя у меня в голове это немного не так выглядит, но я бы даже не смог сходу визуализировать это (возможно потому, что у меня в голове нет четкой установки, что у таблицы обязательно должно быть поле первичного ключа, поэтому понятие “запись” для меня слишком абстрактна, чтобы на него вешать еще и понятие блокировки) Из видео, кстати, понятно, что в любом месте кода можно случайно забыть уточнить блокировки и будут неожиданные эффекты конфликтов.
    А вот то, до чего сам доходишь, так это например то, что порядок измерений играет роль – это было для меня неожиданностью

  7. amalarius

    Очень полезное видео, принципиальная разница между записями и пространствами. Спасибо.

  8. Юрий

    Блин. Все таблицы плоские, Нет там областей, есть записи. 10 лет писал а FoxPro и ни каких проблем не возникало с блокировками записей. Откуда этот гимор???

    • Андрей Бурмистров

      Речь идет не о таблицах и блокировках СУБД, в видео говорится про управляемые блокировки которые “живут” на сервере 1С, они блокируют не таблицы СУБД, а пространства 1С.

  9. menen

    Андрей, добрый день! Спасибо за разъяснение.
    Подскажите, если блокировка набора записи (подчинен регистратору) происходит по регистратору. Значит при проведении двух документов регистраторов возникнут блокировки на наборах, у которых совпадают значения хотя бы одного из измерений, правильно?

    • Андрей Бурмистров

      Здравствуйте.
      1. То что регистр подчинен регистратору здесь роли не играет, т.к. регистраторы разные то и ожидания на пространстве ИмяРегистра.НаборЗаписей практически никогда не бывает.
      2. Что бы было ожидание на обычном пространстве блокировок, у вас должна быть хотя бы одна одинаковая комбинация значений измерений в обоих документах.
      Если значение хотя бы в одном измерении отличается то это уже другая область.
      Попробуйте от руки начертить координатную сетку как на видео, и в уме провести 2 документа параллельно закрашиваю квадраты, думаю все сразу встанет на свои места.
      Вообще ситуация из видео когда не указано значение поля блокировки не возможна при записи движений при проведении, т.к. в этот момент платформа сама ставит упр. блокировку по всем измерениям регистра.

      Надеюсь я правильно понял вопрос, если что-то не понятно пишите.

  10. Sirius_27

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

  11. Антон

    Все 9 минут видео-уроков это по факту одно предложение:
    “При установке управляемых блокировок устанавливаете отбор по максимально возможному количеству полей”.

    • Андрей Бурмистров

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

  12. Федя

    Я правильно понял, что , управляемая блокировка , это вовсе не блокировка данных , даже по пустому регистру нельзя заблокировать только товар 1 и потом отдельно склад 1, потому что в виртуальные области пересекутся?

    • Андрей Бурмистров

      > управляемая блокировка , это вовсе не блокировка данных
      Управляемая блокировка это не блокировка строк в таблицах СУБД, это блокировка неких областей, которая происходит исключительно на сервере 1С.

      > даже по пустому регистру нельзя заблокировать только товар 1 и потом отдельно склад 1, потому что в виртуальные области пересекутся?
      Верно, т.к. не имеет значения пустой регистр или нет, упр. блокировка работает не со строками СУБД, а с теми значениями которые указаны при установке блокировки, будут заблокированы области на сервере 1С, а не строки СУБД.

  13. Михаил

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

    • Андрей Бурмистров

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

    • Андрей Бурмистров

      > Есть такая профессия, пересказывать чужие курсы)
      О да, и я даже знаю людей работающих в одной большой компании, отлично эту профессию освоивших :)

      Спасибо за видео, я посмотрел его очень внимательно, да, там действительно рассмотрен похожий случай, хотя и мимолетно и этому аспекту уделено всего несколько секунд без графиков и визуализации и т.д.
      Хотя блокнот тоже визуализация, почему нет, это я придираюсь.
      Анализ блокировок через консоль регулярками даже комментировать не хочу :)
      Можно еще написать много чего насчет доступности восприятия и формы изложения, но у меня нет цели критиковать.
      Цель моего видео раскрыть только один аспект управляемых блокировок который многие упускают из виду, без обширной теории, странно, что приходиться такие вещи писать, думал, это очевидно.

    • Rustam

      Ну не знаю. Как изложил материал Андрей мне больше понравилось. Если захочешь, то можно до всех докопаться, что они просто пересказывают то, что уже написано в желтых книжках.

      • Андрей Бурмистров

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

  14. Orion-927

    Большое спасибо за видеоурок! Все предельно четко и понятно. Сам пока не сталкивался с блокировками, но в многопользовательской среде функциональность крайне важная.

  15. Мося

    В файловой базе данных тоже управляемые блокировки чтоли появились? Вобще это все в толстой книжке описано.

    • Андрей Бурмистров

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

  16. tarroman

    Именно визуальное представление пересечений областей расширяет границы сознания и понимания. Супер.

    • Юлия Волкогонова

      Добрый день.
      Благодарим Вас за отзыв. Мы рады, что наши материалы для Вас полезны.

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

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

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

Я подтверждаю, что ознакомлен(а) с Пользовательским соглашением, принимаю его условия и даю свое согласие на обработку моих персональных данных.

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.