Режим открытия формы списка, получить в самой форме...?

Автор Злоп, 23 октября 2024, 00:20

« назад - далее »

Злоп

Справочник. Форма списка - одна.
Открывается эта форма списка, программно или интерактивно - не суть.
Можно ли как-то получить режим открытия формы - как она открыта? Просто, для выбора, для подбора?


Злоп

если для нескольких - значит это форма в режиме подбора.
а если для выбора одного - это может быть и форма подбора с флагом выбора одного значения или Спр.Выбрать
- как их различить?

АЛьФ

Насколько я понимаю, подбор всегда не модально открывается, а выбор в любом случае модально. Нет?

Злоп

В извращенных случаях и подбор может модально открываться.
Но подсказка мне понравилась.

Злоп

Это я к тому, чтобы при разных режимах открытия активизировать разные реквизиты.
Например просто открыли форму - активизировать кнопку "Закрыть". Для Выбора открыта форма - фокус сразу на VyX ставить...

Харлампий Дымба

Цитата: АЛьФ от 23 октября 2024, 10:51Насколько я понимаю, подбор всегда не модально открывается, а выбор в любом случае модально. Нет?
Там действительно много вариантов, тоже была такая мысль. Но если обычный интерактивный выбор - то форма также открывается немодально.

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

По итогам у меня получилось так:
  • для ОткрытьПодбор(): Форма.РежимВыбора()=1 или 2 (если вызвать из ПриОткрытии, то всегда 1, независимо от множественности выбора), Форма.МодальныйРежим()=0, выбор групп можно задать через контекст открытого подбора Конт.ВыборГруппы(1);
  • для выбора из реквизита диалога: Форма.РежимВыбора()=1, Форма.МодальныйРежим()=0, выбор группы можно задать через метод реквизита ВыбТовар.ВыборГруппы(1);
  • для .ВвестиЗначение(): Форма.РежимВыбора()=1, Форма.МодальныйРежим()=1, выбор группы из родительской формы задать нельзя и он, как ни странно, всегда включен: ВыборГруппы()=1;
  • для .Выбрать(): Форма.РежимВыбора()=1, Форма.МодальныйРежим()=1, выбор группы можно предварительно задать объекту: Спр.ВыборГруппы(1); Спр.Выбрать().
 
Выбор групп я смотрел для себя, чтоб разобраться, когда как отрывается, вдруг кому пригодится.

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