|
Связь значений реквизитов объекта |
☑ |
0
veolent
28.05.12
✎
14:48
|
Есть документ, у которого имеются два реквизита «Контрагент», «Проект». При выборе контрагента, во втором реквизите «Проект», должен формироваться список проектов связанных с выбранным контрагентом. Контрагент и проект связаны непериодическим регистром сведений, т.е. регистр сведений выступает в качестве ассоциативной сущности (для связи многие ко многим). Подскажите, как грамотно решить данную задачу.
|
|
1
butterbean
28.05.12
✎
14:49
|
передавай в форму выбора контрагента, а там уже отбор делай по ссылкам
|
|
2
golden-pack
28.05.12
✎
14:50
|
(0) Проект - начало выбора - стандартная обработка = ложь + список ссылок отбором в форму выбора
|
|
3
veolent
28.05.12
✎
14:52
|
Ок, спасибо. Буду пробовать
|
|
4
veolent
28.05.12
✎
16:48
|
Сделал так:
&НаКлиенте
Процедура ПроектНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ПараметрыФормы = ПолучениеСпискаПроектов(Объект.Контрагент);
Форма = ПолучитьФорму("Справочник.Проект.ФормаВыбора", ПараметрыФормы);
Форма.Открыть();
СтандартнаяОбработка = Ложь;
КонецПроцедуры
&НаСервере
Функция ПолучениеСпискаПроектов (ВыбранныйКонтрагент)
ОтборПроектов = Новый Структура("Контрагент");
ОтборПроектов.Контрагент = ВыбранныйКонтрагент;
ВыборкаПроектов = РегистрыСведений.АссоциацияПроектКонтрагент.Выбрать(ОтборПроектов);
СписокПроектов = Новый СписокЗначений;
Пока ВыборкаПроектов.Следующий() Цикл
СписокПроектов.Добавить(ВыборкаПроектов.Проект);
КонецЦикла;
ОтборДляПараметров = Новый Структура;
ОтборДляПараметров.Вставить("ВидСравнения", ВидСравнения.ВСписке);
ОтборДляПараметров.Вставить("Ссылка", СписокПроектов);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ОтборДляПараметров);
Возврат ПараметрыФормы
КонецФункции
|
|
5
МишКа
28.05.12
✎
16:51
|
(4) А зачем отдельную форму открывать? Есть же свойство "список выбора".
|
|
6
veolent
28.05.12
✎
17:04
|
А как с использованием свойства «Список выбора»?
|
|
7
veolent
28.05.12
✎
21:37
|
Воспользовался свойством «ДанныеВыбора», да так будет лучше. А то с отбором колупаться (блокируя параметры фильтрации…)
&НаКлиенте
Процедура ПроектНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДанныеВыбора = ПолучениеСпискаПроектов(Объект.Контрагент);
КонецПроцедуры
&НаСервере
Функция ПолучениеСпискаПроектов (ВыбранныйКонтрагент)
ОтборПроектов = Новый Структура("Контрагент");
ОтборПроектов.Контрагент = ВыбранныйКонтрагент;
ВыборкаПроектов = РегистрыСведений.АссоциацияПроектКонтрагент.Выбрать(ОтборПроектов);
СписокПроектов = Новый СписокЗначений;
Пока ВыборкаПроектов.Следующий() Цикл
СписокПроектов.Добавить(ВыборкаПроектов.Проект);
КонецЦикла;
Возврат СписокПроектов
КонецФункции
|
|