8.х Событие при успешном проведении документа

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

  1. TopicStarter Overlay
    TylerDurdenIII
    Offline

    TylerDurdenIII

    Регистрация:
    19 фев 2015
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    Мне необходимо выполнить некоторые действия, если документ проведен успешно по всем регистрам. Выполняю их в конце процедуры ОбработкаПроведения, если Отказ = Ложь. Но при этом, если при записи в регистр происходят ошибки (забаланс vs незабаланс, сущ. запись с ключевыми полями и пр.), то документ не проводится, но уже после отработки моих процедур.

    Где можно выполнить процедуры и быть уверенным, что документ провелся успешно?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Нигде, необходимо соблюдать условия заполнения набора записей регистров так, что бы запись была успешной, либо пересмотреть место и условия внедрения вашего кода.
    TylerDurdenIII нравится это.
  3. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Записи в регистре подчиненные ?
    По сути, как раз в ОбработкеПроведения() и нужно все делать.
    Еще можно в модуле регистра в обработчике ПриЗаписи() можно что-то проверять.
  5. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Через подписку на событие делайте
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    при первом же программном вызове записи документа - это не сработает
    --- Объединение сообщений, 19 фев 2015 ---
    Нет подписок на "ПОСЛЕ ПРОВЕДЕНИЯ" :) Есть подписка "ОбработкаПроведения" - так она так же внутри транзакции записи документа, транзакция может быть отменена.
  7. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Обработки Проведения. оно вроде будет выполняться когда там все положительно выполнилось. и там же работает Отказ
    --- Объединение сообщений, 19 фев 2015 ---
    Повторяю через подписку на событие Обработка проведения. Сначало выполниться там код, что в документу, а затем уже ваш код и там можно ОТКАЗ =истина поставить и тогда все откатиться
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    В обработчике ОбработкеПроведения() данные еще не записались в регистры.
    В модуле набора записей регистра - точно так же.
    --- Объединение сообщений, 19 фев 2015 ---
    ТС нужно делать чего-то там, когда все хорошо в регистры записалось :)
    --- Объединение сообщений, 19 фев 2015 ---
    Изначально не верная логика проверки, которую хочет сделать ТС. Нужно ее менять.
  9. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Логика какая, если вошел в подписку на событие то в ОбработкаПроведния все нормально прошло и Отказ = Истина нигде нет
    Если же надо проверять какие данные и опять же по ним ориентироваться то в подписек будет ссыка на движения данного документа их мождно проверить.
  10. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Да ладно :) У процедуры подписки один из параметров - "Отказ". Оно принимает такое же значение, что и в модуле объекта.

    Дык не факт, что движения запишутся в регистры после завершения выполнения кода обработчика подписки на событие.
  11. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Ну я про это и говорю, что один из параметров отказ т.е если он попал в подписку значит в Обработке проведения везде было Отказ=Истина, а не Отказ=Ложь.
  12. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    ЭЭээ.....мож наоборот? Попадание в подписку никак не связано со значением данного флага. Оно всегда в нее попадет.

    p.s. видимо поправили, не попадает.
    Последнее редактирование: 19 фев 2015
  13. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Надо проверить.
    В крайнем случае первое что в подписек можно сделать - это самому проверку написать Если Не Отказ Тогда.....
  14. TopicStarter Overlay
    TylerDurdenIII
    Offline

    TylerDurdenIII

    Регистрация:
    19 фев 2015
    Сообщения:
    31
    Симпатии:
    0
    Баллы:
    1
    nomad_irk, Спасибо. Так и думал. Думаю привязаться к регистру, по которому документ должен полюбому провестись.
  15. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Сам себя же опровергаю:

    Если в обработчике события "ОбработкаПроведения()" включить Отказ, то в подписку не проваливаемся. Слава 1С :)
  16. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.649
    Симпатии:
    948
    Баллы:
    204
    Даже если он туда зашел и и Отказ истина и что то сделает все равнотранзакция все назад откатит. просто тут уже вопрос времени и блокировок. для 1000 пользователй такое лишнее время критично , для 20 нет.
  17. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Я не вчитывался в проблему, просто увидел про подписку, мое замечание:
    1.1. если мне конечно не изменяет память - некоторые движения по регистрам делаются в подписках.
    1.2. в какой-то из подписок тоже может быть условие отказа от проведения
    2. порядок вызова подписок не регламентирован (да, да, я знаю что есть мнение что они выполняются по порядку следования в дереве метаданных, но тем не менее - это не регламентировано)

    исходя из вышенаписанного 1 + 2: если ТС разместит свою проверку в подписке на событие - это не будет являться 100% гарантией того, что документ успешно провелся.
  18. TODD22
    Offline

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.759
    Симпатии:
    147
    Баллы:
    104
    А что за действия вам необходимо выполнить? А то может как то иначе ваша задача решается.
  19. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Если вы программно пишите записи в регистр, то можно еще извернуться (это при условии что нет подчиненности регистратору в регистре), в противном случае, ваше задание - глупость, не поддающаяся логике.

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