Имя: Пароль:
1C
1С v8
Как работать с отбором
0 1dvd
 
17.01.14
12:55
Обычные формы.
На форме есть ТабличноеПолеОтбор с типом Отбор. Как в него добавить строку? И вобще как с ним работать?


Процедура ПриОткрытии()
    ЭлементОтбора = ТабличноеПолеОтбор.Добавить("Контрагент");
    ЭлементОтбора.Использование = Ложь;
    ЭлементОтбора.ВидСравнения = ВидСравнения.ВИерархии;
КонецПроцедуры

{Форма.Форма.Форма(7)}: Ошибка при вызове метода контекста (Добавить)
    ЭлементОтбора = ТабличноеПолеОтбор.Добавить("Контрагент");
по причине:
Недопустимое значение параметра (параметр номер '1')
1 1dvd
 
17.01.14
13:08
подскажите
2 Maxus43
 
17.01.14
13:11
сначала посмотри отладчиком, это поле доступно для отбора?
3 1dvd
 
17.01.14
13:12
(2) там нет полей. Как их туда добавить?
4 Wobland
 
17.01.14
13:13
СписокКонтрагентов.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку(0));
    ЭлементыФормы.Контрагенты.Значение.Отбор.Ссылка.Использование=Истина;
    ЭлементыФормы.Контрагенты.Значение.Отбор.Ссылка.ВидСравнения=ВидСравнения.ВСписке;
    ЭлементыФормы.Контрагенты.Значение.Отбор.Ссылка.Значение=СписокКонтрагентов;
5 Maxus43
 
