Имя: Пароль:
1C
1С v8
Как открыть форму выбора с отбором?
0 agrail86
 
24.09.14
12:39
В общем все излазил так и не нашел решение своей проблемы. В табличной части док-та заявки имеется поле ввода - открываю спецификацию номенклатуры. Не могу открыть форму выбора справочника спецификации номенклатуры по отбору. в другой табличной части имеется номенклатура - нужно выбрать спецификацию по текущейстроке - номенклатура! делаю так -
Процедура РецептыМешалкиРецептНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = ложь;
    
    ФормаВыбора = Справочники.СпецификацииНоменклатуры.ПолучитьФормуВыбора(,Элемент);
        
    группа = справочники.Номенклатура.НайтиПоНаименованию(ЭтаФорма.ЭлементыФормы.Заказ.ТекущаяСтрока.Номенклатура);
    списокзн = новый списокзначений;
    списокзн.Добавить(группа);
    ФормаВыбора.СправочникСписок.Отбор.Код.ВидСравнения = ВидСравнения.ВСписке;
    ФормаВыбора.СправочникСписок.Отбор.Код.Использование = Истина;
    ФормаВыбора.СправочникСписок.Отбор.Код.Значение = списокзн;
    ФормаВыбора.ЭлементыФормы.СправочникСписок.ИерархическийПросмотр=Ложь;
    формавыбора.Открыть();
КонецПроцедуры
выводит пустой справочник! помогите плиз) нужно провалиться в группу с наименованием номенклатуры в справочнике спецификации ном-ры.
1 antoneus
 
24.09.14
12:48
У кода какой тип? А у группы?
2 antoneus
 
24.09.14
12:49
Да и весь код - тлен.
3 Wobland
 
24.09.14
12:50
код в списке каких-то ссылок? всё нормально
4 чувак
 
24.09.14
12:50
управляемое приложение?
5 чувак
 
24.09.14
12:52
ФормаВыбора.СправочникСписок.Отбор.Код.ВидСравнения = ВидСравнения.ВСпискеПоИерархии;

може так?
6 Teresa
 
24.09.14
12:57
если "В группу провалиться", зачем тогда
ФормаВыбора.ЭлементыФормы.СправочникСписок.ИерархическийПросмотр=Ложь;
?
7 Рэйв
 
24.09.14
12:58
натыкался давно как о на эти грабли...

поменяй местами

    ФормаВыбора.СправочникСписок.Отбор.Код.Использование = Истина;

И

    ФормаВыбора.СправочникСписок.Отбор.Код.Значение = списокзн;


Сначало оно хатит список.Хрен знает почему.
8 Крошка Ру
 
24.09.14
13:00
(7) Сначало оно хотит вид сравнения, штоб знать, что в Значение помещать, а все остальное - в произвольном порядке
9 Рэйв
 
24.09.14
13:01
(8) может и так:-) Я помню что там что-то обязательно должно идти вначале, а чтото потом
10 Teresa
 
24.09.14
13:04
(9) блин, вот этого не знала, век живи век учись..
11 Крошка Ру
 
24.09.14
13:05
(0) у тебя группа - это номенкатура, а Код, я так понимаю код номенклатуры. Естественно, в списке, состоящем из ссылок на номенклатуру, коды отстутствуют
12 Крошка Ру
 
24.09.14
13:07
А, ну собственно, Wobland уже об этом написал
13 1Снег
 
24.09.14
13:08
(0) Особенно вот это поразило:
>группа = справочники.Номенклатура.НайтиПоНаименованию(ЭтаФорма.ЭлементыФормы.Заказ.ТекущаяСтрока.Номенклатура);

Зачем искать номенклатуру, если ссылка на нее уже и так есть
14 1Снег
 
24.09.14
13:12
ТекущиеДанные = ЭлементыФормы.Заказ.ТекущиеДанные;
тОтбор = ФормаВыбора.СправочникСписок.Отбор.Владелец;

тОтбор.ВидСравнения = ВидСравнения.Равно;
тОтбор.Значение = ТекущиеДанные.Номенклатура;
тОтбор.Использование = Истина;
15 agrail86
 
24.09.14
14:37
если я открываю сам справочник отбор - там то что ищу подходит только "наименование" - а не владелец, владелец там нет такого. теперь мой код выглядит так:

Процедура РецептыМешалкиРецептНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = ложь;

ТекущиеДанные = ЭлементыФормы.Заказ.ТекущиеДанные;
ФормаВыбора = Справочники.СпецификацииНоменклатуры.ПолучитьФормуВыбора(,Элемент);
тОтбор = ФормаВыбора.СправочникСписок.Отбор.Наименование;

тОтбор.ВидСравнения = ВидСравнения.Содержит;
тОтбор.Значение = Строка(ТекущиеДанные.Номенклатура);
тОтбор.Использование = Истина;

формавыбора.Открыть();
КонецПроцедуры
именно видсравнения.содержит и Строка(ТекущиеДанные.Номенклатура) выводит нужную мне группу, но провалится в нее не могу, и иерархию вкл и выкл, и у реквизита менял = группы и элементы. все равно не проваливается. помогите, есть идеи?
16 Крошка Ру
 
24.09.14
14:43
(15) О, боже! Тебе ж дали готовый код в (14)!
Только там не ВидСравнения.Равно, а ВидСравнения.ВИерархии, и будет тебе щасте.
17 agrail86
 
24.09.14
15:00
нет владельца в отборе!!! и для наименования нет вида сравнения - в иерархии!!! не проваливается
18 alle68
 
24.09.14
15:24
(17) Нет - добавь!
19 agrail86
 
24.09.14
23:01
Решил проблему сам...уффф. кому интересно вот решение:


Процедура РецептыМешалкиРецептНачалоВыбора(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = ложь;
ТекущиеДанные = ЭлементыФормы.Заказ.ТекущиеДанные;

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

      //отбор по Родителю
      отб = фрм.Отбор.Ссылка;
      отб.ВидСравнения = ВидСравнения.ВИерархии;
      отб.Значение = Справочники.СпецификацииНоменклатуры.НайтиПоНаименованию(ТекущиеДанные.Номенклатура);
      отб.Использование = Истина;

      //отображаем только элементы без групп
      отб = фрм.Отбор.ЭтоГруппа;
      отб.Использование = Истина;

      //отключаем иерархический просмотр и запрещаем его включать
      фрм.ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = ложь;
      фрм.ЭлементыФормы.СправочникСписок.ИзменятьИерархическийПросмотр = ложь;

      //определим, куда будем возвращать выбранный элемент
      фрм.ВладелецФормы = Элемент;

      //открываем форму
      фрм.Открыть();
КонецПроцедуры