Здравствуйте. Конфигурация ПУБ 7.70.47.
Процедура ОбработкаПодбора(Выб) не вызывается, если вызывать ОткрытьПодбор("Справочник.ТМЦ","ДляПодбора",Контекст,0,ТМЦ); из процедуры ПриНачалеВыбораЗначения(Рекв,ФлагСтандОбр).
Если вызов ОткрытьПодбор("Справочник.ТМЦ","ДляПодбора",Контекст,0,ТМЦ) привязать к кнопке "Подбор" - то все Ок.
Почему?
потрібно перепризначити стандартну обробку системної процедури, ось так
ПриНачалеВыбораЗначения(Рекв,ФлагСтандОбр)
ФлагСтандОбр = 0;
ОткрытьПодбор
...
Именно так и делаю. Процедура ОбработкаПодбора(..) не вызывается
Що "Отладчик" говорить?
хм, дійсно не заходить в ОбработкаПодбора у відлагоджувачі, певно це один із нюансів (де їх потрібно використовувати або де вони не працюють) як із процедурою Активизировать, який не описаний в документації
Решил проблему. 1С строго следует вызовам пар процедур: ПриНачалеВыбораЗначения(..) -> ОбработкаВыбораЗначения(..) и ОткрытьПодбор(..) -> ОбработкаПодбора(..).
При вызове из ПриНачалеВыбораЗначения(..) процедуры ОткрытьПодбор(..) вызывается ОбработкаВыбораЗначения(..), а не ОбработкаПодбора(..).
В продолжение темы подбора.
Нужно, чтобы при выборе в форме подбора (выбора) элемента ТМЦ делался анализ на правильность выбора. Например, выбрали ТМЦ вида Услуга, а нужно вида Товар.
Нужно выполнять проверку именно в форме подбора, а не в документе. Чтобы лишний раз не открывать форму подбора.
Как понимаю, стандартных средств нет?
делать проверку в ОбработкаПодбора(..).
При этом форма подбора, вызываемая из ОткрытьПодбор(...), закроется. А мне это не нужно, если выбранное значение не удовлетворяет условию.
а ПриВыбореСтроки - не проходит?
Вот сейчас отлаживаю. В форме подбора в ПриВыбореСтроки() процесс не заходит. Не могу понять почему?
Нашел ошибку - вызывал не ту форму подбора. Блиииин!
все формы, которые открываются из ПриНачалеВыбораЗначения - открываются в режиме выбора значения. на этом основан финт "подмена формы выбора" - обнуление в ПриНачалеВыбора ФСО и "ОткрытьФорму" чего надо (если надо - с получением контекста открытой формы сразу после этого оператора и изменением через контекст чего угодно в открытой для выбора форме). при этом выбор в открытой форме значения передает управление на ОбработкуВыбораЗначения.
передача из подбора в ОбработкаПодбора может быть реализована программным отказом от выбора (в ПриНачалеВыбораЗначения обнулить ФСО) плюс (там же) "Форма.ОбработкаОжидания("ОткрытьКакойНадоПодбор",1), и в модуль добавить процедуру "ОткрытьКакойНадоПодбор", в которой ОткрытьПодбор как надо (не забыв с самого начала "Форма.ОбработкаОжидания("",0)" ). в этом случае подбор откроется через секунду и отработает стандартно с передачей управления в ОбработкаПодбора.
прим.: хотя на моей памяти и попадались "шустрики", опережавшие секундное ожидание - это лечилось предупреждением(таймаут=1сек) о переходе к подбору. но это было необходимо на практике очень редко.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua