1С 8.3 : Табличная часть
Как настроить отбор строк?
Часто возникает задача показать только нужные строки в табличной части документа или справочника (или другого объекта). Для этого можно использовать замечательное свойство:
ОтборСтрок, которое входит в расширение табличного поля, связанного с табличной частью.
Управляемые формы
или такой динамический отбор
Обычные формы
Использовать его очень просто:
А теперь конкретные примеры:
Подчиненные табличные части в 8.х
В событии ПриАктивизацииСтроки для первого табличного поля пишем:
При добавлении новой строки во вторую табличную часть, нужно следить за тем, чтобы идентификационная колонка была установлена.
Обращаю ваше внимание, что при таком отборе не используются индексы и для больших табличных частей возможно замедление работы.
Еще раз напомню, что ОтборСтрок входит в расширение табличного поля табличной части, т.е. табличное поле должно быть связано с табличной частью. Если же оно связано с динамическим списком типа СправочникСписок, то здесь нужно использовать свойство Отбор для объекта типа СправочникСписок.
Похожие FAQ
Еще в этой же категории
отбор в динамическом списке программно 2
Для установки отбора в динамическом списке используется свойство Отбор. Добавление нового элемента отбора осуществляется следующим образом: ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»)); Для того чтобы новый Посмотреть все в категории Работа с Формой (Диалог) и её элементами
1С 8.2 УП : Табличная часть
Как настроить отбор строк?
Часто возникает задача показать только нужные строки в табличной части документа или справочника (или другого объекта). Для этого можно использовать замечательное свойство:
ОтборСтрок, которое входит в расширение табличного поля, связанного с табличной частью.
Управляемые формы
или такой динамический отбор
Обычные формы
Использовать его очень просто:
А теперь конкретные примеры:
Подчиненные табличные части в 8.х
В событии ПриАктивизацииСтроки для первого табличного поля пишем:
При добавлении новой строки во вторую табличную часть, нужно следить за тем, чтобы идентификационная колонка была установлена.
Обращаю ваше внимание, что при таком отборе не используются индексы и для больших табличных частей возможно замедление работы.
Еще раз напомню, что ОтборСтрок входит в расширение табличного поля табличной части, т.е. табличное поле должно быть связано с табличной частью. Если же оно связано с динамическим списком типа СправочникСписок, то здесь нужно использовать свойство Отбор для объекта типа СправочникСписок.
Похожие FAQ
Еще в этой же категории
Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора
Отбор строк в табличной части
Добрый день! Кто знает как можно при открытии управляемой формы, в табличной части задать множественный отбор?
По одному значению получается:
Элементы.Выплаты.ОтборСтрок = Новый ФиксированнаяСтруктура(«Отдел», Отдел);
А вот как задать отбор по нескольким отделам?
Такой вариант не срабатывает:
(6) alljoke, Я задаю отбор в табличной части при открытии формы документа. В обоих случаях выдается, что к отбору обратиться нельзя
Поле объекта не обнаружено (Отбор)
1) ГруппаОтбора = Объект.Выплаты.Отбор.Элементы.Добавить(Тип(«ГруппаЭлементовОтбораКомпоновкиДанных»));
2) ГруппаОтбора = Элементы.Выплаты.Отбор.Элементы.Добавить(Тип(«ГруппаЭлементовОтбораКомпоновкиДанных»));
В форме списка такой отбор можно задать, но у меня Форма документа. И в ней табличная часть «Выплаты» с колонкой «Отдел».
Тип этой табличной части отображается как «(ДокументТабличнаяЧасть.Расчеты.Выплаты)».
Когда я по вашему варианту пытаюсь напрямую обратиться к ТЧ «Выплаты», выдается ошибка:
Переменная не определена (Выплаты)
ГруппаОтбора = >Выплаты.Отбор.Элементы.Добавить(Тип(«ГруппаЭлементовОтбораКомпоновкиДанных»));
(11)Можно поподробее. Как с помощью условного оформления отобрать?
Есть, например таб часть Товары. В ней реквизиты:
— Наименование (Строка);
— Просроченный (Булево);
— Иностранный(Булево);
— Деревянный(Булево);
— Уцененный(Булево);
Как сделать, чтобы отображались только Просроченный и уцененный
Пробовал Элементы.Товары.ОтборСтрок = Новый ФиксированнаяСтруктура(«Просроченный»,»Уцененный», Истина, Истина); Не работает
Пробовал Элементы.Товары.ОтборСтрок = Новый ФиксированнаяСтруктура(«Просроченный», Истина); Работает, показывает только Просроченные
Как сделать чтоб в таб части документа отбирал по нескольким реквизитам?
Бодаемся с отображением отборов на управляемых формах
Как известно многим, дьявол всегда кроется в мелочах. Одной из таких мелочей всплыло замечание пользователей о том, что при добавлении отборов при настройке списка не всегда отображается вид сравнения.
Казалось бы, дело за малым, перехватить момент, когда отборы попадают на форму, да пройтись по всем элементам группы пользовательских настроек и проставить видимость.
Итак, первым делом нужно усвоить, что те отборы, которые мы используем через стандартную команду настройки списка, имеют отношение не к самой форме, а к динамическому списку, расположенному на ней, и являются ни чем иным, как пользовательскими настройками.
Если смотреть свойства динамического списка через палитру, можно найти две зацепки для решения нашей задачи:
1) Во-первых, это свойство «Группа пользовательских настроек». В данном свойстве указывается группа формы, которая выступит родителем для всех добавляемых элементов с отображением отборов.
2) Во-вторых, это событие списка «ПриОбновленииСоставаПользовательскихНастроекНаСервере».
Рассмотрим программное создание полей на примере рабочего кода:
В итоге мы имеем стройный ряд настроек, который можно поменять в любой момент:
Как в динамический список управляемой формы документа добавить отбор по реквизиту табличной части этого документа?
Это возможно почти без программирования, далее рассмотрим на примере в картинках. Есть некий документ, установим для его формы списка флаг произвольного запроса:
Перейдем в конструктор запроса и увидим, что по умолчанию в поля добавились табличные части документа. Они там не нужны и нам их нужно оттуда убрать:
После чего нужно добавить отдельными таблицами нужные нам табличные части:
Подключаем левым соединением табличную часть к основной таблице документа по ссылке:
Теперь группируем все поля, здесь полей табличной части быть не должно:
После этого заходим на закладку «Компоновка данных», «Условия» и добавляем нужные в отборе поля:
Нажимаем «ОК» и видим как выглядит готовый текст запроса:
Если перейти тут же на закладку «Настройки», то увидим новые добавленные поля отбора:
Обратите внимание на то, что реквизит «Подразделение» присутствует как в шапке, так и в табличной части, а в доступных полях отбора всего одно поле, и в такой реализации будет установлен отбор по реквизиту табличной части. Если же нам нужен отбор и по подразделению из шапки, то нужно просто задать другое имя отбора для табличной части:
И вот как стал выглядеть текст запроса:
В настройках видно как изменилось имя поля отбора табличной части и вернулось поле отбора по шапке документа:
Ну, и вот так это выглядит в пользовательском режиме:
Вероятно, также можно разнообразить дополнительные поля отбора, подключая левым соединением любые таблицы данных, лишь бы было поле связи, и добавляя поля таблиц в поля условий компоновки данных. Но, я это не проверял, кому интересно можете поэкспериментировать.