Всем Добрый день!
Есть справочник Значения Свойств Объектов, в нем содержатся значения и их свойства. На этот справочник ссылается поле ввода "дивизион" в справочнике Контрагенты.Делаю отбор, чтоб выводились только те значения, у которых свойство="Дивизион".Вся загвоздка в том, что у этого справочника нет формы выбора...есть только формы списка,группы и элемента. Так вот, когда я ссылаюсь на Форму списка, он не дает мне выбрать значение,но отбор делает. Но, если убрать нижеприведенные процедуры и функции, при нажатии "Выбрать из списка" -"Показать все" он открывает форму выбора значений свойств...второго похожего справочника нет.Вопрос где он берет эту форму выбора?
Есть справочник Значения Свойств Объектов, в нем содержатся значения и их свойства. На этот справочник ссылается поле ввода "дивизион" в справочнике Контрагенты.Делаю отбор, чтоб выводились только те значения, у которых свойство="Дивизион".Вся загвоздка в том, что у этого справочника нет формы выбора...есть только формы списка,группы и элемента. Так вот, когда я ссылаюсь на Форму списка, он не дает мне выбрать значение,но отбор делает. Но, если убрать нижеприведенные процедуры и функции, при нажатии "Выбрать из списка" -"Показать все" он открывает форму выбора значений свойств...второго похожего справочника нет.Вопрос где он берет эту форму выбора?
&НаСервере
Функция ПолучитьДивизион()
Запрос= Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ЗначенияСвойствОбъектов.Наименование
|ИЗ
| Справочник.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Владелец = &Владелец";
Владелец=ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Дивизион");
Запрос.УстановитьПараметр("Владелец",Владелец);
СписокДивизионов= Новый СписокЗначений;
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
СписокДивизионов.Добавить(Результат.Наименование);
КонецЦикла;
Возврат СписокДивизионов;
КонецФункции
&НаКлиенте
Процедура арсДивизионНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЗначениеОтбора= Новый Структура("Наименование", ПолучитьДивизион());
ПараметрыВыбораФ= Новый Структура("Отбор", ЗначениеОтбора);
ОткрытьФорму("Справочник.ЗначенияСвойствОбъектов.Форма.ФормаСписка", ПараметрыВыбораФ,элемент);
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Динамическое изменение формы: кнопочная форма выбора справочника
- Форма выбора (подбор) в управляемых формах
- Форма выбора по произвольному запросу в управляемых формах
- Установка отбора по списку значений при открытии формы выбора справочника из реквизита обработки
- Форма выбора с отбором. Пять вариантов настройки отбора
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
там при открытии формы списка должен отрабатывать такой код и делать доступным на форме списке возможности выбора:
http://infostart.ru/public/549160/
или посмотрите как вызывается ваша форма в типовой конфигурации и сделайте по аналогии
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
...
// Элементы.Список - основной реквизит с динамическим списком
Элементы.Список.РежимВыбора = Параметры.РежимВыбора;
Если Параметры.МножественныйВыбор <> Неопределено Тогда
Элементы.Список.МножественныйВыбор = Параметры.МножественныйВыбор;
КонецЕсли;
...
КонецПроцедуры
Показатьили посмотрите как вызывается ваша форма в типовой конфигурации и сделайте по аналогии
(2) olgerd666,
Не отрабатывает ОбработкаВыбора.Ставлю точку остановки - не заходит вообще.В чем может быть дело?
Не отрабатывает ОбработкаВыбора.Ставлю точку остановки - не заходит вообще.В чем может быть дело?
&НаКлиенте
Процедура арсДивизионНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЗначениеОтбора= Новый Структура("Наименование", ПолучитьДивизион());
ПараметрыВыбораФ= Новый Структура("Отбор,РежимВыбора", ЗначениеОтбора,истина);
ФормаСписка=ПолучитьФорму("Справочник.ЗначенияСвойствОбъектов.Форма.ФормаСписка",ПараметрыВыбораФ);
ОткрытьФорму(ФормаСписка,,элемент);
КонецПроцедуры
&НаКлиенте
Процедура арсДивизионОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Элементы.арсДивизион = ВыбранноеЗначение;
КонецПроцедуры
Показать
Добавила "элемент" в
теперь заходит, но выдает ошибку, что поле объекта недоступно для записи.
ФормаСписка=ПолучитьФорму("Справочник.ЗначенияСвойствОбъектов.Форма.ФормаСписка",ПараметрыВыбораФ,Элемент);
теперь заходит, но выдает ошибку, что поле объекта недоступно для записи.
&НаКлиенте
Процедура арсДивизионОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Элементы.арсДивизион = ВыбранноеЗначение;
КонецПроцедуры
Элементы.арсДивизион в табло дает значение и тип "поле формы", "Элемент" тоже самое.
Обратилась к реквизиту,заработало.
Обратилась к реквизиту,заработало.
Процедура арсДивизионОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
Объект.арсДивизион = ВыбранноеЗначение;
КонецПроцедуры
(9) Ольга Валитова, достаточно сделать так:
Тестировалось на УТ11.
Единственное, что у меня иначе - на форме есть реквизит "Свойство" (ПВХ ДОполнительныеРеквизитыИСведения). Так проще, чтобы не искать само свойство по наименованию или какому-либо другому реквизиту.
А далее все просто. Задаем параметры открытия для формы выбора (списка) справочника "ЗначенияСвойствОбъектов" - это РЕжимВыбора и Отбор.Владелец, чтобы можно было точно отсеять ненужные значения других свойств и отобразить только те, что необходимы.
Далее, т.к. в качестве владельца открытия формы я указал "Элемент", то событие обработки выбора указывать не нужно - значение само подставится в поле формы (если конечно у вас не спец.обработка выбранного значения)
&НаКлиенте
Процедура ВыбранноеЗначениеСвойстваНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыВыбора = Новый Структура;
ПараметрыВыбора.Вставить("РежимВыбора", Истина);
Отбор = Новый Структура;
Отбор.Вставить("Владелец", Свойство);
ПараметрыВыбора.Вставить("Отбор", Отбор);
ОткрытьФорму("Справочник.ЗначенияСвойствОбъектов.ФормаСписка", ПараметрыВыбора, Элемент, ЭтаФорма);
КонецПроцедуры
ПоказатьТестировалось на УТ11.
Единственное, что у меня иначе - на форме есть реквизит "Свойство" (ПВХ ДОполнительныеРеквизитыИСведения). Так проще, чтобы не искать само свойство по наименованию или какому-либо другому реквизиту.
А далее все просто. Задаем параметры открытия для формы выбора (списка) справочника "ЗначенияСвойствОбъектов" - это РЕжимВыбора и Отбор.Владелец, чтобы можно было точно отсеять ненужные значения других свойств и отобразить только те, что необходимы.
Далее, т.к. в качестве владельца открытия формы я указал "Элемент", то событие обработки выбора указывать не нужно - значение само подставится в поле формы (если конечно у вас не спец.обработка выбранного значения)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот