Имя: Пароль:
1C
1С v8
Установка отбора в списке выбора
0 vitaliklibra
 
25.05.15
20:15
Привет всем!

Нужно при открытии списка выбора передать 2 отбора в форму выбора. В чем суть. В процедуре после ее выполнения "Владелец" устанавливается (смотрел по отладчику и в результате), а по второму параметру не хочет. При чем, что самое интересное, никакой другой реквизит в отбор не передается, кроме владельца! Помогите разобраться, почему.

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


Еще одна особенность: даже после установленного отбора и выбора нужного значения, оно не попадает в моё реквизит, откуда я получал это форму выбора. Что здесь может служить причиной? Спасибо заранее!
1 vitaliklibra
 
25.05.15
20:34
Уточнение: когда проваливаюсь из реквизита в форму выбора (для которой устанавливается отбор), НЕ срабатывает для этого реквизита событие "ПриИзменении"! Впервые такое вижу! О_О
2 vitaliklibra
 
25.05.15
20:36
(1)  а когда убрал событие для этого реквизита "НачалоВыбора" - все нормально. Походу, строка

СтандартнаяОбработка = Ложь

портит всю малину... :/ Как же тогда поступать?
3 1sanekmaloi1
 
25.05.15
21:13
Похоже нужно хоть СП почитать
4 1sanekmaloi1
 
25.05.15
21:15
ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>, <ОписаниеОповещенияОЗакрытии>, <РежимОткрытияОкна>)

Владелец хороший параметр, если туда передать "Элемент" то после выбора, я думаю попадет в реквизит значение
5 vitaliklibra
 
26.05.15
08:06
(3) - СП-то я читал, и похоже, что у меня трудности возникли, когда начал реализовывать написанное, для чего и написал на форум. Понимаю и сам, что где-то ошибаюсь, но где - прошу помочь.

(4)  Владелец хороший параметр, согласен!) Делаю по твоему варианту:

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

Нифига(

Ладно, делаю так (что тоже самое):

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

Естественно, тоже нифига(

Что еще я не так делаю?
6 Peltzer
 
26.05.15
08:15
у отбора есть ещё и Использование
7 Defender aka LINN
 
26.05.15
08:22
(5) "Делаю по твоему варианту" - открой глаза до щелчка и прочитай еще раз (4).
8 vitaliklibra
 
26.05.15
08:25
(6) - О, а это уже интересно! А как его правильно задать? Тоже запихнуть в параметры отбора:

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

Результат отрицательный(

(7) - объясни, если не трудно, что ты имеешь в виду под словами "открой глаза до щелчка". Или можешь, елси тем более не трудно, сказать, где я допустил ошибку, вместо никому не нужного флуда вокруг-да-около. Буду очень благодарен!
9 Peltzer
 
26.05.15
08:30
В форме, которую ты открываешь, точно есть элемент с указанным именем?

<Параметры> (необязательный)

Тип: Структура.
Параметры формы. Ключ структуры - имя параметра, а значение - значение параметра формы. Имя элемента должно совпадать с именем параметра структуры.
П = Новый Структура("Ключ", Поставщик);
Форма = ПолучитьФорму("Справочник.Контрагенты.ФормаОбъекта", П);
Форма.Открыть();
10 vitaliklibra
 
26.05.15
08:36
11 vitaliklibra
 
26.05.15
08:39
Если пробую использовать вместо

ЗначениеОтбора.Вставить("Использование", Истина);

вот это

ЗначениеОтбора.Вставить("ТипКонтакта.Использование", Истина);

Ругается(
12 Andy13
 
26.05.15
08:46
Посмотри как устроен выбор договора в документе "Поступление товаров услуг" в БП. Там тоже отбор по владельцу и дополнительному параметру - тип договора.
13 bugz2003
 
26.05.15
08:50
ФормаВыбора.Отбор.Владелец.Использование = истина
14 vitaliklibra
 
26.05.15
08:52
(13) А куда эту команду прописать? Чёт немного непонятно...
15 vitaliklibra
 
26.05.15
08:54
+ (14)  нужно тогда это использование задавать для всех параметров, которые участвуют в отборе - верно?
16 Andy13
 
26.05.15
08:54
(14) Читайте литературу по 1С.
И посмотрите (12).
17 vitaliklibra
 
26.05.15
08:55
(16) В процессе) Открывается конфигурация...
18 bugz2003
 
26.05.15
08:56
ФВ = Справочники.Номенклатура.ПолучитьФормуВыбора("ФормаВыбора", Элемент,);
        ФВ.Отбор.Владелец.Использование = Истина;
ФВ.Отбор.Владелец.Значение= текВлад;
        
        ФВ.Открыть();
19 Andy13
 
26.05.15
08:57
Есть три способа решить вашу задачку. Простейший - использовать параметр формы - "РежимВыбора".
(18) Более правильный - рулить параметром "ПараметрОтборПоВладельцу"
20 bugz2003
 
26.05.15
08:57
можно одной строкой
ФВ.Отбор.Владелец.Установить(текВлад)
21 bugz2003
 
26.05.15
08:58
(19) ему там не только владельца передавать вроде нужно
22 Andy13
 
26.05.15
08:58
(18) Не смешите публику. Читайте ЖКК.
23 Andy13
 
26.05.15
08:59
(18) Отбор на форму не наложится. На форму списка расположенную на форме - можно.
24 bugz2003
 
26.05.15
09:00
(22) толсто
25 vitaliklibra
 
26.05.15
09:00
(22)  ЖКК? Что ето? ОМГ! О_О
26 bugz2003
 
26.05.15
09:01
(23) ошибаешься
27 bugz2003
 
26.05.15
09:02
На форму списка расположенную на форме???
28 Defender aka LINN
 
26.05.15
09:04
(8) Тебе сказали, русским по белому передать в качестве владельца Элемент. А ты что за пердимонокль туда засунул?
29 Andy13
 
26.05.15
09:04
(27) Ну хорошо, на реквизит формы имеющий тип "СправочникСписок" и отражаемый на форме в виде списка справочника.
30 vitaliklibra
 
26.05.15
09:09
Всех благодарю за подзатыльники и участие. Проблема решена в (18).

Чтобы установить произвольное количество отборов, нужно делать так:

    ФВ = Справочники.КонтактыКонтрагентов.ПолучитьФормуВыбора("ФормаВыбора", Элемент,);

    ФВ.Отбор.Владелец.Использование = Истина;
    ФВ.Отбор.Владелец.Значение = Элемент.Значение.Владелец;

    ФВ.Отбор.ТипКонтакта.Использование = Истина;
    ФВ.Отбор.ТипКонтакта.Значение = Перечисления.ТипыКонтактнойИнформации.Адрес;
        
    ФВ.Открыть();

Отрабатывают ОБА отбора!)

bugz2003 - СПАСИБО ОГРОМНОЕ!!!
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс