Здравствуйте!
БГУ2. Есть справочник договора. У формы выбора есть события Выбор и ВыборЗначения.
Пишу обработку, в которой открываю форму выбора Договоров и щелкая на нужные, добавляю в ТЧ выбранное. Но если дважды щелкаю мышкой, то добавляется 2 строки. Из-за того что срабатывают 2 события на форме выбора, Выбор и ВыборЗначения. Если нажимаю кнопку "Выбрать", то добавляется одна строка. Можно ли программно отключить событие или сделать что-нибудь, чтобы и при 2ном нажатии мыши добавлялась одна строка.
это код из формы выбора:
А это вызов формы из моей обработки.
и обработка выбора в обработке
БГУ2. Есть справочник договора. У формы выбора есть события Выбор и ВыборЗначения.
Пишу обработку, в которой открываю форму выбора Договоров и щелкая на нужные, добавляю в ТЧ выбранное. Но если дважды щелкаю мышкой, то добавляется 2 строки. Из-за того что срабатывают 2 события на форме выбора, Выбор и ВыборЗначения. Если нажимаю кнопку "Выбрать", то добавляется одна строка. Можно ли программно отключить событие или сделать что-нибудь, чтобы и при 2ном нажатии мыши добавлялась одна строка.
это код из формы выбора:
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОповеститьОВыборе(Элементы.Список.ТекущиеДанные.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура СписокВыборЗначения(Элемент, Значение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ОповеститьОВыборе(Элементы.Список.ТекущиеДанные.Ссылка);
КонецПроцедуры
ПоказатьА это вызов формы из моей обработки.
&НаКлиенте
Процедура ПодобратьДоговора(Команда)
КонтрагентыТекущиеДанные = Элементы.Контрагенты.ТекущиеДанные;
Если НЕ КонтрагентыТекущиеДанные = Неопределено Тогда
Структура = Новый Структура;
Структура.Вставить("Контрагент", КонтрагентыТекущиеДанные.Контрагент);
Структура.Вставить("Организация", Объект.Организация);
ПараметрыФормы = Новый Структура;
//ПараметрыФормы.Вставить("ФиксированныеНастройки", фиксНастройки);
ПараметрыФормы.Вставить("ЗакрыватьПриВыборе ", Ложь);
ПараметрыФормы.Вставить("Отбор", Структура);
//ПараметрыФормы.Вставить("РежимПросмотра", ОтображениеТаблицы.Список);
ПараметрыФормы.Вставить("РежимВыбора", Истина);
ПараметрыФормы.Вставить("ВыбиратьДополнительные", Истина);
ПараметрыФормы.Вставить("ЗакрыватьПриЗакрытииВладельца", Истина);
ПараметрыФормы.Вставить("ВыборГруппИЭлементов", ИспользованиеГруппИЭлементов.Элементы);
ПараметрыФормы.Вставить("СтандартнаяОбработка ", Ложь);
Форма = ОткрытьФорму("Справочник.Договоры.Форма.ФормаВыбора", ПараметрыФормы, Элементы.Договоры);
КонецЕсли;
КонецПроцедуры
Показатьи обработка выбора в обработке
&НаКлиенте
Процедура ДоговорыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
НоваяСтрока = Объект.Договоры.добавить();
НоваяСтрока.Контрагент = Элементы.Контрагенты.ТекущиеДанные.Контрагент;
НоваяСтрока.Договор = ВыбранноеЗначение;
КонецПроцедуры
По теме из базы знаний
- Форма выбора для реквизита с составным типом данных
- Форма выбора (подбор) в управляемых формах
- Установка отбора для поля ввода управляемой формы через ПараметрыВыбора (без переопределения событий "НачалоВыбора", "Автоподбор")
- Своя форма выбора типа, метаданных (Infostart Toolkit)
- Параметры открытия формы выбора отборов и параметров СКД ("связи параметров выбора" списочных значений СКД)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5)В событии ДоговорыОбработкаВыбора проверяйте, что такого договора еще таблице нет, и только потом добавляйте.
Это все равно придется делать, чтобы не было дублей, когда пользователь выбирает дважды один и тот же договор.
Но то что срабатывает выбор дважды, это занятный баг. Могу предложить написать на ЛК.
Это все равно придется делать, чтобы не было дублей, когда пользователь выбирает дважды один и тот же договор.
Но то что срабатывает выбор дважды, это занятный баг. Могу предложить написать на ЛК.
(7) Может, конечно, я чего не понимаю, но ответ дан конкретно в СП:
Выбор (Selection)
Синтаксис:
Выбор(<ВыбраннаяСтрока>, <Поле>, <СтандартнаяОбработка>)
Описание:
Возникает при двойном щелчке мыши (нажатии клавиши Enter) в ячейке таблицы.
ВыборЗначения (ValueChoice)
Синтаксис:
ВыборЗначения(<Значение>, <СтандартнаяОбработка>)
Описание:
Вызывается при выборе значения из таблицы в режиме выбора.
Синтаксис:
ВыборЗначения(<Значение>, <СтандартнаяОбработка>)
Описание:
Вызывается при выборе значения из таблицы в режиме выбора.
Выбор (Selection)
Синтаксис:
Выбор(<ВыбраннаяСтрока>, <Поле>, <СтандартнаяОбработка>)
Описание:
Возникает при двойном щелчке мыши (нажатии клавиши Enter) в ячейке таблицы.
(1)
Уберите выделенную строку. Для формы выбора не нужное ее использовать. Она по умолчанию будет закрываться при выборе.
Но из-за нее и получаете такой вот эффект.
Вызов обоих обработчиков.
Если же нужно не закрывать при выборе, то может подойдет открытие формы списка?
Или создать дополнительную форму выбора со своими настройками.
ПараметрыФормы = Новый Структура;
//ПараметрыФормы.Вставить("ФиксированныеНастройки", фиксНастройки);
ПараметрыФормы.Вставить("ЗакрыватьПриВыборе ", Ложь);
ПараметрыФормы.Вставить("Отбор", Структура);
//ПараметрыФормы.Вставить("РежимПросмотра", ОтображениеТаблицы.Список);
ПараметрыФормы.Вставить("РежимВыбора", Истина);
ПараметрыФормы.Вставить("ВыбиратьДополнительные", Истина);
ПараметрыФормы.Вставить("ЗакрыватьПриЗакрытииВладельца", Истина);
ПараметрыФормы.Вставить("ВыборГруппИЭлементов", ИспользованиеГруппИЭлементов.Элементы);
ПараметрыФормы.Вставить("СтандартнаяОбработка ", Ложь);
Форма = ОткрытьФорму("Справочник.Договоры.Форма.ФормаВыбора", ПараметрыФормы, Элементы.Договоры);
Показать//ПараметрыФормы.Вставить("ФиксированныеНастройки", фиксНастройки);
ПараметрыФормы.Вставить("ЗакрыватьПриВыборе ", Ложь);
ПараметрыФормы.Вставить("Отбор", Структура);
//ПараметрыФормы.Вставить("РежимПросмотра", ОтображениеТаблицы.Список);
ПараметрыФормы.Вставить("РежимВыбора", Истина);
ПараметрыФормы.Вставить("ВыбиратьДополнительные", Истина);
ПараметрыФормы.Вставить("ЗакрыватьПриЗакрытииВладельца", Истина);
ПараметрыФормы.Вставить("ВыборГруппИЭлементов", ИспользованиеГруппИЭлементов.Элементы);
ПараметрыФормы.Вставить("СтандартнаяОбработка ", Ложь);
Форма = ОткрытьФорму("Справочник.Договоры.Форма.ФормаВыбора", ПараметрыФормы, Элементы.Договоры);
Уберите выделенную строку. Для формы выбора не нужное ее использовать. Она по умолчанию будет закрываться при выборе.
Но из-за нее и получаете такой вот эффект.
Вызов обоих обработчиков.
Если же нужно не закрывать при выборе, то может подойдет открытие формы списка?
Или создать дополнительную форму выбора со своими настройками.
Добрый день! я бы проверял, что подбирается дважды или один раз, сравнивая с текущей таблицей значений, чтобы избежать двойного выбора. или посмотреть - может в настройках мыши в системе чего лишнего есть... Пока других вариантов не вижу
Попробуйте создать в вашей обработке произвольную форму выбора из справочника. Добавить реквизит СправочникСписок типа ДинамическийСписок, таблицу на форму. Флажок таблицы справочника на этой форме "Режим выбора" нужно установить. В модуле этой формы прописать событие А в вашем коде для выбора вызывать эту произвольную форму
&НаКлиенте
Процедура ДоговораВыборЗначения(Элемент, Значение, СтандартнаяОбработка)
ОповеститьОВыборе(Элементы.Договора.ТекущиеДанные.Ссылка);
КонецПроцедуры
//Форма = ОткрытьФорму("Справочник.Договора.Форма.ФормаВыбора", ПараметрыФормы, Элементы.Договора);
Форма = ОткрытьФорму("Обработка.ВашаОбработка.Форма.ПроизвольнаяФормаВыбора", ПараметрыФормы, Элементы.Договора);
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот