Всем привет!

Добавил новую команду, разместил ее в панели навигации формы элемента справочника.
В обработчике команды открываю форму другого справочника, исходя из значений, указанных на форме текущего - ОткрытьФорму("Справочник.ИмяСправочника.Форма.ФормаЭлемента", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно);
Форма открывается, все ок. Но сам модуль команды выполняется только один раз, сколько бы я не нажимал на гиперссылку. Собственно, как сделать так, чтобы обработчик выполнялся при каждом нажатии на команду из панели навигации.

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

ОткрытьФорму("Справочник.ИмяСправочника.Форма.ФормаЭлемента", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно);

Нажимаю на гиперссылку еще раз - обработчик команды больше не отрабатывает.
---
Я больше 10 лет занимаюсь 1ской, я никогда даже не задумывался об этом, ибо я даже подумать не могу зачем вам это вообще надо. Только ради любопытства проверю как будет время.
Вопрос, вы что хотите вообще сделать? Давайте с самого начала. Может Вы вообще не в ту сторону смотрите.
---
все просто - выводить вспомогательные данные для указанного справочника в той же форме элемента, для того, чтобы с точки зрения пользователя это было одним объектом, а не куча вспомогательных форм, которые открываются поверх уже открытой.

На самом деле, подход довольно распространенный, используется в той же УНФ.
---
Ну а если при открытии самой формы что-то выводить?
---
Вы об основной форме или об открывающейся вспомогательной?
И главное, не могу понять, зачем это делать :)
---
Я вообще не понимаю какую вспомогательную автор там хочет открыть. И другая ли это форма. Автор приведите пример из типовой какой-нидьбудь конфы (УНФ например), что Вы хотите в итоге получить?
---
пример в УНФ - в том же окне (не поверх) открывается форма со списком присоединенных файлов.
---
ПараметрыВыполненияКоманды.Уникальность - этот параметр отвечает за это. Если он каждый раз одинаковый, то и форма новая создаваться не будет, а откроется уже существующая.
---
пробовал вообще все Истина / Ложь / Строка (Новый УникальныйИдентификатор) - обработчик команды срабатывает только один раз
---
все понял. Принцип размещения команды в Панели навигации формы как раз в том, чтобы отображать что-то в том же окне, а не открывать новых. Можно сделать так:

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

Но выглядеть это будет не очень логично (попробуйте).

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

Суть все-таки в том, чтобы понять, можно что-то сделать с обработчиком, который отрабатывает только один раз или нет.
Повторюсь, видел кучу постов с такой проблемой, но нигде нет решения.
---
я уже ответил, что панель навигации так не работает, чтобы в существующей открывать новые вкладки. По указанному примеру открываются окна отдельные - каждый раз новые при нажатии. И выглядит это странно, т.к. при нажатии на ссылку в панели навигации окно (как вкладка) открываться должно одно.

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

Пока на ум не приходит ничего, кроме обработчика ожидания, который будет постоянно проверять, а не модифицирована ли дополнительная форма и в этом случае выставлять модифицированность для основной формы.

Может посоветуете что-то более рациональное?
---
необходимо сделать модифицированной основную форму, если Модифицированность = Истина у дополнительной
Модифицированность основной формы можно менять сразу вместе с модифицированностью дополнительной в контексте дополнительной формы.
---
это понятно, а подскажите пожалуйста, как именно это сделать?
не буду же я впиливать эту проверку в каждый обработчик ПриИзменении() дополнительнительной формы...
---
Ну и повторюсь на всякий случай - сам вызов открытия вспомогательной формы находится в обработчике команды.
А обработчик команды выполняется только один раз; в этом вся проблема.
---
А обработчик команды выполняется только один раз; в этом вся проблема. Почему это является проблемой? Всё работает так, как и задумано платформой. Вы открыли форму элемента справочника Договоры, нажали на гиперссылку – открылась форма в том же окне. Логически она относится к уже открытой форме элемента справочника Договоры. Нажали на Основное – вернулись на форму элемента, нажали на гиперссылку – снова перешли в уже открытую доп. форму. Зачем еще раз выполнять команду и открытие дополнительной формы?
---
Зачем еще раз выполнять команду и открытие дополнительной формы?
хотя бы потому, что изменились данные на форме и требуется выполнить ту же команду уже с другими параметрами и ожидать другой результат ее выполнения.

Другое дело, что мои ожидания отличаются от того как это задумано платформой