|
УФ. Нестандартный выбор документа | ☑ | ||
---|---|---|---|---|
0
akhmadey
17.07.15
✎
07:02
|
В поле табличной части нужно выбрать документ с использованием собственной формы выбора. В этой форме есть динамический список с установленным свойством РежимВыбора. Вроде бы все работает, но в этом списке есть поле-гиперссылка, которая открывает другой документ. Суть в том, что перед тем, как сделать выбор, может возникнуть необходимость посмотреть документ по гиперссылке. При нажатии на гиперссылку документ открывается, но и выбор тоже происходит. Если вместо динамического списка использовать таблицу значений, то нет выбора по двойному щелчку, зато документ открывается без лишних телодвижений. Вопрос: можно ли научить динамический список не производить выбор при нажатии в поле с гиперссылкой? Или все-таки использовать таблицу значений и кнопку для осуществления выбора?
|
|||
1
samozvanec
17.07.15
✎
08:50
|
у ТЗ есть событие Выбор
|
|||
2
akhmadey
17.07.15
✎
09:06
|
(1) Проблема в том, что ТЗ не позволяет осуществить выбор и закрыть форму по двойному щелчку. Происходит просто редактирование поля. А если поле сделать гиперссылкой, то с помощью этого события можно, например, отрыть документ, который в этом поле есть. Я совершенно не против использовать ТЗ, но чтобы тогда можно было выбирать можно было двойным щелчком, а не редактировать поля.
|
|||
3
Остап Сулейманович
17.07.15
✎
09:12
|
(0) В таком варианте РежимВыбора убить на месте.
Пользовать ОповеститьОВыборе в нужных вам местах и ситуациях. |
|||
4
butterbean
17.07.15
✎
09:13
|
(2) можно сделать ТолькоПросмотр, обрабатывать событие Выбор, закрывать форму программно... но я бы не парился и просто в форме с дин. списком убрал гиперссылку из таблицы на форму, и менял ее при активизации строки
|
|||
5
akhmadey
17.07.15
✎
09:24
|
(3) Если убить режим выбора, то он будет просто открывать документ, который должен быть выбран, вместо того, чтобы выбрать его в поле таблицы значений.
|
|||
6
Остап Сулейманович
17.07.15
✎
09:28
|
(5) Это почему? Как запрограммируешь выбор так он и отработает. Запрограммируешь открыть - откроет, запрограммируешь вернуть как значение выбора оно так и сделает.
Стандартно - да. Откроет. НО система позволяет отказаться от стандартной обработки и выполнить ее так, как нужно в конкретном случае. |
|||
7
akhmadey
17.07.15
✎
09:30
|
(6) То есть, если я правильно понял, отменить стандартную обработку и для каждого поля описывать необходимые действия?
|
|||
8
Остап Сулейманович
17.07.15
✎
09:33
|
(7) Что значит "для каждого поля"? Ты выбор где выполняешь? В табличном поле? Вот его событие и переопредели. А там уже внутри смотри какая колонка сейчас текущая. Гиперссылка - открыли. Не гиперссылка - сказали, что это нужно выбрать.
|
|||
9
akhmadey
17.07.15
✎
09:38
|
(8) Так, не совсем понятно, пойдем другим путём. На сегодняшний день Обработчик выбора выглядит таким образом:
&НаКлиенте Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) Если Элементы.Список.ТекущиеДанные <> Неопределено Тогда Если Поле.Имя = "СписокСсылка" Тогда ПоказатьЗначение(Неопределено, Элементы.Список.ТекущиеДанные.Ссылка); ИначеЕсли Поле.Имя = "СписокПоступление" Тогда ПоказатьЗначение(Неопределено, Элементы.Список.ТекущиеДанные.Поступление); КонецЕсли; КонецЕсли; КонецПроцедуры Что не так? |
|||
10
Остап Сулейманович
17.07.15
✎
09:44
|
(9) Не отключена СтандартнаяОбработка. Поэтому вместе с ПоказатьЗначение... выполняется выбор.
|
|||
11
akhmadey
17.07.15
✎
09:52
|
(10) При ее отключении не происходит выбора по двойному щелчку, зато как нужно открываются документы. Если при таком раскладе все-таки не убивать РежимВыбора, то выбор будет происходить по нажатию кнопки Выбор в командной панели формы. В принципе, пользователю, может и подошел такой вариант, но это как-то не по-спортивному. Хочется все-таки использовать двойной щелчок мышью... Либо убедиться, что это нереально и успокоиться ))).
|
|||
12
Остап Сулейманович
17.07.15
✎
09:58
|
(11) Не нужно стандартную обработку выключать для любого случая.
Ну возьми же проверь текущую колонку и реши что делать. Например так: Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) Если Поле.Имя = "СписокСсылка" Тогда СтандартнаяОбработка = Ложь; //В этом случае выбор не нужен. ПоказатьЗначение(...); ИначеЕсли Поле.Имя = "СписокПоступление" Тогда СтандартнаяОбработка = Ложь; //И в этом случае выбор не нужен. ПоказатьЗначение(...); КонецЕсли; //В любом другом выбор выполниться сам. КонецПроцедуры |
|||
13
Остап Сулейманович
17.07.15
✎
10:00
|
+ (12) Вот это вот :
Если Элементы.Список.ТекущиеДанные <> Неопределено Тогда не нужно. Потому что в случае когда на что-то нажали - то значит это что-то есть. И проверка на то, что этого что-то нет не имеет смысла. |
|||
14
akhmadey
17.07.15
✎
10:16
|
(13) Остап Сулейманович, снимаю шляпу. Все получилось как нельзя лучше. Вопрос закрыт. Всем большое спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |