8.х Как внутри кода узнать, откуда был вызов процедуры?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Sherry Djeanna, 31 май 2017.

  1. TopicStarter Overlay
    Sherry Djeanna
    Offline

    Sherry Djeanna Опытный в 1С

    Регистрация:
    12 июл 2015
    Сообщения:
    154
    Симпатии:
    0
    Баллы:
    26
    Всем привет. Ситуация такая. Перед проведением я делаю определенную проверку данных документа.
    Но проведение документа возможно 2х вариантов. При обычном проведении документа. или если вызов процедуры проведения был из общего модуля (самописный).
    Когда вызов процедуры из Общего модуля - то моя проверка не нужна. И как отловить эту ситуацию? Может быть кто-то подскажет?
    В общем модуле строка такая :

    НДок.Записать(РежимЗаписиДокумента.Проведение);

    В модуле самого документа проверка идет в стандартной процедуре ПередЗаписью.

    Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
  2. Yuriy_Alexandrovich
    Offline

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

    Регистрация:
    15 сен 2011
    Сообщения:
    1.349
    Симпатии:
    87
    Баллы:
    54
    Доброго дня,
    Если вам нужно "до провести" документ по своим регистрам, воспользуйтесь механизмом подписок на события, они исполняются после выполнения основных механизмов
  3. TopicStarter Overlay
    Sherry Djeanna
    Offline

    Sherry Djeanna Опытный в 1С

    Регистрация:
    12 июл 2015
    Сообщения:
    154
    Симпатии:
    0
    Баллы:
    26
    Нет, я же написала- просто проверка документа с выводом соответствующих сообщений. Просто при массовом проведении документов, эти сообщения неуместны. Поэтому и нужно узнать - был ли вызов процедуры проведения из определенного Общего Модуля.
  4. Yuriy_Alexandrovich
    Offline

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

    Регистрация:
    15 сен 2011
    Сообщения:
    1.349
    Симпатии:
    87
    Баллы:
    54
    Когда вы делаете "НДок.Записать(РежимЗаписиДокумента.Проведение);" процедуры проведения документа (обработчик описанный в модуле документа) отработают в любом случае.
    Т.е., ваш код работает ровно до этого места, а далее пойдут отрабатывать механизмы описанные в обработчике проведения после чего пойдут отрабатывать подписки на события.
    Поэтому, в таком виде, задача не решиться :)
    Нужно предусмотреть возможность формирования сообщений после обработки проведения (т.е.) как поток сообщений передаваемый далее на клиента, если, конечно, вызов процедур вашего модуля осуществляется из форм
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.410
    Симпатии:
    973
    Баллы:
    204
    Сделайте проверку перед проведением в форме документа/обработки, вызывающей проведение документа.
  6. Yuriy_Alexandrovich
    Offline

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

    Регистрация:
    15 сен 2011
    Сообщения:
    1.349
    Симпатии:
    87
    Баллы:
    54
    Так же, если вы делаете
    ее так же можно вынести в подписки
  7. TopicStarter Overlay
    Sherry Djeanna
    Offline

    Sherry Djeanna Опытный в 1С

    Регистрация:
    12 июл 2015
    Сообщения:
    154
    Симпатии:
    0
    Баллы:
    26
    Спасибо, попробую вынести проверку в др. модуль...
  8. AlexeyKh
    Offline

    AlexeyKh Опытный в 1С

    Регистрация:
    27 июл 2012
    Сообщения:
    148
    Симпатии:
    18
    Баллы:
    29
    еще как вариант, в большинстве объектов есть структура
    ЭтотОбъект.ДополнительныеСвойства
    через нее можно передавать разные данные

    например где-то в ваших модулях
    ...
    НДок.ДополнительныеСвойства.Вставить("НужнаПроверка",Истина);
    НДок.Записать(РежимЗаписиДокумента.Проведение);
    ...

    а в процедуре обработки проведения (или записи) документа сделайте так

    Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    НужнаПроверка = Ложь;
    ЭтотОбъект.ДополнительныеСвойства.Свойство("НужнаПроверка",НужнаПроверка);
    Если НужнаПроверка = Истина Тогда
    //выполняете свою проверку
    КонецЕсли;
    ...
    AfterEarth нравится это.
  9. TopicStarter Overlay
    Sherry Djeanna
    Offline

    Sherry Djeanna Опытный в 1С

    Регистрация:
    12 июл 2015
    Сообщения:
    154
    Симпатии:
    0
    Баллы:
    26
    Интересно! Спасибо!
  10. AfterEarth
    Offline

    AfterEarth

    Регистрация:
    7 янв 2017
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Просто спасли меня, спасибо!
Похожие темы
  1. kotletka
    Ответов:
    4
    Просмотров:
    1.142
Загрузка...

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