Открытие Списка Справочника В Предопределенной Группе

  • Автор темы Karambol
  • Дата начала
K

Karambol

#1
Задача такая: на управляемой форме документа есть реквизит типа спр Контрагенты.
Как сделать, чтобы при выборе контрагента открывалась форма списка справочника, у которой уже открыта нужная группа?
Например, я в документе выбираю покупателя, у меня открывается форма списка с открытой группой Покупатели.
 

Allexei

Well-known member
02.05.2008
322
1
#2
При создании на сервере формы выбора контрагента устанавливаешь свойство РодительВерхнегоУровня
Код:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Если ЭтаФорма.Параметры.Свойство("РодительЭлементов") Тогда
Элементы.Список.РодительВерхнегоУровня = ЭтаФорма.Параметры.РодительЭлементов;
КонецЕсли;
КонецПроцедуры
 

Allexei

Well-known member
02.05.2008
322
1
#5
Можно попробывать. Для этого надо стандартную обработку выбора отключить и прописать прмерно следующее
-----
НужнаяФорма = ПолучитьФорму("Справочнки.Контрагенты.ФормаОбъекта");
НужнаяФорма.Список. РодительВерхнегоУровня = НужнаяГруппаКонтрагента;
---
После этого открыть НужнуюФорму и прописать обработчики выбора элементов.
 
K

Karambol

#6
А обработчики выбора зачем прописвать? Стандартные не будут работать?
 

Allexei

Well-known member
02.05.2008
322
1
#7
Что значит стандартно? Работат будет так как "накодировано". откуда список "узнает" что надо сползоват того или иного родителя?
 

Allexei

Well-known member
02.05.2008
322
1
#9
пример не приведу так как лен. На обработчик выбора вешаеш открытие формы справочника.В параметрах открытия передеш своего родителя.На форме выбора справчника при создании на сервере анализируеш переданные параметры.Если надо то устанавливаеш родителя верхнего уровня.Далее смотриш описание процедур опопвеститовыборе и обработкавыбора/

ps
мягкий знак не работает (
 
K

Karambol

#10
Ниче сколько всего :D, на обычной форме попроще было :)
 
K

Karambol

#11
Сделал попроще:

&НаКлиенте
Процедура КонтрагентНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;
Форма = ПолучитьФорму("Справочник.Контрагенты.ФормаВыбора", , Элемент);
Форма.Элементы.Список.ТекущийРодитель = ПредопределенноеЗначение("Справочник.Контрагенты.Поставщики");
Форма.Открыть();

КонецПроцедуры
 

Allexei

Well-known member
02.05.2008
322
1
#12
А я разве не это же писал?

Код:
Можно попробывать. Для этого надо стандартную обработку выбора отключить и прописать прмерно следующее
-----
НужнаяФорма = ПолучитьФорму("Справочнки.Контрагенты.ФормаОбъекта");
НужнаяФорма.Список. РодительВерхнегоУровня = НужнаяГруппаКонтрагента;
---
После этого открыть НужнуюФорму и прописать обработчики выбора элементов.
 
K

Karambol

#13
А я разве не это же писал?

Можно попробывать. Для этого надо стандартную обработку выбора отключить и прописать прмерно следующее
-----
НужнаяФорма = ПолучитьФорму("Справочнки.Контрагенты.ФормаОбъекта");
НужнаяФорма.Список. РодительВерхнегоУровня = НужнаяГруппаКонтрагента;
---
После этого открыть НужнуюФорму и прописать обработчики выбора элементов.

На Вашем коде выдает ошибку:
Поле объекта не обнаружено (РодительВерхнегоУровня)
 

Allexei

Well-known member
02.05.2008
322
1
#14
Ну так и я написал же
"Можно попробывать. Для этого надо стандартную обработку выбора отключить и прописать прмерно следующее"
Я примерно знаю как это должно выглядить. Увы и ах пропустил "Элементы" в "НужнаяФорма.Список. РодительВерхнегоУровня = НужнаяГруппаКонтрагента;" и поспешил - написал что надо открывать форму объекта, а не форму выбора. В общем как всегда торопился и написал немножко с ошибками :eek:oo: :)
 
K

Karambol

#15
Я примерно знаю как это должно выглядить. Увы и ах пропустил "Элементы" в "НужнаяФорма.Список. РодительВерхнегоУровня = НужнаяГруппаКонтрагента;" и поспешил - написал что надо открывать форму объекта, а не форму выбора. В общем как всегда торопился и написал немножко с ошибками
В любом случае, спасибо за помощь! :)
 

Darlock

Well-known member
04.01.2008
560
1
#16
может уже и не в тему, но можно укоротить количество строк кода, форму открывать модально и проверять значение на "Неопределено":

Контрагент = Форма.ОткрытьМодально();

Если Контрагент <> Неопределено Тогда
...

и так далее