17.01.14
13:14
вот из СП пример:
ДоступныеПоляОтбора = Отбор.ПолучитьДоступныеПоля(); //Тут отладчиком посомтри
Поле = ДоступныеПоляОтбора.Добавить("Контрагент", "Контрагент",
    Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
Поле.Отбор = Истина;
Поле = ДоступныеПоляОтбора.Добавить("Номенклатура", "Номенклатура",
    Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
Поле.Отбор = Истина;
Отбор.УстановитьДоступныеПоля(ДоступныеПоляОтбора);
6 vhl
 
17.01.14
13:14
СправочникСписок.Отбор.ВидСогласования.Установить(ПараметрВидСогласования) - если просто поменять значение нужно
7 1dvd
 
17.01.14
13:15
(4) (6) вы хотите сказать, что не может быть Отбор не привязанный ни к чему?
8 Wobland
 
17.01.14
13:15
Если ИмяПравила="ФизическиеЛица" Тогда
            ДоступныеПоляОтбора=Отбор.ПолучитьДоступныеПоля();
            ДоступныеПоляОтбора.Очистить();
            ПолеФизЛицо=ДоступныеПоляОтбора.Добавить("Справочник_ФизическиеЛица", "Физическое лицо", Новый ОписаниеТипов("СправочникСсылка.ФизическиеЛица"));
            ПолеФизЛицо.Отбор=Истина;
            Отбор.УстановитьДоступныеПоля(ДоступныеПоляОтбора);
            ЭО=Отбор.Добавить("Справочник_ФизическиеЛица");
            ЭО.Использование=Истина;
            ЭО.ВидСравнения=ВидСравнения.ВСписке;
            ЭО.Значение=СписокСотрудников;
            ТекСтрока.ИспользоватьОтбор=Истина;
9 1dvd
 
17.01.14
13:15
(5)

Отбор.ПолучитьДоступныеПоля(); // Ошибка в выражении
10 Wobland
 
17.01.14
13:16
(7) в СП "отбор"+ентер
11 1dvd
 
17.01.14
13:17
(10) смотрел. там ничего про это не написано
12 Wobland
 
17.01.14
13:17
+(8) Отбор=ОбработкаОбмена.ПостроительОтчета.Отбор;
(11) там нет отбора без чего-то
13 vhl
 
17.01.14
13:18
(7) В форме какого объекта ты находишься? Что является основным реквизитом формы?
14 1dvd
 
17.01.14
13:19
(13) форма внешней обработки. Просто берем пустую форму, кладем на нее табличное поле, Тип значения указываем Отбор

...и получаем абсолютно бесполезную фигню
15 Wobland
 
17.01.14
13:20
(14) видимо, потому что данные не указал
16 1dvd
 
17.01.14
13:21
(15) создал реквизит с типом Отбор. Результат: смотри (14) последнюю строчку
17 vhl
 
17.01.14
13:21
(14) Так а к чему отбор?
18 Wobland
 
17.01.14
13:22
(16) прикольно. никогда не осмысливал сферический отбор в вакууме. попробую с пивом, спасибо
19 1dvd
 
17.01.14
13:24
(17) хотел обойтись без построителя. Нужно так: в верхней части играемся с отбором, в нижней части получаем табличное поле (не табличный документ) заполненный запросом с учетом отбора.
20 Wobland
 
17.01.14
13:25
(19) можно СКД прикрутить
21 1dvd
 
17.01.14
13:25
(20) ещё хуже
22 Wobland
 
17.01.14
13:26
ну или изобрести свой велосипед и назвать его отбором. думать, какие там поля, виды сравнения, описывать поведение ТП...
23 vhl
 
17.01.14
13:26
(19) Так с построителем же наоборот проще будет. Тебе даже программировать с отбором ничего не надо будет - он автоматом заполнится.
24 1dvd
 
17.01.14
13:30
(23) в построителе надо кучу всяких настроек и опций сделать, чтобы он взлетел. А без него Хоп запрос выгрузил в ТЗ. Готово
25 Wobland
 
17.01.14
13:34
(24) а кто кроме ТЗ будет знать, какие у ней поля да какого типа?
26 1dvd
 
17.01.14
13:36
вытащить из объекта типа Отбор можно же, и запихнуть в Запрос?

Ладно, понял что фигню хочу. Уже делаю Построителем
27 Wobland
 
17.01.14
13:36
(26) вот это я и хочу обдумать с пивом ;)
28 catena
 
17.01.14
14:13
(26)Универсальный журнал документов же вроде так и сделан. Если я правильно задачу поняла.
29 1dvd
 
17.01.14
14:32
Блин, как теперь построитель прикрутить к табличному полю?
30 catena
 
17.01.14
14:37
(29)Напрямую не работает?
ПостроительОтчета.Выполнить();
СписокДокументов = ПостроительОтчета.Результат.Выгрузить();
31 1dvd
 
17.01.14
14:40
(30)


Процедура КоманднаяПанельФормыСформировать(Кнопка)
    Построитель.Выполнить();
    ТабличноеПолеРезультат = Построитель.Результат;
    ЭлементыФормы.ТабличноеПолеРезультат.СоздатьКолонки();
КонецПроцедуры

Процедура ПриОткрытии()
    
    Построитель.Текст = "ВЫБРАТЬ
                        |    ДоговорыКонтрагентов.Владелец,
                        |    ПРЕДСТАВЛЕНИЕ(ДоговорыКонтрагентов.Владелец) КАК Владелец1,
                        |    ДоговорыКонтрагентов.Ссылка,
                        |    ПРЕДСТАВЛЕНИЕ(ДоговорыКонтрагентов.Ссылка) КАК Ссылка1,
                        |    ДоговорыКонтрагентов.ПометкаУдаления,
                        |    ДоговорыКонтрагентов.ТипЦен,
                        |    ПРЕДСТАВЛЕНИЕ(ДоговорыКонтрагентов.ТипЦен) КАК ТипЦен1
                        |ИЗ
                        |    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов";
    
КонецПроцедуры


Пусто :(
32 1dvd
 
17.01.14
14:42
О, с Выгрузить() взлетело. Спасибо :)
33 hhhh
 
17.01.14
14:43
(0)

Процедура ПриОткрытии()
    ЭлементОтбора = ТабличноеПолеОтбор.Контрагент;
    ЭлементОтбора.Использование = Ложь;
    ЭлементОтбора.ВидСравнения = ВидСравнения.ВИерархии;
КонецПроцедуры
34 1dvd
 
17.01.14
15:56
Всё получилось, всем спасибо!