8.х Блокировки при подписке на РТиУ

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем VeronH, 6 авг 2016.

  1. TopicStarter Overlay
    VeronH
    Offline

    VeronH

    Регистрация:
    15 июл 2016
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Коллеги подскажите. Конф Упп 1.3.
    Компания включает несколько фирм. Пусть фирма 1 - главная, фирма 2 - продажная. Есть подписка на проведение РТиУ в момент, когда из фирмы 2 происходит продажа внешним контрагентам. Подписка создает автоматическую перепродажу(из фирмы 1 в 2): создается еще одна РТиУ и расходный ордер, плюс создает поступление товаров и услуг в фирму 2.
    Плюс я сделал еще подписку на эту РТиУ в момент перепродажи просто происходит запись в свой регистр определенных данных.

    Так вот периодически у пользователя, который делает реализацию внешним контрагентам - происходит конфликт блокировок при выполнении транзакции. Главное день может не быть проблем - все проводится, а бывает просто пользователь замучает: не проводится и все(конфликт блокировок), регламентные в этот момент не выполняются(если выполняются, понятно что блок из за них). Я полагаю дело в подписках, т.к. проблема возникает у юзера, который как раз делает продажу из фирмы 2.
    Как оптимизировать этот момент?
    Подписки выполняются после события, как они могут влиять? Не могу понять, где косяк. Вообще все события происходят неявно в 1 транзакции? Может перепродажу надо сделать в другой надо? И вообще косяк в самом доке РТиУ или все таки в перепродажах(других РТиУ, РО, ПТиУ), которые создаются автоматом, как понять?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Мой совет: уберите из подписок все создания любых объектов. Создайте регламентное задание, которое будет выгребать проведенные документы и при отсутствии объектов, создаваемых при записи документа в ИБ, создавала бы эти объекты. Периодичность - можно раз в час.
    VeronH нравится это.
  3. TopicStarter Overlay
    VeronH
    Offline

    VeronH

    Регистрация:
    15 июл 2016
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Но мне еще нужно при отмене проведения, отменять у всей цепочки проведение. Вообще вся связка пишется в регистр сведений "связь документов" (Основание - РТиУ(от фирмы 2 внешним), ПТиУ(поступление от фирмы 1 в фирму 2), РТиУ( реализация из фирмы 1 в фирму 2). Каждый час все это перебирать, мне кажется не хило загрузит систему и создаст доп блокировки, плюс еще бывает реализации создаются будущими датами... Может проще сделать доп кнопку (реализация из фирмы 1 в 2) и после проведения основной РТиУ, юзер жмет ее и создаются автоматические документы, а при отмене проведения оставить по старому, подписка и отмена проведения у всей связки? Или можно автоматические документы сделать в другой транзакции, так можно сделать?
    Последнее редактирование: 7 авг 2016
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Отмену проведения так же можно регл. заданием делать. Вы поймите простую вещь: у вас запись документа в транзакции, другие объекты про эту транзакцию ничего не знают. Если документ по какой-то причине не запишется в ИБ(транзакция завершится ошибкой), то в остальных объектах будет битая ссылка на этот документ.

    Выгребать нужно не все документы, а только те, для которых не сформированы другие объекты. В общем нужен механизм, подобный планам обмена
    VeronH нравится это.
  5. TopicStarter Overlay
    VeronH
    Offline

    VeronH

    Регистрация:
    15 июл 2016
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Спасибо nomad_irk!!! Все ясно. Теперь в подписке на проведение буду делать только запись в регистр ("связь доков") ссылки на основной док реализация, остальные пустые. В регламентном задании буду выбирать эти записи с пустыми остальными измерениями и их последовательно создавать. Они же будут создаваться каждый в своей транзакции. А отмену проведения оставлю, это ведь все таки не создание сразу 4 доков, пади болкировки не будут мучить. Остался момент при изменении основного дока, надо и другие изменить, тут что-то придумать, типа булево в регистр связь доков "изменен основной док".
    Последнее редактирование: 7 авг 2016
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Так же заносить ссылку на измененный документ в какой-то регистр сведений(можно и реквизит типа булево сделать для этого) и обрабатывать регламентным заданием.
    VeronH нравится это.
  7. TopicStarter Overlay
    VeronH
    Offline

    VeronH

    Регистрация:
    15 июл 2016
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    И еще хотел уточнить, ты говоришь, если транзакция завершится с ошибкой, там битые ссылки... они ведь все в одной главной. и тогда ведь все вложенные транзакции тоже не завершаться, то есть ничего не запишется в базу?
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    В транзакцию записи документа попадают все его движения, другие объекты попадут в эту транзакцию , если они будут формироваться/изменяться в пределах обработчика события ОбработкаПроведения в модуле документа.

    Хотя этот механизм могли изменить, можно проверить: создать две подписки, в первой создать объект, а во второй вызвать ошибку, и проверить наличие созданного объекта.
  9. Dellorik1992
    Offline

    Dellorik1992

    Регистрация:
    5 авг 2016
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    У меня только при закрытии бывает тр-тр-тр, видимо какой-то замок не "понимает" что он закрылся и тыркает сам себя N-ное число раз.

Поделиться этой страницей