Добрый день
Подскажите пожалуйста, есть следующая задача, я хотела определить из какой формы произошел вызов.
В конфигурации 1С УТ11 есть форма Справочники.Партнеры.ПомощникНового и она вызывается из разных мест
как программно узнать внутри формы Справочники.Партнеры.ПомощникНового откуда она была вызвана ?
В отладчике я конечно вижу откуда был вызов , но мне нужно программно определить и выполнить определенные действия в зависимости откуда был вызов
---
Согласен, тоже неподходящее решение. Тогда как на счет того, чтобы переопределить обработчик команды создания нового партнера в форме регистрации карты? Т.е. вместо типового:

```1c
    ОткрытьФорму("Справочник.Партнеры.Форма.ПомощникНового",Новый Структура("ВводНовогоРозничногоПокупателя",Истина), ВладелецФормы);
```
написать так:

```1c
    ОткрытьФорму("Справочник.Партнеры.Форма.ПомощникНового",Новый Структура("ВводНовогоРозничногоПокупателя,ОтключитьТелефон",Истина,Истина), ВладелецФормы);
```
и уже при создании формы помощника нового партнера проверить свой параметр "ОтключитьТелефон".
---
Такого удобного механизма, как отладчик, для получения нужной Вам информации полагаю, что нет. Но на сколько точно Вам необходимо получить место вызова и для каких целей? Например, владелец формы помощника Вам не поможет в Ваших изысканиях?
---
```1c
    &НаКлиенте
    &Вместо("ПриОткрытии")
    Процедура sbb_РасшПриОткрытии(Отказ)
    // Вставить содержимое метода.
    ПродолжитьВызов(Отказ);
    Если ЭтаФорма.ВладелецФормы = "Справочник.КартыЛояльности.Форма.ФормаСписка" Тогда
    ЭтаФорма.Элементы.ТелефонПартнераФизЛицо.Видимость = Ложь;
    КонецЕсли;
    КонецПроцедуры
```

Правильно ?

Но параметр ЭтаФорма.ВладелецФормы = Неопределено
---
Да, типа того. Однако получается не самый надежный способ, т.к. владелец помощника создания всегда не сама форма регистрации новой карты, а форма-владелец регистрации.

Заглянул в код помощника регистрации новой карты. Обнаружил, что в помощник создания нового партнера передается параметр "ВводНовогоРозничногоПокупателя=Истина". Быть может это как раз то, что Вам нужно? Скрыть телефон розничного покупателя? Если так, то при создании формы помощника нового партнера проверьте наличие и значение этого параметра, и заблокируйте поле ввода телефона при необходимости.
---
"ВводНовогоРозничногоПокупателя=Истина"

А как быть когда создание нового покупателя происходит не из карт лояльности ? а скажем из справочника контрагенты , это поле тоже будет равно истина
---
Согласен, тоже неподходящее решение. Тогда как на счет того, чтобы переопределить обработчик команды создания нового партнера в форме регистрации карты? Т.е. вместо типового:

```1c
    ОткрытьФорму("Справочник.Партнеры.Форма.ПомощникНового",Новый Структура("ВводНовогоРозничногоПокупателя",Истина), ВладелецФормы);
```
написать так:

```1c
    ОткрытьФорму("Справочник.Партнеры.Форма.ПомощникНового",Новый Структура("ВводНовогоРозничногоПокупателя,ОтключитьТелефон",Истина,Истина), ВладелецФормы);
```
и уже при создании формы помощника нового партнера проверить свой параметр "ОтключитьТелефон".
---
Ой! Cпасибо Вам
сейчас попробую , так красивее!

я правда вот как еще опробовала - так тоже работает

```1c
    &НаКлиенте
    &Вместо("ПриОткрытии")
    Процедура sbb_РасшПриОткрытии(Отказ)
    // Вставить содержимое метода.
    ПродолжитьВызов(Отказ);
    Если ЭтаФорма.ВладелецФормы.ИмяФормы = "Справочник.КартыЛояльности.Форма.ФормаСписка" Тогда
    ЭтаФорма.Элементы.ТелефонПартнераФизЛицо.Видимость = Ложь;
    КонецЕсли;
    КонецПроцедуры
```
---
```1c
    &НаКлиенте
    &Вместо("ПриОткрытии")
    Процедура sbb_РасшПриОткрытии(Отказ)
    // Вставить содержимое метода.
    ПродолжитьВызов(Отказ);
    Если ЭтаФорма.ВладелецФормы.ИмяФормы = "Справочник.КартыЛояльности.Форма.ФормаСписка" Тогда
    ЭтаФорма.Элементы.ТелефонПартнераФизЛицо.Видимость = Ложь;
    КонецЕсли;
    КонецПроцедуры
```

Перестало работать - вносилось много изменений не могу понять какое привело к тому что теперь значение ЭтаФорма.ВладелецФормы = Неопределенно
---
Ну судя по нашей переписке выше, владельцем формы ввода новой карты лояльности является владелец того, кто открывает данную форму ввода. Получается, что форма, запустившая помощник ввода нового партнера сама открыта независимо, т.е. никому не принадлежит, никому не подчинена.
---
Придется отказаться от этого метода и перейти на этот

```1c
    ОткрытьФорму("Справочник.Партнеры.Форма.ПомощникНового",Новый Структура("ВводНовогоРозничногоПокупателя,ОтключитьТелефон",Истина,Истина), ВладелецФормы);
```
---
В отладчике я вижу откуда был вызов
но как программно определить из какого места был вызов
Мне нужно это что бы отключить одно поле, но отключать его нужно только когда форма вызывается при создании карт лояльности
"Например, владелец формы помощника Вам не поможет в Ваших изысканиях?"
  можете показать в коде как это реализовать ?