Имя: Пароль:
1C
1С v8
Обработка выбора для списка значений
, ,
0 beholder13
 
16.06.18
16:30
Добрый день, коллеги.

Платформа 8.3.11.2867.

Есть реквизит формы с типом СписокЗначений с указанным типом значения списка. На форму помещено поле формы с видом Поле ввода, связанное с данным реквизитом (там можно вывести или таблицой, или по старинке, в поле ввода со строковым представлением). Поле ввода позволяет вызвать форму выбора списка значений, после закрытия которой кнопкой ОК выбранные значения помещаются в реквизит.
Мне нужно отловить момент закрытия этой формы до помещения выбранного значения в реквизит, чтобы иметь возможность откатить результат выбора. То есть, обычная обработка выбора. Незадача в том, что событие обработки выбора элемента не отрабатывает.

Скажите, пожалуйста, в чем здесь кроется невероятная хитрость?

Заранее благодарю.

PS. Так же можно рассмотреть старый способ через обработку начала выбора, но тут нужно сохранить асинхронку. Возможно, есть вариант вызвать эту форму выбора/подбора значения списка значений методами платформы?
1 Franchiser
 
гуру
16.06.18
17:41
События ПередЗакрытием, Призакрытии в этой форме. В чем проблема?
2 beholder13
 
16.06.18
18:13
(1) В том, что Вы, коллега, абсолютно не правы. Это форма не прикладного объекта, по сути, это форма диалога, генерируемая платформой. Но проблема даже не в этом, даже если бы этобыла форма выбора справочника и действительно можно было бы использовать методологию оповещений - отлавливать события и данные, локально требуемые в контексте одной сущности, на уровне общего универсального объекта - это, знаете ли, моветон. Или, если проще, охрененно кривой гвоздь.
3 RomanYS
 
16.06.18
18:33
Не совсем понятно "откатить результат выбора". Если ПриИзменении уже поздно, то открывай свою форму и отрабатывай её события.
4 beholder13
 
16.06.18
18:46
(3) Бывают прикладные ситуации, когда требуется отработать результат выбора или же просто произвести некое пользовательское действие (задать вопрос и подправить прямо набор или косвенно произвести действия) до помещения значения непосредственно в объект. Допустим, пользователь выбрал значение, которое подразумевает перезаполнение каких-либо коллекций на форме. Надо пользователя об этом предупредить и спросить, готов ли он к этому. Если не готов - откатываем, то есть, не даем платформе поместить значение окончательно. Именно для этого существет событие обработки выбора, которое всегда определено для выбираемых типов значений и штатно отрабатывает для них:

ОбработкаВыбора (ChoiceProcessing)
<..>
Описание:
Вызывается после осуществления выбора, но до помещения выбранного значения в элемент управления.

Беда в том, что оно не отрабатывает для списка значений.

И, опять же, эта форма не определяется разработчиком в конфигураторе для прикладного объекта, это форма выбора и подбора значений самого списка значений, универсального объекта, которая генерируется автоматически. В нее нельзя (и незачем) залезть и что-то поправить, тем более повлиять на результат выбора и выполнить какие-либо действия в контексте вызвавщей ее сущности.
5 beholder13
 
16.06.18
18:51
(3) ПриИзменении вызывается уже после помещения значения в объект и предотвратить его вызов можно как раз таки в обработке выбора.
6 RomanYS
 
16.06.18
18:57
(4)(5) Ты жалуешься или решение ищешь? Я тебе могу подтвердить, что обработка выбора не работает в данном случае на моей платформе тоже. Сделай костыль красивым!
7 beholder13
 
16.06.18
19:03
(6) Я пытаюсь понять, как платформа ведет себя в данном случае. Костыль делать не хочу, спасибо, но я не такой =)
8 Franchiser
 
гуру
16.06.18
19:05
(7) а какой ты?
9 Franchiser
 
гуру
16.06.18
19:11
Попробуй через однократный вызов обработчика ожидания
10 beholder13
 
16.06.18
19:15
(9) В какой момент? Я думал об этом, делать это в НачалоВыбора и помещать уже в обработке оповещения самостоятельно значение. Но охота сохранить аутентичность, как тогда вызвать эту форму выбора для списка значений?
11 Franchiser
 
гуру
16.06.18
19:20
В тот обработчик который сейчас срабатывает : началовыбораизсписка().
12 beholder13
 
16.06.18
19:24
(11) НачалоВыбора
13 RomanYS
 
16.06.18
19:45
(10) "Эту форму" возможно не получится вызвать. По крайней мере ПоказатьВводЗначения не работает со списком значений. Вопрос: зачем эта? Нарисуй свою со всем нужным функционалом.
14 beholder13
 
16.06.18
20:08
(13) Костыли и велосипеды, программируем как умеем?)
15 hhhh
 
16.06.18
21:13
(14) ну как раз именно вы и предлагаете костыль. А вас все уговаривают этого не делать.
16 RomanYS
 
16.06.18
21:40
(14) Моя модель: использовать те возможности, которые необходимы, для достижения целей.
Твоя модель: писать что-то не работающие и плакать "почему 1с это не реализовало". Хочешь конструктива - напиши в 1с, в 8.8 сделают, или не сделают.
17 beholder13
 
16.06.18
22:59
(15) (16) Очень интересные выводы у Вас, господа =)
18 beholder13
 
17.06.18
04:03
(16) Не знаю, откуда у Вас появилось впечатление, что я на что-то жалуюсь. Я, как раз таки, напротив, интересуюсь тем, что в действительности реализовано, раз уж обычная методика не работает. Я не прошу придумать ограниченное лишь Вашей фантазией N-ное количество решений неизвестной Вам задачи, прошу лишь прояснить момент, который не описан в СП. Если штатных механизмов в действительности нет в тех моментах, которые в обычных ситуациях выглядят наиболее чисто, я прекрасно решу ее чуть по-другому, но куда более аккуратно, чем любое из сделаных выше предложений.

Коллеги, прошу Вас, мне нужно лишь убедиться, что описанное в (0) действительно не работает для списков значений или работает, но иначе, и я обращаюсь за помощью, так как, при всей детальности и информативности СП, в данном случае расширение элементов для списка значений описано только для таблицы формы.