Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Фильтр в динамическом списке
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
DartRomanius
Доброго времени суток.

Сломал мозг, решил спросить у общественности.

Есть форма-списка документа.
На самой форме еще есть реквизит такого же типа как реквизит документов.

как бы его отбор по значению этого самого реквизита установить.

Спасибо.

ЗЫ: Управляемые формы.
pablo
Форма сгенерирована конструктором или вручную создана?
DartRomanius
Цитата(pablo @ 25.02.11, 14:52) необходимо зарегистрироваться для просмотра ссылки
Форма сгенерирована конструктором или вручную создана?


Вручную.
pablo
Если список документов выводится ДинамическимСписком, то программно настраивать данный список можно только через сервер, и то - не все свойства. Но со стороны пользователя, для установки отбора по значению любого столбца достаточно выделить ячейку в нужном столбце и ввести нужные данные (окно отбора само появится при вводе данных).
У меня в базе юзерам привычнее искать контрагентов по коду, поэтому я в ДС добавил поле Контрагент.Код и юзеры сами по нему успешно устанавливают отборы без дополнительного программного кода.
DartRomanius
Цитата(pablo @ 25.02.11, 15:56) необходимо зарегистрироваться для просмотра ссылки
Если список документов выводится ДинамическимСписком, то программно настраивать данный список можно только через сервер, и то - не все свойства. Но со стороны пользователя, для установки отбора по значению любого столбца достаточно выделить ячейку в нужном столбце и ввести нужные данные (окно отбора само появится при вводе данных).
У меня в базе юзерам привычнее искать контрагентов по коду, поэтому я в ДС добавил поле Контрагент.Код и юзеры сами по нему успешно устанавливают отборы без дополнительного программного кода.


Наверное надо подробнее задачу.

Есть список документов (одного типа) с признаком "Статус". (Еще не решил каким вариантом буду хранить сам статус,
по ходу пьесы статус меняется. Толи буду хранить в РегистреСведений, толи заведу Реквизит в доке).
Пока вопрос если есть у дока реквизит....

Так, вот. К примеру есть несколько типов Пользователей-Менеджеров (к примеру), с разными функциональными ролями.
пользователь открывая журнал документов, видит только документы с определеным (-ми) статусами.

Где-то как-то так....

.......


Копаясь с настройками табличной части (наскока я "вкурил" документацию, это таки динамический список). Не нашел
какого нибудь явного указания фильтрации (на подобии условий выбора для "поля"). Вот теперь пытаюсь найти. smile.gif

Спасибо.
pablo
Вот как только определитесь с типом статуса и назначением ему какого-то текстового идентификатора - можно делать указанный мной пользовательский отбор путем добавления соответствующего поля в динамический список. И не важно, где будет статус храниться, поскольку содержимое ДС можно задавать произвольным запросом (без параметров).
pablo
P.S. Никакой программной фильтрации там нет. Можно только текст запроса на сервере менять, но отсутствие параметров у этого запроса заставляет либо отказаться от них, либо писать замысловатые конструкции
disfinder
Цитата(DartRomanius @ 25.02.11, 16:23) необходимо зарегистрироваться для просмотра ссылки
Копаясь с настройками табличной части (наскока я "вкурил" документацию, это таки динамический список). Не нашел
какого нибудь явного указания фильтрации (на подобии условий выбора для "поля"). Вот теперь пытаюсь найти. smile.gif


называется "Отбор".
Если поле отбора будет реквизитом документа- то отбор получится. Если будете хранить в регистре сведений - то через отбор не выйдет, нужно будет формировать и заполнять список документов вручную (программно в смысле).
DartRomanius
Цитата(pablo @ 25.02.11, 16:46) необходимо зарегистрироваться для просмотра ссылки
P.S. Никакой программной фильтрации там нет. Можно только текст запроса на сервере менять, но отсутствие параметров у этого запроса заставляет либо отказаться от них, либо писать замысловатые конструкции


Ну вот допустим если так:
ВЫБРАТЬ
    ДокументЗаказ.Ссылка,
    ДокументЗаказ.ПометкаУдаления,
    ДокументЗаказ.Номер,
    ДокументЗаказ.Дата,
    ДокументЗаказ.Проведен,
    ДокументЗаказ.Примечание,
    ДокументЗаказ.Автор,
    СтатусыЗаказов.Статус
ИЗ
    РегистрСведений.СтатусыЗаказов КАК СтатусыЗаказов
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.Заказ КАК ДокументЗаказ
        ПО СтатусыЗаказов.Заказ = ДокументЗаказ.Ссылка


у мну формируется Список,
в интерфейсе я могу задать (Все действия->Настроить список) отбор

Вот теперь интересно было бы задавать отбор по изменению реквизита на форме, где значение реквизита будет использоваться для отбора...
DartRomanius
ЗЫ: Мозг вынесло уже напрочь с 8.2 smile.gif
Хочу туже траву что и разработчики платформы.
DartRomanius
Палучилось....


Цитата(disfinder @ 27.02.11, 21:54) необходимо зарегистрироваться для просмотра ссылки
называется "Отбор".
Если поле отбора будет реквизитом документа- то отбор получится. Если будете хранить в регистре сведений - то через отбор не выйдет, нужно будет формировать и заполнять список документов вручную (программно в смысле).


Формирование списка следующим образом:
ВЫБРАТЬ
    ДокументЗаказ.Ссылка,
    ДокументЗаказ.ПометкаУдаления,
    ДокументЗаказ.Номер,
    ДокументЗаказ.Дата,
    ДокументЗаказ.Проведен,
    ДокументЗаказ.Примечание,
    ДокументЗаказ.Автор,
    СтатусыЗаказов.Статус
ИЗ
    РегистрСведений.СтатусыЗаказов КАК СтатусыЗаказов
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.Заказ КАК ДокументЗаказ
        ПО СтатусыЗаказов.Заказ = ДокументЗаказ.Ссылка


А отбор где-то таким образом:

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

1. Более чем внимательно курить доки
2. Внимательно смотреть что за типы данных.
Vofka
Плюсану за то, что сами разобрались и озвучили решение проблемы!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.