Имя: Пароль:
1C
1C 7.7
v7: 77: Установить отбор для Спр.Выбрать(...)
Ø (Злопчинский 09.06.2016 20:43)
,
0 Злопчинский
 
08.06.16
18:32
Можно ли как-то сделать так типа

Спр = СоздатьОбъект("Справочник.Чтото"); Спр.УстановитьОтбор("КакойТоРеквизит",КакоеТоЗначение); //ВОТ ЗДЕСЬ КАК-ТО ОТФИЛЬТРОВАТЬ
Если Спр.Выбрать(" Подсказка какаято,) = 0 Тогда

????

через глРасшифровку/подбор/открытформу - я шмогу... но вот именнто как выше...?
1 ildary
 
08.06.16
18:45
(0) А заменить Спр.Выбрать() на Спр.ВыбратьЭлементы() + ПолучитьЭлемент() с помещением элементов в список, а потом спс.ВыбратьЗначение() - пойдет?
2 Злопчинский
 
08.06.16
18:54
(1) не, так я сам умею (см.выше "через...)
3 Злопчинский
 
08.06.16
18:54
хреново что спр.выбрать не дает доступа к контексту... ибо модально? но все равно...
4 mehfk
 
08.06.16
18:59
Может через глобальную переменную передать нужные для отбора в форме данные?
5 Калиостро
 
08.06.16
21:35
Я бы сделал так:

    СписокКонтрагентов = ПолучитьСписокКонтрагентовПоХитромуОтбору();
    
    СписокПараметров=СоздатьОбъект("СписокЗначений");
    СписокПараметров.ДобавитьЗначение(СписокКонтрагентов,"СписокКонтрагентов");
    
    ОткрытьФормуМодально("Справочник.Контрагенты.ФормаВыбора", СписокПараметров);


А в форме списка справочника контрагентов ФормаВыбора
в процедуре ПриОткрытии:
    
    Если ТипЗначенияСтр(Форма.Параметр) = "СписокЗначений" Тогда
        СписокКонтрагентов = Форма.Параметр.Получить("СписокКонтрагентов");
        Если ТипЗначенияСтр(СписокКонтрагентов) = "СписокЗначений" Тогда
            Если СписокКонтрагентов.РазмерСписка() > 0 Тогда
                ИспользоватьСписокЭлементов(СписокКонтрагентов);
                ИерархическийСписок(0, 0);
            КонецЕсли;
            
        КонецЕсли;
    КонецЕсли;
6 Torquader
 
08.06.16
21:49
А может тогда сразу через таблицу значений ?
Просто, если уж очень хочется отбор в форме списка, то можно научить форму списка получать данные для отбора через параметр вызова и выполнять создание списка элементов внутри формы.
Только нужно понимать, что "ИспользоватьСписокЭлементов" на справочниках, где несколько сотен тысяч элементов будет нехило тормозить - не забываем, что исполнение в фоне сделать практически нереально.
7 vcv
 
09.06.16
05:22
Через какой-нибудь FormEx перехватить в глобальнике открытие формы. В нем анализировать глобальную переменную со списком значений. Или ряд переменных. Получится универсально для всех справочников. И простой синтаксис.

Спр = СоздатьОбъект("Справочник.Чтото");
глОтбор.Установить("КакойТоРеквизит",КакоеТоЗначение);
Спр.Выбрать("Подсказка какаято",)
8 VladC
 
09.06.16
05:47
Если задача установить отбор на выборку, то ВыбратьЭлементыПореквизиту, но работает только реквизитов с установленным флагом "Отбор по реквизиту".
9 torgm
 
09.06.16
05:58
Взял бы ++, наваять запрос дело пяти минут, с произвольной структурой выбора. А дальше либо в форму передать, либо в таблицу значений . Дело твое.
10 Mikeware
 
09.06.16
07:22
я б взял готовый садовниковский класс для выбора по вхождениям, добавил метод фильтрации (собственно, работы 5 мнут), и дело в шляпе...
11 Ёпрст
 
09.06.16
09:14
(0) можно
12 Злопчинский
 
09.06.16
11:59
(11) О, великий. гуру, обрати свой взор на недостойных!
как?
13 Ёпрст
 
09.06.16
12:00
(12) подменой.
Не, штатно можно только родителя или владельца, т.е применимы все методы именно со справочником (а не к форме списка)
14 Злопчинский
 
09.06.16
12:19
(13) Подменой чего и как?
15 Ёпрст
 
09.06.16
12:20
подменой системного окошка на свою форму
16 Злопчинский
 
09.06.16
12:26
(15) не, так и я могу... неинтересно...
17 LazyStranger
 
09.06.16
12:29
ОткрытьФорму("Справочник.ЧтоТоТам",кф)
кф.УстановитьОтбор("ИмяОтбора",ЗначениеОтбора)

а как через выбрать ХЗ
18 Злопчинский
 
09.06.16
20:42
короче, значит, никак...
пичалька
закрыто.