Ожидания на управляемых блокировках. Подготовка к сдаче экзамена 1С:Эксперт

Поділитися
Вставка
  • Опубліковано 17 жов 2024
  • Повторяем теоретические основы управляемых блокировок и их применяем знания на практике, расследуя управляемый тайм-аут .
    Запишитесь на курс «1С:ЭКСПЕРТ по технологическим вопросам», чтобы:
    Разрабатывать, внедрять, сопровождать 1С системы уровня High Load и 24/7;
    Обслуживать базы больших объемов;
    Решать задачи производительности так же легко, как обычные ошибки в коде;
    Достичь высшей ступени квалификации технического специалиста 1С.
    Записаться на курс - edu.1c.ru/expert/

КОМЕНТАРІ • 32

  • @unichkin
    @unichkin 3 роки тому +4

    Добрый день, спасибо за видео - очень понравилась подача материала.

  • @АйратСаттаров
    @АйратСаттаров 3 роки тому +1

    Обязательно для просмотра и повторения.

  • @МихаилИльин-и9о
    @МихаилИльин-и9о 2 роки тому

    Ну вот, все просто элементарно!

  • @igrok878
    @igrok878 2 роки тому

    спасибо, грамотное видео. Как раз такая проблема есть на практической части экзамена.

  • @Crisis2424
    @Crisis2424 2 роки тому

    Всё по делу, спасибо большое

  • @bekk_va
    @bekk_va Рік тому

    спасибо, за видео

  • @РадикМуллакаев-х3ш
    @РадикМуллакаев-х3ш 3 роки тому +1

    Спасибо!

  • @unichkin
    @unichkin 3 роки тому

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

    • @unichkin
      @unichkin 3 роки тому +1

      Разобрался сам, закралась ошибка в logcfg, событие tlock собиралось с фильтром по waitconnections, в итоге упустил виновника:

  • @ВячеславБабичев-к2д

    Сложно то как =)
    Но очень интересно.

    • @alexflanker25
      @alexflanker25 2 роки тому

      тут понятней))
      "В чем подвох с управляемыми блокировками 1С? Как правильно их применять?" Вбей в youtube поиске=)

  • @АлексейНеизвестный-ь6р

    Первая замена переноса строки на собаку выполнена без ключа g. Обратную замену вы уже делаете с ключом g. Вообще тема склеивания строк самая "скользкая" и хотелось бы отдельного видео на эту тему.

    • @elenaskvortsova4478
      @elenaskvortsova4478 3 роки тому +4

      В первом случае я не ожидаю увидеть несколько переносов строки в одной строке:)
      В обратной же замене искомых символов может быть несколько, если "склеены" были несколько строк.
      В целом мы совсем не ставили себе цель продемонстрировать инструменты и методы обработки строк, это действительно отдельная обширная тема, по которой, кажется, довольно много материалов. Способ, который я использую в видео - всего лишь один из многих. Можно использовать пример с awk в очень полезной кстати статье, посвященной как раз анализу логов инструментами bash:
      its.1c.ru/db/metod8dev#content:5927:hdoc
      Можно написать и свой собственный.

    • @АлексейНеизвестный-ь6р
      @АлексейНеизвестный-ь6р 3 роки тому +1

      @@elenaskvortsova4478 статью я видел. она плоха. что бы это понять - попробуйте объяснить как работает склеивание в этой статье perl -n -e 'if (/^\d\d:\d\d\.\d+/) {$event =~ s/
      //g; print $event."
      "; $event = "";} $event .= $_; END{print $event."
      "};'

    • @vazelin99999
      @vazelin99999 Рік тому

      @@АлексейНеизвестный-ь6р так чат жпт отетил
      Этот Perl-скрипт выполняет следующие действия:
      1. Считывает входные данные построчно (-n) и выполняет код для каждой строки (-e).
      2. Если строка начинается с временного штампа в формате "mm:ss.sss" (/^\d\d:\d\d\.\d+/), то:
      - Заменяет все символы переноса строк на "" в предыдущем событии ($event =~ s/
      //g).
      - Выводит предыдущее событие на экран с символом переноса строки ($event."
      ").
      - Обнуляет переменную $event.
      3. Добавляет текущую строку в переменную $event.
      4. По окончании входных данных, выводит последнее событие на экран с символом переноса строки (END{print $event."
      "};).
      Таким образом, скрипт читает входные данные, разбивает их на события, заменяет символы переноса строк на "" и выводит каждое событие на экран.
      А так один опытный эксперт:
      $event = "";
      Для Каждого $_ По НаборСтрок Цикл
      Если $_ соотвествует шаблону "^d\d:\d\d\.\d+" Тогда
      $event = СтрЗаменить($event, "
      ", "");
      Вывести $event + "
      ";
      $event = "";
      КонецЕсли;
      $event = $event + $_;
      КонецЦикла;
      Вывести $event + "
      ";

  • @avbolshakov
    @avbolshakov 2 роки тому

    Класс!

  • @РадикМуллакаев-х3ш

    Коллеги, а где же 4 и 5 видео?!

  • @RitterBruder05
    @RitterBruder05 3 роки тому +1

    Ну это лайк

  • @NikolayVerhovcev
    @NikolayVerhovcev 3 роки тому +1

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

    • @elenaskvortsova4478
      @elenaskvortsova4478 3 роки тому +8

      Виновник заблокирует не все ссылки, а кортеж: все ссылки и определенное значение поля "Распоряжение". Жертва ставит блокировку по по полю "Ссылка" и другому значению поля "Распоряжение" после исправления, поэтому блокировки больше не пересекаются. Точнее, пересекаются только тогда, когда распоряжения совпадают.
      До исправления значение поля "Распоряжение" пропускалось, при таком подходе оно могло быть каким угодно, в том числе аналогичным тому, которое блокирует Виновник.
      Было
      Блокировка 1: Ссылка1 + Любое Распоряжение
      Блокировка 2: Любая Ссылка + Распоряжение2
      Блокировки пересекаются
      Стало
      Блокировка 1: Ссылка1 + Распоряжение1
      Блокировка 2: Любая Ссылка + Распоряжение2
      Блокировки не пересекаются

    • @NikolayVerhovcev
      @NikolayVerhovcev 3 роки тому

      @@elenaskvortsova4478 теперь понятно, спасибо

    • @БорисКарпунин-г1ь
      @БорисКарпунин-г1ь 3 роки тому

      @@elenaskvortsova4478
      >>Было
      >>Блокировка 2: Любая Ссылка + Распоряжение2
      Тут я бы уточнил, "Блокировка 2: Любая Ссылка ()" - здесь будут ссылки на Этапы производства, в шапке которых указано Распоряжение2, т.е не любая ссылка а ограниченный реквизитом "Распоряжение" список этапов.
      Елена поясните пожалуйста ещё раз, что даст добавление ещё одного поля (Распоряжение) в пространство блокировки, если учесть, что архитектурно в этапе производства реквизит "Распоряжение" находится в шапке документа и связь многие ко многим невозможна.

    • @elenaskvortsova4478
      @elenaskvortsova4478 3 роки тому

      @@БорисКарпунин-г1ь Я специально обращаю внимание в теоретической части на то, что менеджер блокировок не знает ничего о данных в таблицах и не делает к ним запросов.
      Если устанавливается блокировка только по значению поля Ссылка, менеджер блокировок не имеет ни малейшего представления о том, какое значение имеет Распоряжение в шапке объекта, на который эта ссылка указывает.
      Даже если в шапке на самом деле Распоряжение 1, а в блокировке 2 устанавливается блокировка по Распоряжение 2, блокировки будут пересекаться. Они перестанут пересекаться только тогда, когда менеджеру блокировок явно укажут значение распоряжения при блокировке по полю Ссылка. Что я и делаю. Что и делает платформа при записи объекта - перечисляет все поля пространства.
      Возможно, вам будет понятнее, если вы смоделируете тестовый пример с похожими блокировками в длинной транзакции и соберете журнал.

    • @БорисКарпунин-г1ь
      @БорисКарпунин-г1ь 3 роки тому

      @@elenaskvortsova4478
      Если я вас правильно понял, то вы описываете ситуацию когда
      Блокировка 1: ЭтапПроизводства №1 - Распоряжение любое (наложена объектная управляемая блокировка по конкретному документу)
      Блокировка 2: ЭтапПроизводства №2,№3,№4 - Распоряжение2 (количество записей в таблице блокировок равно количеству этапов по Распоряжение2)
      При этом возникает тайм-аут из-за пересечения пространств блокировок?

  • @ВиталийРыбалка-ы3ю

    5 баллов!

  • @capitan_nemo
    @capitan_nemo 2 роки тому

    И немного о плагиате 😁 Через полгода после этого видео, аналогичное но похуже вышло у курсов-по-рф🤣 ссылку не буду постить

  • @channel30495
    @channel30495 3 роки тому

    Непонятно в чем беда, но вот так не работает: "perl -pe 's/
    /@/...", а вот так работает: "perl -pe 's/.
    /@/..." (с точкой перед
    )