• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

Karambol

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

Allexei

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

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

Allexei

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

Karambol

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

Allexei

Что значит стандартно? Работат будет так как "накодировано". откуда список "узнает" что надо сползоват того или иного родителя?
 
A

Allexei

пример не приведу так как лен. На обработчик выбора вешаеш открытие формы справочника.В параметрах открытия передеш своего родителя.На форме выбора справчника при создании на сервере анализируеш переданные параметры.Если надо то устанавливаеш родителя верхнего уровня.Далее смотриш описание процедур опопвеститовыборе и обработкавыбора/

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

Karambol

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

Karambol

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

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

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

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

Allexei

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

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

Karambol

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

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


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

Allexei

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

Karambol

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

В любом случае, спасибо за помощь! :)
 
D

Darlock

может уже и не в тему, но можно укоротить количество строк кода, форму открывать модально и проверять значение на "Неопределено":

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

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

и так далее
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!