Имя: Пароль:
1C
1С v8
Команды управляемого интерфейса 8.2
0 UncleVader
 
24.05.12
21:01
Всем Ку!
Сел разбираться (как всегда на ходу :) с тонкостями незнакомого мне механизма, а именно с вызовом команд управляемого интерфейса.
... и сразу наткнулся на потребность иметь параметризированную общую команду с параметром типа "УправляемаяФорма" или "ДанныеФормыСтруктура". Например хочу сделать свой диалог выбора некоего периода, и добавить функцию его вызова на панель списка документов. Привязывать такую команду к объекту(ссылке) документа неправильно, т.к. данной команды не должно быть видно в форме документа, а только в списке. Есть и еще почему нельзя...
Отсюда у меня возникло жгучее желание привязать команду к любой форме, чтобы в ее (команды) параметр передавалась ссылка на вызвавшую форму со всеми вытекающими ,)
Мне понятно что разрабы это не заложили, поэтому мне приходится добавлять локальную команду даже не объекта, а для формы, и делать в ней какие-то телодвижения.
Или я недознакомился с возможностями чудо-интерфейса или другого пути нет.
!?
1 DrShad
 
24.05.12
21:49
недоознакомился видимо, да и как бы поздно начал знакомиться
2 UncleVader
 
25.05.12
10:54
(1) а по делу?
3 UncleVader
 
25.05.12
12:50
Что никто не подскажет другой путь? ((
4 gosn1ck
 
25.05.12
12:54
сделай общую команду, в чем проблема?
5 UncleVader
 
25.05.12
15:40
(4) Проблема в том что я не знаю как в нее передать контекст вызывающей формы чтобы потом установить в ней период списка и его обновить
6 UncleVader
 
25.05.12
15:41
(4) и еще, какую группу указать общей команде? Делать ее параметризированной нельзя!
7 На стороне добра
 
25.05.12
16:38
(0) Делаешь общую команду, привязываешь её к "Командная панель формы.Важное", в качестве типа параметра команды указываешь ссылку на документ. В форме документа, в командном интерфейсе снимаешь видимость этой команды. А в списке она остается. В модуле команды вызываешь свою форму.
8 UncleVader
 
25.05.12
16:46
(7) пробовал, так нельзя - если список документов будет пуст, то команда не выполнится на системном уровне, платформа ругнется что нельзя выполнять команду с пустым параметром, ну как-то так
9 Юрий Лазаренко
 
25.05.12
16:48
(8) Добавь локальную команду в форму списка, там можно будет отловить момент отсутствия документов в списке.
10 На стороне добра
 
25.05.12
16:49
Посмотри в УТ 11 "Дополнительные сведения". Это кажется аналог Свойств и категорий. В общем там в качестве параметра указываются ссылки.

в (8) правильно говорит
11 UncleVader
 
25.05.12
16:51
(9) так и делаю, но мне не нравится - в каждой форме надо иметь код этой команды, а я так не хочу
(10) пойду посмотрю...
12 UncleVader
 
25.05.12
22:35
... посмотрел.
Есть общая команда "ДополнительныеСведения", привязанная к ссылкам на некоторые объекты, в т.ч. документы и справочники, но в самих формах объектов и списков видимость этой команды выключена, т.е. не применяется.
Таким образом вопрос остается нерешенным - как из пустого списка вызвать общую параметризированную команду?
13 Юрий Лазаренко
 
26.05.12
11:25
(11) Зачем иметь код в каждой форме? Вызывай код в общем модуле. Тебе в любом случае придется извращаться, например делать кнопку вызова общей команды невидимой или недоступной, если список пуст. Проще уж добавить локальную команду на форму.
14 UncleVader
 
26.05.12
11:40
(13) Так и делаю, добавляю команду в каждую форму и назначаю ей вот такой код, а хотелось иметь один код

&НаКлиенте
Процедура ВыбратьПериод(Команда)
   Если ОбщиеФункцииНаКлиенте.ВыбратьПериод(Элементы.Список.Период.ДатаНачала,Элементы.Список.Период.ДатаОкончания) Тогда
       Элементы.Список.Обновить();
   КонецЕсли;
КонецПроцедуры
15 Юрий Лазаренко
 
26.05.12
18:08
(14) Я наверно что-то недопонял. У тебя и так будет один код во всех процедурах всех форм, если у всех списков с документами (элементов формы) будет одно имя - "Список".
Если ты имеешь в виду, что не хотелось бы вносить изменения в код каждой формы, то ИМХО такой вариант не сработает, будет выдаваться ошибка, если список пуст.
16 Юрий Лазаренко
 
26.05.12
18:14
+(15) Хотя почему бы не попробовать. Если для команды не задать свойство "Тип параметра команды", то ее можно будет поместить на любую форму со списком, при этом она не будет привязана к этому списку и даже если он будет пустой, то команда все равно сработает. Затем в коде команды можно отловить список:

ПараметрыВыполненияКоманды.Источник.Элементы.Список

Из него получить период:

ПараметрыВыполненияКоманды.Источник.Элементы.Список.Период

Как-то так.
17 UncleVader
 
26.05.12
18:31
(15) именно из-за ошибки пустого списка я отказался от этой идеи
(16) Вот оно ,)) спасибо, главное правильно выбрать группу, поместить в какую-то подсистему и оттуда перетащить на форму из глобальных независимых команд!
18 Юрий Лазаренко
 
26.05.12
18:41
(17) Нема за що ))