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

Поделиться
HTML-код
  • Опубликовано: 24 ноя 2024

Комментарии • 32

  • @unichkin
    @unichkin 3 года назад +3

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

  • @АйратСаттаров
    @АйратСаттаров 3 года назад +1

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

  • @МихаилИльин-и9о
    @МихаилИльин-и9о 2 года назад

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

  • @igrok878
    @igrok878 3 года назад

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

  • @АлексейНеизвестный-ь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 + "
      ";

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

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

  • @Crisis2424
    @Crisis2424 2 года назад

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

  • @ВячеславБабичев-к2д
    @ВячеславБабичев-к2д 3 года назад +2

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

    • @alexflanker25
      @alexflanker25 2 года назад

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

  • @bekk_va
    @bekk_va Год назад

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

  • @RitterBruder05
    @RitterBruder05 3 года назад +1

    Ну это лайк

  • @avbolshakov
    @avbolshakov 2 года назад

    Класс!

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

    Спасибо!

  • @unichkin
    @unichkin 3 года назад

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

    • @unichkin
      @unichkin 3 года назад +1

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

  • @ВиталийРыбалка-ы3ю
    @ВиталийРыбалка-ы3ю 3 года назад

    5 баллов!

  • @NikolayVerhovcev
    @NikolayVerhovcev 3 года назад +1

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

    • @elenaskvortsova4478
      @elenaskvortsova4478 3 года назад +7

      Виновник заблокирует не все ссылки, а кортеж: все ссылки и определенное значение поля "Распоряжение". Жертва ставит блокировку по по полю "Ссылка" и другому значению поля "Распоряжение" после исправления, поэтому блокировки больше не пересекаются. Точнее, пересекаются только тогда, когда распоряжения совпадают.
      До исправления значение поля "Распоряжение" пропускалось, при таком подходе оно могло быть каким угодно, в том числе аналогичным тому, которое блокирует Виновник.
      Было
      Блокировка 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)
      При этом возникает тайм-аут из-за пересечения пространств блокировок?

  • @capitan_nemo
    @capitan_nemo 2 года назад

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

  • @channel30495
    @channel30495 3 года назад

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