Обработчики Выбор и ВыборЗначения для элемента управления УФ (ТаблицаФормы)
8.3.20.1789 ДО
Работаю с динамическим списком на форме выбора элемента справочника, заметил несколько интересных вещей, прошу знающих уточнить должно ли так быть или не настроил?
1. Форма выбора соответственно используется во многих объектах ИБ для подбора значений. Выбор значений произвожу в элементе управления формы Список (связан с Динамическим списком формы). Заметил, что вопреки описанию в СП при двойном щелчке мыши или нажатии Enter срабатывает не только событие "СписокВыбор", но и "СписокВыборЗначения" (следующим после "СписокВыбор"), что странно, так как планировать логику поведения становится труднее. При этом выбор значения из списка в режиме выбора (нажатие стандартной команды "Выбрать") нормально запускает только обработчик "СписокВыборЗначения". "РежимВыбора" в параметрах формы при создании на сервере - Ложь. В начале полагал, что это поведение как-то связано с МножественныйВыбор, но проверил в обоих значениях, при вызове формы выбора из разных объектов - поведение аналогичное.
2. При выборе объектов из списка выбираю стандартной командой "Выбор". В выборке присутствует помеченный на удаление объект, то есть пользователь может выбрать не только проведенные документы, но и помеченные на удаление. Если выбор документов начинался с помеченного на удаление (то есть помеченный на удаление объект находится в массиве "ВыбраннаяСтрока" под индексом 0), или выбран один, но помеченный на удаление документ - перед запуском обработчиков событий срабатывает платформенное уведомление о выборе помеченного на удаление объекта с предложением продолжить выбор или отказаться. Во всех других случаях (первый в выборке документ не помечен на удаление) платформенная проверка не срабатывает. То есть я могу выбрать из списка 10 документов, но начать с обычного проведенного, 9 других будут помеченными на удаление, и платформа пропустит эти документы и даст их подобрать без предупреждения. То есть, предположительно, платформа почему-то проверяет на пометку удаления только первый элемент массива выбранных объектов.
Работаю с динамическим списком на форме выбора элемента справочника, заметил несколько интересных вещей, прошу знающих уточнить должно ли так быть или не настроил?
1. Форма выбора соответственно используется во многих объектах ИБ для подбора значений. Выбор значений произвожу в элементе управления формы Список (связан с Динамическим списком формы). Заметил, что вопреки описанию в СП при двойном щелчке мыши или нажатии Enter срабатывает не только событие "СписокВыбор", но и "СписокВыборЗначения" (следующим после "СписокВыбор"), что странно, так как планировать логику поведения становится труднее. При этом выбор значения из списка в режиме выбора (нажатие стандартной команды "Выбрать") нормально запускает только обработчик "СписокВыборЗначения". "РежимВыбора" в параметрах формы при создании на сервере - Ложь. В начале полагал, что это поведение как-то связано с МножественныйВыбор, но проверил в обоих значениях, при вызове формы выбора из разных объектов - поведение аналогичное.
2. При выборе объектов из списка выбираю стандартной командой "Выбор". В выборке присутствует помеченный на удаление объект, то есть пользователь может выбрать не только проведенные документы, но и помеченные на удаление. Если выбор документов начинался с помеченного на удаление (то есть помеченный на удаление объект находится в массиве "ВыбраннаяСтрока" под индексом 0), или выбран один, но помеченный на удаление документ - перед запуском обработчиков событий срабатывает платформенное уведомление о выборе помеченного на удаление объекта с предложением продолжить выбор или отказаться. Во всех других случаях (первый в выборке документ не помечен на удаление) платформенная проверка не срабатывает. То есть я могу выбрать из списка 10 документов, но начать с обычного проведенного, 9 других будут помеченными на удаление, и платформа пропустит эти документы и даст их подобрать без предупреждения. То есть, предположительно, платформа почему-то проверяет на пометку удаления только первый элемент массива выбранных объектов.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
не очень понятно, в итоге вам нужны помеченные на удаление документы в выборке или нет?
можно целиком полагаться на логику платформы при выборе и ни чего не писать и не гкодить!
а если взялись переписывать обработку выбора, тогда все и обрабатывайте сами
где надо вообще отфильтруйте, уберите из списка помеченные на удаление документы,
или проверяйте массивы, что там пользователь навыбирал. Все в ваших руках - кодах!
не забывайте параметр СтандартнаяОбработка = Ложь; - ставить,
можно целиком полагаться на логику платформы при выборе и ни чего не писать и не гкодить!
а если взялись переписывать обработку выбора, тогда все и обрабатывайте сами
где надо вообще отфильтруйте, уберите из списка помеченные на удаление документы,
или проверяйте массивы, что там пользователь навыбирал. Все в ваших руках - кодах!
не забывайте параметр СтандартнаяОбработка = Ложь; - ставить,
Насчёт первого пункта.
Сложно сказать, как именно
Второй пункт.
Если задача состоит в том, чтобы не дать возможность выбирать пользователям помеченные на удаление документы, что мешает переопределить событие у вызываемого элемента "НачалоВыбора"? Выключить СтандартнуюОбработку и явно открыть форму выбора, передав параметры отбора?
Сложно сказать, как именно
планировать логику поведения становится труднее
если не ясно, что нужно сделать, и почему вызов ещё одного события этому мешает. Но заметка любопытная... надо будет поискать информацию.
Второй пункт.
Если задача состоит в том, чтобы не дать возможность выбирать пользователям помеченные на удаление документы, что мешает переопределить событие у вызываемого элемента "НачалоВыбора"? Выключить СтандартнуюОбработку и явно открыть форму выбора, передав параметры отбора?
(2) (3) Дело в том, что пользователь может выбирать помеченные на удаление документы. Но при этом ему надо показывать диалог. И платформа показывает этот диалог - только если выбран один помеченный на удаление документ или в выборке нескольких документов первым выбран помеченный на удаление. Про остальное написал в теле поста.
Свою логику команд сделать просто - вопрос в том, что тогда придется проверять и переделывать обработки выбора во всех владельцах, которые вызывают мою форму выбора (будь то другая форма или поле формы), а это большие затраты по времени.
Плюс ко всему мне необходимо еще и добавить схожий диалог с пользователем при выборе документа с определенным значением конкретного реквизита.
Проблема еще и в том, что после вызова диалога (Асинх использовал) повторный вызов стандартного обработчика Выбор или ВыборЗначения ни к чему не приводит, они просто ничего не передают владельцу, хотя в отладчике видно, что они отрабатывают. Соответственно использовать свою команду не получается, так как рекурсивные вызовы стандартных обработчиков элементов управления не работают...
У меня получается, что форма выбора изначально имеет автоматически заполненный отбор, без помеченных на удаление и без документов с определенным значением конкретного реквизита. Но пользователь должен иметь возможность (и имеет) отключить этот отбор и выбрать-таки в документ-владелец запрещенные документы с формы выбора.
Свою логику команд сделать просто - вопрос в том, что тогда придется проверять и переделывать обработки выбора во всех владельцах, которые вызывают мою форму выбора (будь то другая форма или поле формы), а это большие затраты по времени.
Плюс ко всему мне необходимо еще и добавить схожий диалог с пользователем при выборе документа с определенным значением конкретного реквизита.
Проблема еще и в том, что после вызова диалога (Асинх использовал) повторный вызов стандартного обработчика Выбор или ВыборЗначения ни к чему не приводит, они просто ничего не передают владельцу, хотя в отладчике видно, что они отрабатывают. Соответственно использовать свою команду не получается, так как рекурсивные вызовы стандартных обработчиков элементов управления не работают...
У меня получается, что форма выбора изначально имеет автоматически заполненный отбор, без помеченных на удаление и без документов с определенным значением конкретного реквизита. Но пользователь должен иметь возможность (и имеет) отключить этот отбор и выбрать-таки в документ-владелец запрещенные документы с формы выбора.
(4) Значит форму могут вызвать во многих местах... в таком случае я бы попробовал переопределить событие у данной формы выбора "ПередЗакрытием". Через метод ВыделенныеСтроки получить массив из ссылок на документы и пробежаться по списку через цикл (уже на сервере) и если хотябы один документ помечен на удаление, прерываемся и в параметр события ТекстПредупреждения присвоить свой текст. Или вместо текста, вызвать свой вопрос с кнопками и в зависимсти от ответа пользователя делать Отказ = Истина или нет.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот