![]() |
![]() |
![]() |
|
Управляемая форма: Отбор в списке | ☑ | ||
---|---|---|---|---|
0
le_
12.09.10
✎
02:13
|
Имеется управляемая форма элемента справочника.
На этой форме размещено табличное поле со списком элементов подчиненного справочника. При открытии этой формы в списке подчиненных элементов устанавливается отбор таким образом: &НаКлиенте Перем ОтборАдресов; &НаКлиенте Процедура ПриОткрытии(Отказ) Если ОтборАдресов = Неопределено Тогда ОтборАдресов = АдресаДоставки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); КонецЕсли; ОтборАдресов.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Владелец"); ОтборАдресов.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборАдресов.ПравоеЗначение = Объект.Ссылка; ОтборАдресов.Использование = Истина; КонецПроцедуры Всё работает, отбор при открытии устанавливается. Если в этот справочник вводится новый элемент, то после его записи нужно установить отбор в списке подчиненных. Делаю так: &НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) Если ОтборАдресов = Неопределено Тогда ОтборАдресов = АдресаДоставки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); КонецЕсли; ОтборАдресов.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Владелец"); ОтборАдресов.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборАдресов.ПравоеЗначение = Объект.Ссылка; ОтборАдресов.Использование = Истина; КонецПроцедуры Результат: после записи отбор сохраняется таким, как был до записи, т.е., там пустая ссылка. Пробежался по процедуре ПослеЗаписи отладчиком - везде все заполняется, в том числе правое значение, НО в АдресаДоставки.Отбор.Элементы[0] всё остается неизменным. И не понятно почему... Подскажите, плз, как и что сделать, чтобы получить нужное. |
|||
1
Defender aka LINN
12.09.10
✎
10:17
|
(0) Молодец. А теперь открой отбор ручками и посчитай, сколько у тебя отборов установлено.
|
|||
2
le_
12.09.10
✎
13:20
|
(1) 1 установлен. Для этого в процедуре ПриЗаписи условие написано. АдресаДоставки.Отбор.Элементы[1] не существует.
|
|||
3
le_
12.09.10
✎
14:12
|
Нормального решения так и не нашел...
Пока сделал так: &НаКлиенте Процедура ПослеЗаписи(ПараметрыЗаписи) Для Каждого Элем Из АдресаДоставки.Отбор.Элементы Цикл АдресаДоставки.Отбор.Элементы.Удалить(Элем); КонецЦикла; ОтборАдресов = АдресаДоставки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборАдресов.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Владелец"); ОтборАдресов.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборАдресов.ПравоеЗначение = Объект.Ссылка; ОтборАдресов.Использование = Истина; КонецПроцедуры и работает... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |