8.х Отказаться от открытия формы вне формы

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

  1. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    Добрый день!
    Подскажите, как можно отказаться от открытия формы (небольшая проверка в коде) не изменяя саму форму, т.е не писать там в процедуре "при открытии" "Закрыть();" или Отказ = Истина при создании на сервере. Платформа 8.3.4-8.3.5
    Спасибо!
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Ээээ....проверять условие открытия формы до конструкции:
    ......
    ОткрытьФорму();

    ?
    Dem0lisher нравится это.
  3. Thelearning
    Offline

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

    Регистрация:
    9 сен 2010
    Сообщения:
    701
    Симпатии:
    72
    Баллы:
    54
    Суть задачи чуть подробнее опишите, а то не ясно что да как. Если нужно открывать форму из списка (например справочник), то в этом случае никак. Подписок на событие формы нету.
    Dem0lisher нравится это.
  4. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    Где проверять? Вот сейчас ищу, что можно как-то запихать свой контроль в вызовы типовых процедур. Но пока ничего подходящего не могу найти, например в УНФ или УТ 11
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Проверять в том участке кода, который ведет к открытию формы. По другому никак, т.к., как уже заметили, подписки на событие "ОткытиеФормы" просто не существует.
    Dem0lisher нравится это.
  6. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    Вот например в ут 10.3 пишут, что можно.
    http://forum.infostart.ru/forum24/topic23609/
    А вот в упр. формах как? Метод закрыть() только на клиенте действует..
  7. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Не совсем понял что надо.
    Подписка на событие ОбработкаПолученияФормы() ничем не поможет?
    Dem0lisher нравится это.
  8. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    А в ней можно как-то отказаться от открытия формы? или закрыть ее?
  9. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Dem0lisher ну немного через Ж, но в принципе можно.

    Не до конца понимаю, а почему нельзя использовать например ПриОткрытии самой формы?
    Dem0lisher нравится это.
  10. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    Суть в том, чтобы не залазить в модуль каждой формы каждого документа и справочника и по возможности оставить типовую конфу не тронутой.
    --- Объединение сообщений, 22 сен 2014 ---
    Объясните, пожалуйста, как можно, пусть и через Ж.
  11. saha25
    Offline

    saha25 Опытный в 1С

    Регистрация:
    30 окт 2007
    Сообщения:
    95
    Симпатии:
    3
    Баллы:
    29
    Очевидно, человек хочет делать проверку перед открытием любой формы и открывать или закрывать ее по условию.
    Скорее всего такого не сделать в одном месте, придется сделать одну общую функцию в общем модуле и обращаться к ней из каждой формы
  12. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Конфа останется типовой, в том смысле что с обновлениями проблем не будет. Но если справочников/документов много - то будет много телодвижений. Не уверен что оно стоит того, с чем связана такая необходимость прям контролировать открытие форм? Может стоит пересмотреть задачу?

    По сути вопроса:
    1) добавляете подписку на событие ОбработкаПолученияФормы, соответственно источником события выбираете нужные справочники/документы.
    2) в список форм нужного объекта конфигурации добавляете новую форму, название неважно (одинаковое для всех), в форме только одна процедура ПриОткрытии(), где пишите Отказ = Истина;
    3) В процедуре подписки на событие пишите что-то вроде
    Код:
    Если УсловиеПриКоторомНеНадоОткрыватьФорму Тогда
      СтандартнаяОбработка = Ложь;
      ВыбраннаяФорма = <имя формы из 2)>
    КонецЕсли;
    
    Dem0lisher нравится это.
  13. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    Ясно, спасибо!
    Телодвижений будет действительно много на каждый объект!
  14. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.410
    Симпатии:
    316
    Баллы:
    104
    Стоп.
    Чет я загнался. Можно же общую форму использовать.
    --- Объединение сообщений, 22 сен 2014 ---
    Вот так, новый вариант.

    1) добавляете подписку на событие ОбработкаПолученияФормы, соответственно источником события выбираете нужные справочники/документы.
    2) добавляете общую форму, там только одно событие ПриОткрытии(), где пишите Отказ = Истина;
    3) В процедуре подписки на событие пишите что-то вроде
    Код:
    Если УсловиеПриКоторомНеНадоОткрыватьФорму Тогда
      СтандартнаяОбработка = Ложь;
      ВыбраннаяФорма = Метаданные.ОбщиеФормы.<Форма из п2>;
    КонецЕсли;
    
    Элла и Dem0lisher нравится это.
  15. TopicStarter Overlay
    Dem0lisher
    Offline

    Dem0lisher Профессионал в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    1.028
    Симпатии:
    51
    Баллы:
    54
    О-о-о ! Вот это подойдет! Спасибо!

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