|
Обработка выбора значения составного типа | ☑ | ||
---|---|---|---|---|
0
neo1109
14.08.12
✎
10:37
|
Имеем поле на форме составного типа: строка и несколько видов документов.
При выборе значения происходит следующее: 1. Начало выбора 2. Выбор типа 3. Если выбран какой нибудь из документов - открытие формы списка Вопрос: как "влезть" между пунктами 2 и 3? т.е. сделать следующее: если выбран тип документа, то форму списка открыть с нужным отбором. |
|||
1
DrShad
14.08.12
✎
10:38
|
в пункте 1 СтандартнаяОбработка = Ложь, выбрать тип и открыть форму с нужным выбором через собственный код
|
|||
2
neo1109
14.08.12
✎
10:43
|
(1) +100
А как программно выбрать тип? |
|||
3
hhhh
14.08.12
✎
10:45
|
привестизначение
|
|||
4
DrShad
14.08.12
✎
10:45
|
МойРеквизит = Документы.ПриходныйКассовыйОрдер.ПустаяСсылка() как пример
|
|||
5
DrShad
14.08.12
✎
10:45
|
(3)+1
|
|||
6
neo1109
14.08.12
✎
10:48
|
Про ПривестиЗначение() понятно. Но это я сам назначаю реквизиту тип. А мне надо у пользователя спросить...
|
|||
7
Godofsin
14.08.12
✎
10:51
|
(6) Нахера? Чо он сам выбрать не может?
|
|||
8
neo1109
14.08.12
✎
10:55
|
(6) кто "он"?
начнем сначала. надо: 1. открыть окно выбора типа из списка тех, что доступны реквизиту 2. в зависимости от выбранного типа действовать дальше |
|||
9
neo1109
14.08.12
✎
10:55
|
* (7) кто "он"?
|
|||
10
anddro
14.08.12
✎
10:55
|
(6) обработчики НачалоВыбора вызывается и при начале выбора типа, и при начале выбор значения.
обработчик ПриИзменении вызывается и после окончания выбора типа, и после окончания выбора значения. |
|||
11
anddro
14.08.12
✎
10:57
|
(8) сделай эти 2 обработчика, и поставь в каждом точку останова. Потом сделай выбор вначале типа, потом значения, сразу все поймешь.
|
|||
12
hhhh
14.08.12
✎
10:58
|
(9) пользователь видит поле ввода и там есть буковка "Т". Он на нее нажимает и выбирает тип. Какого такого вы у него еще дополнительно собрались спрашивать? Он без вас спокойно может открыть окно выбора типа.
|
|||
13
Godofsin
14.08.12
✎
11:00
|
(12) +1.
(8)Если надо заполнение из другой формы, то впихай в СЗ все возможные значения, пусть из них пользователь выбирает. |
|||
14
anddro
14.08.12
✎
11:05
|
(12) телепатирую: после выбора типа сразу начать выбор значения.
В штатном режиме вначале надо нажать на выбор типа [Т], потом на выбор значения [...] |
|||
15
anddro
14.08.12
✎
11:08
|
Если в (14) правильное предположение, то вот такой вариант:
Процедура ПолеВвода1ПриИзменении(Элемент) Если НЕ ЗначениеЗаполнено(ЭтаФорма.ПолеВвода1) Тогда ЭтоДокумент = Ложь; Попытка ЭтоДокумент = Метаданные.Документы.Содержит(ЭтаФорма.ПолеВвода1.Метаданные()); Исключение КонецПопытки; Если ЭтоДокумент Тогда ФормаВыбора = Документы[ЭтаФорма.ПолеВвода1.Метаданные().Имя].ПолучитьФормуВыбора(,Элемент,); ФормаВыбора.Открыть(); СтандартнаяОбработка = Ложь; КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
16
ZloyProger
14.08.12
✎
11:13
|
(15) По-моему проше так:
ТипРекв = ТипЗнч(Элемент.Значение Если Не(ТипРекв) = Тип("Неопределено")) Тогда //пользователь уже выбрал тип и делаешь что тебе надо Если ТипЗнч(ТипРекв) = Тип("ДокументСсылка.КакойНадо") Тогда Форма = Документ.КакойНадо.ПолучитьФорму("КакуюНадо"); Отбор = Форма.ДокументСписок.Отбор; //извращаещься с отбором как хочешь Форма.Открыть(); КонецЕсли; КонецЕсли; |
|||
17
ZloyProger
14.08.12
✎
11:15
|
Это судя по моей телепатии из (0) "о форму списка открыть с нужным отбором."
|
|||
18
neo1109
14.08.12
✎
11:23
|
(16) это я так понимаю в НачалоВыбора надо вставить (?)
еще такой вопрос: чем заменить "Элемент.Значение" в случае управляемой формы? |
|||
19
ZloyProger
14.08.12
✎
11:24
|
(18) Хм.. Это я так понял 8.2, в ней к сожалению не силен пока((
|
|||
20
Ksandr
14.08.12
✎
11:26
|
Хорошо бы сделать так:
начало выбора стандартная обработка ложь ВыбранноеЗначение = ВыбратьИзСписка(СписокТипов); Если Тогда Иначе КонецЕсли |
|||
21
anddro
14.08.12
✎
11:29
|
(16) и что ты будешь делать, когда в составном типе 10 видов документов? И не путай ПолучитьФорму и ПолучитьФормуВыбора.
Вариант (15) не зависит от того, какие типы ты указал, т.е. при расширении типов не надо менять код. |
|||
22
ZloyProger
14.08.12
✎
11:38
|
(21) Во-первых, если 10 видов документов, то возможно и отборы нужны разные, в твоем варианте это тоже не учтено (и в моем и в твоем придется добавлять ИначеЕсли с обработками под разные типы отборов)
Во-вторых, ПолучитьФормуВыбора() = ПолучитьФорму("НазваниеОсновнойФормыВыбора") Так что вот) Нет ничего абсолютного, я не претендую на истину в первой инстанции, имхо зачем писать трай-эксепт, если можно писать так, что исключительной ситуации в принципе не может возникнуть? |
|||
23
neo1109
14.08.12
✎
11:40
|
(22) отбор нужен для всех документов один
|
|||
24
neo1109
14.08.12
✎
11:40
|
единственное тока возможно потребуется проверка на наличие в документе нужного реквизита...
|
|||
25
ZloyProger
14.08.12
✎
11:42
|
Ну тогда да, однозначно (15). Ну через метаданные проверишь есть или нет.
|
|||
26
neo1109
14.08.12
✎
11:52
|
а как теперь (15) реализовать для управляемого приложения?
|
|||
27
neo1109
14.08.12
✎
14:42
|
Вопрос сюда же...
Есть документ, есть ТЧ, в ней колонка составного типа. Как получить список типов этой колонки? Если что применительно к управляемому приложению... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |