Повторное выполнение обработчика команды, размещенной в панели навигации

1. Symbiat 26.01.21 16:44 Сейчас в теме
Всем привет!

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

Перепробовал различные варианты ОткрытьФорму, ничего не помогает. Нашел очень много упоминаний об указанной проблеме, но нигде нет решения.
Вознаграждение за ответ
Показать полностью
Найденные решения
17. insurgut 207 27.01.21 09:16 Сейчас в теме +0.4 $m
(16) потому что ваша логика - не стандартная. Открывать отдельные окна вы не хотите, а в панели навигации логика у 1С единая - "одна команда - одна вкладка". Для вашей задачи могу предложить только вариант по динамическому созданию страниц формы у элемента справочника, придется изрядно помудрить, но думаю решить реально. Вопрос только в целесообразности.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. pyrkin_vanya 488 26.01.21 20:31 Сейчас в теме
Ничего не понятно. Можно как-то другими словами что ли расписать?
3. Symbiat 26.01.21 22:06 Сейчас в теме
(2) На первом скрине команда "Открыть форму доп. справочника" и где она расположена.
Щелкаю на гиперссылку на скрине 2 - в этой же форме открывается форма доп. справочника(обработчик команды):

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

Нажимаю на гиперссылку еще раз - обработчик команды больше не отрабатывает.
Прикрепленные файлы:
4. pyrkin_vanya 488 27.01.21 07:19 Сейчас в теме
(3)Я больше 10 лет занимаюсь 1ской, я никогда даже не задумывался об этом, ибо я даже подумать не могу зачем вам это вообще надо. Только ради любопытства проверю как будет время.
Вопрос, вы что хотите вообще сделать? Давайте с самого начала. Может Вы вообще не в ту сторону смотрите.
5. Symbiat 27.01.21 08:03 Сейчас в теме
(4)все просто - выводить вспомогательные данные для указанного справочника в той же форме элемента, для того, чтобы с точки зрения пользователя это было одним объектом, а не куча вспомогательных форм, которые открываются поверх уже открытой.

На самом деле, подход довольно распространенный, используется в той же УНФ.
6. pyrkin_vanya 488 27.01.21 08:04 Сейчас в теме
(5)Ну а если при открытии самой формы что-то выводить?
9. Symbiat 27.01.21 08:23 Сейчас в теме
(6) Вы об основной форме или об открывающейся вспомогательной?
И главное, не могу понять, зачем это делать :)
12. pyrkin_vanya 488 27.01.21 08:45 Сейчас в теме
(9)Я вообще не понимаю какую вспомогательную автор там хочет открыть. И другая ли это форма. Автор приведите пример из типовой какой-нидьбудь конфы (УНФ например), что Вы хотите в итоге получить?
13. Symbiat 27.01.21 08:49 Сейчас в теме
(12) пример в УНФ - в том же окне (не поверх) открывается форма со списком присоединенных файлов.
7. insurgut 207 27.01.21 08:13 Сейчас в теме
ПараметрыВыполненияКоманды.Уникальность - этот параметр отвечает за это. Если он каждый раз одинаковый, то и форма новая создаваться не будет, а откроется уже существующая.
8. Symbiat 27.01.21 08:15 Сейчас в теме
(7) пробовал вообще все Истина / Ложь / Строка (Новый УникальныйИдентификатор) - обработчик команды срабатывает только один раз
11. insurgut 207 27.01.21 08:31 Сейчас в теме
(8) все понял. Принцип размещения команды в Панели навигации формы как раз в том, чтобы отображать что-то в том же окне, а не открывать новых. Можно сделать так:

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


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

Как мне кажется, лучше для такого поведения команду размещать в Командная панель формы.Важное
14. Symbiat 27.01.21 08:55 Сейчас в теме
(11) пробовал ранее, так форма открывается поверх уже открытой, а нужно именно в существующей и с панели навигации.

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

Размещайте в командной панели формы. Либо создавайте несколько команд, чтобы в панели навигации было несколько вкладок.
16. Symbiat 27.01.21 09:08 Сейчас в теме
(15) я бы и рад создать несколько команд на панели навигации, но у меня не получилось управлять их видимостью программно.
Такое ощущение, что панель навигации вообще не приспособлена для того, чтобы программным образом менять логику ее работы.
17. insurgut 207 27.01.21 09:16 Сейчас в теме +0.4 $m
(16) потому что ваша логика - не стандартная. Открывать отдельные окна вы не хотите, а в панели навигации логика у 1С единая - "одна команда - одна вкладка". Для вашей задачи могу предложить только вариант по динамическому созданию страниц формы у элемента справочника, придется изрядно помудрить, но думаю решить реально. Вопрос только в целесообразности.
20. Symbiat 27.01.21 09:36 Сейчас в теме
(17) По предложенному решению понимаю, о чем идет речь.
Спасибо за разъяснения по вопросу из сабжа.
21. SlavaKron 27.01.21 10:17 Сейчас в теме
(14)
пробовал ранее, так форма открывается поверх уже открытой
Потому что в этом случае Окно надо брать не из ПараметрыВыполненияКоманды, а из формы-источника – ПараметрыВыполненияКоманды.Источник.Окно.
22. Symbiat 27.01.21 10:33 Сейчас в теме
(21) суть не поменяется, обработчик команды отработает только один раз
23. SlavaKron 27.01.21 10:43 Сейчас в теме
(22) Вы проверили для команды с группой "Командная панель формы.Важное"? Мой ответ был в контексте обсуждения этого варианта, предложенного в (11).
24. Symbiat 27.01.21 10:59 Сейчас в теме
(23) Не проверял; т.к. изначально поставлена задача обойтись одной панелью навигации.
Но идею я понял, спасибо!
25. Symbiat 28.01.21 14:07 Сейчас в теме
(23) Сделал в итоге как вы предлагали. Подскажите пожалуйста, как отследить событие обратного перехода из дополнительной формы, открытой в окне источника в форму источника по команде "Основное"?
Прикрепленные файлы:
26. SlavaKron 28.01.21 16:50 Сейчас в теме
(25)
как отследить событие обратного перехода
Да вроде бы никак. Можно свою команду сделать, которая переводит фокус на первую форму в окне.
27. Symbiat 28.01.21 17:14 Сейчас в теме
(26)Спасибо! Тоже не нашел инфо о том, что это есть в типовой.
28. Symbiat 09.02.21 16:57 Сейчас в теме
(26) Спрашивал для того, чтобы решить следующую задачу - когда пользователь вернется на основную форму (в том числе и путем нажатия на гиперссылку "Основное" на панели навигации), необходимо сделать модифицированной основную форму, если Модифицированность = Истина у дополнительной.

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

Может посоветуете что-то более рациональное?
29. SlavaKron 09.02.21 17:24 Сейчас в теме
(28)
необходимо сделать модифицированной основную форму, если Модифицированность = Истина у дополнительной

Модифицированность основной формы можно менять сразу вместе с модифицированностью дополнительной в контексте дополнительной формы.
30. Symbiat 09.02.21 21:55 Сейчас в теме
(29) это понятно, а подскажите пожалуйста, как именно это сделать?
не буду же я впиливать эту проверку в каждый обработчик ПриИзменении() дополнительнительной формы...
10. Symbiat 27.01.21 08:30 Сейчас в теме
(7) Ну и повторюсь на всякий случай - сам вызов открытия вспомогательной формы находится в обработчике команды.
А обработчик команды выполняется только один раз; в этом вся проблема.
18. SlavaKron 27.01.21 09:19 Сейчас в теме
(10)
А обработчик команды выполняется только один раз; в этом вся проблема.
Почему это является проблемой? Всё работает так, как и задумано платформой. Вы открыли форму элемента справочника Договоры, нажали на гиперссылку – открылась форма в том же окне. Логически она относится к уже открытой форме элемента справочника Договоры. Нажали на Основное – вернулись на форму элемента, нажали на гиперссылку – снова перешли в уже открытую доп. форму. Зачем еще раз выполнять команду и открытие дополнительной формы?
19. Symbiat 27.01.21 09:27 Сейчас в теме
(18)
Зачем еще раз выполнять команду и открытие дополнительной формы?

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

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот