Имя: Пароль:
1C
1С v8
Как по владельцу формы выделить строку в подчиненной форме выбора 8.3
0 breezee
 
13.01.16
08:01
Процедура ПриОткрытии()

    Если ЗначениеЗаполнено(ВладелецФормы.ВыделенныйТекст) Тогда
        Отбор.Владелец.Значение = ВернутьВладельцаПоНаименованию(ВладелецФормы.ВыделенныйТекст);
    КонецЕсли;    

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

Функция ВернутьВладельцаПоНаименованию(Наименование)
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    МойСправочник.Владелец
        |ИЗ
        |    Справочник.МойСправочник КАК МойСправочник
        |ГДЕ
        |    МойСправочник.Наименование = &Наименование";
    
    Запрос.УстановитьПараметр("Наименование", Наименование);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Если  ВыборкаДетальныеЗаписи.Следующий() Тогда
    Возврат ВыборкаДетальныеЗаписи.Владелец;
    Иначе Возврат Справочники.СправочникВладельцев.ПустаяСсылка();
    КонецЕсли;
    
КонецФункции

Функция выше выбирает владельца формы и передает его в отбор открытой формы, не как обратиться к конкретному элементу, из которого была открыта форма и выделить этот элемент форме справочника я не понимаю. Подскажите, пожалуйста.
1 breezee
 
13.01.16
08:02
элемент форме СПИСКА справочника я не понимаю. *
2 LordCMEPTb
 
13.01.16
08:05
Для начала, неплохо бы узнать, управляемые или обычные формы, и есть ли возможность менять код используемых форм?
3 breezee
 
13.01.16
08:06
(2) Обычные формы. Есть возможность менять код форм.
4 LordCMEPTb
 
13.01.16
08:15
Если обычные, тогда поиск открытых окон не подойдет, нужно в текущей форме делать либо "Оповестить()" (но это сообщение для всех окон), либо "ОповеститьОВыборе()" (только для владельца), а в форме-владельце делать обработчик события "ОбработкаОповещения" или "ОбработкаВыбора" соответственно.
З.Ы. Чтобы текущая форма не закрывалась после выбора, надо убрать значение из реквизита "ЗакрыватьПриВыборе".
5 breezee
 
13.01.16
14:01
Может кому пригодится. У меня был отбор по 1 реквизиту в форме и если я ставил этот отбор во время открытия - мой элемент справочника уже не успевал попадать в этот отбор. Я поставил отбор перед открытием - мой реквизит начал попадать в отбор и стал выделяться в списке.

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    Если ЗначениеЗаполнено(ЭтаФорма.НачальноеЗначениеВыбора) Тогда
      Отбор.Владелец.Значение = ЭтаФорма.НачальноеЗначениеВыбора.Владелец;
    КонецЕсли;
КонецПроцедуры
AdBlock убивает бесплатный контент. 1Сергей