Как убрать отбор в 1с
Бодаемся с отображением отборов на управляемых формах
Как известно многим, дьявол всегда кроется в мелочах. Одной из таких мелочей всплыло замечание пользователей о том, что при добавлении отборов при настройке списка не всегда отображается вид сравнения.
Казалось бы, дело за малым, перехватить момент, когда отборы попадают на форму, да пройтись по всем элементам группы пользовательских настроек и проставить видимость.
Итак, первым делом нужно усвоить, что те отборы, которые мы используем через стандартную команду настройки списка, имеют отношение не к самой форме, а к динамическому списку, расположенному на ней, и являются ни чем иным, как пользовательскими настройками.
Если смотреть свойства динамического списка через палитру, можно найти две зацепки для решения нашей задачи:
1) Во-первых, это свойство «Группа пользовательских настроек». В данном свойстве указывается группа формы, которая выступит родителем для всех добавляемых элементов с отображением отборов.
2) Во-вторых, это событие списка «ПриОбновленииСоставаПользовательскихНастроекНаСервере».
Рассмотрим программное создание полей на примере рабочего кода:
В итоге мы имеем стройный ряд настроек, который можно поменять в любой момент:
Отбор и сортировка данных в «1С:Предприятии 8.1»
С какими списками сталкиваются пользователи? Это могут быть списки документов в соответствующих журналах. Практически любой справочник, заполненный данными, представляется в виде списка, в котором, как правило, есть иерархия (группы-папки или подчиненные элементы). Нередко для выбора какого-либо элемента программа формирует списки автоматически или подчиняясь заложенной разработчиками логике.
Практически во всех списках можно использовать механизмы отбора (если это явно не запрещено разработчиком) и разнообразной сортировки (рис. 1). В программе эти механизмы неразрывно связаны друг с другом. Рассмотрим, как их использовать правильно и эффективно.
Списки
С какими списками сталкиваются пользователи? Это могут быть списки документов в соответствующих журналах. Практически любой справочник, заполненный данными, представляется в виде списка, в котором, как правило, есть иерархия (группы-папки или подчиненные элементы). Нередко для выбора какого-либо элемента программа формирует списки автоматически или подчиняясь заложенной разработчиками логике.
Практически во всех списках можно использовать механизмы отбора (если это явно не запрещено разработчиком) и разнообразной сортировки (рис. 1). В программе эти механизмы неразрывно связаны друг с другом. Рассмотрим, как их использовать правильно и эффективно.
Механизм сортировки
Для чего нужен механизм сортировки? Во-первых, он, как следует из названия, позволяет отсортировать список по нужному критерию.
Во-вторых, в платформе «1С:Предприятие 8.1» активно используется механизм быстрого поиска. Этот механизм позволяет быстро найти в каком-либо списке нужный элемент, набрав первые символы (рис. 2). Но в динамических списках (например, список элементов справочника или список документов) быстрый поиск работает только по реквизитам, по которым доступна сортировка.
Посмотреть все доступные для сортировки реквизиты списка можно, открыв окно «Отбор и сортировка». Это окно, как правило, доступно на панели действий (рис. 3) либо в контекстном меню списка, открывающемся правой кнопкой мыши (рис. 4). В окне «Отбор и сортировка» нужно перейти на закладку «Сортировка», где показаны все доступные реквизиты, по которым возможна сортировка.
Заметим, что нижний пример иллюстрирует возможность использования комбинированной сортировки (одновременно по нескольким реквизитам). В нашем случае, это сортировка по дате по убыванию (самые старые даты внизу) и по номерам по возрастанию (самые большие номера внизу).
В каждом списке можно индивидуально сохранить нужную сортировку. Достаточно включить галочку «Использовать эту настройку сортировки при открытии» и нажать «ОК». Система запомнит настройку и при следующем открытии этого списка установит сохраненную сортировку.
Быстро отсортировать список по нужному реквизиту можно, щелкнув мышкой по шапке с названием этого реквизита.
Механизм отбора
Практически везде, где есть список (как правило, в виде таблицы), можно использовать механизм отбора, который активируется либо соответствующей кнопкой на панели действий, либо в контекстно-зависимом меню списка (рис. 3 и 4). Если отбор у нужного списка возможен, откроется окно «Отбор и сортировка». В нем будут отображены все возможные виды доступных для отбора реквизитов. Список доступных элементов отбора зависит от того, где этот отбор будет использован. В общем случае нужно найти один или несколько необходимых элементов для отбора, указать значения и активировать настроенную комбинацию критериев.
Если указать одновременно несколько критериев отбора, в списке будут отображены только такие элементы, которые удовлетворяют всем указанным критериям.
Механизмы отбора и сортировки на примерах
Попробуем решить несколько задач в демонстрационной базе («Бухгалтерия предприятия», редакция 1.6). Например, отобразим документы, сформированные для контрагента «Саймон и Шустер ООО» в журнале «Документы покупателей». Сразу оговоримся, что описывать будем стандартные для платформы «1С:Предприятие 8.1» правила и логику ведения отбора, без привязки к какой-либо конкретной конфигурации и дополнительным сервисным возможностям, в ней реализованным.
Итак, открываем журнал документов «Документы покупателей». В стандартном состоянии без включенного отбора на экран выводятся все документы всех покупателей (даже в демонстрационной базе это занимает не одну страницу).
Для быстрого использования нужного отбора достаточно сразу приступать к выбору нужного критерия. Ставить галочку напротив используемого отбора не нужно. Программа сделает это сама после того, как будет указан необходимый критерий. Быстро применить настроенные критерии отбора можно, нажав комбинацию клавиш Ctrl+Enter*.
Теперь отобразим список номенклатуры, в наименованиях которых содержится слово «Чайник». Для этого открываем справочник «Номенклатура», вызываем окно отбора, в элементе «Наименование» выбираем условие сравнения «Содержит» и указываем требуемое слово (рис. 8).
Вид сравнения «Содержит» выбран не случайно. Именно он позволяет найти нужное слово (или его часть) в любом месте наименования номенклатуры. Если оставить вид сравнения «Равно», в списке будут отображены только такие элементы номенклатуры, которые называются точно так, как написан запрос. А таких в нашей демобазе нет (то есть не было бы отображено ни одного элемента).
Если искать не по наименованию, а по полному наименованию, галочку использования отбора по наименованию лучше снять. Иначе отбор будет использован и по наименованию, и по полному наименованию, что не всегда может оказаться необходимым (рис. 9).
Для удобства работы с элементами справочника при использовании отборов лучше на время отключать отображение иерархии (рис. 10).
В качестве третьей задачи просмотрим в журнале документов «Документы покупателей» только документы «Реализация товаров и услуг». Решение этой задачи продемонстрирует особенность одного из видов отбора, доступного только в журналах документов.
Открываем журнал «Документы покупателей» и указываем в элементе отбора «Вид документа» документ «Реализация товаров и услуг». Программа сама предоставляет возможность выбора определенного вида документа из тех, которые включены в данный журнал. Для этого есть и персональная кнопочка на панели действий (рис. 11).
Аналогично отбору по виду документов платформа автоматически предложит элемент отбора «Структура подчиненности», если в конфигурации настроены взаимосвязи между документами.
Попробуем просмотреть в журнале документов «Документы покупателей» только документы «Счет-фактура» для контрагентов, находящихся в группе «Покупатели» справочника. Эта задача похожа на первую с тем лишь отличием, что мы не указываем конкретного контрагента, а анализируем счета-фактуры целой группы контрагентов, которые находятся в группе «Покупатели».
У задачи существует несколько способов реализации. Рассмотрим наиболее эффективный. Открываем журнал «Документы покупателей», указываем в элементе отбора «Вид документа» документ «Счет-фактура выданный». После этого в элементе отбора «Контрагент» указываем вид сравнения «В группе». Выбираем тип значения «Контрагенты» и открываем форму выбора контрагентов. В ней выбираем группу «Покупатели» (рис. 12).
Такой вид сравнения подразумевает, что условию будут удовлетворять все элементы справочника, которые находятся в указанной группе. Причем даже если внутри указанной группы есть подгруппы, все вложенные туда элементы тоже будут удовлетворять такому критерию.
А теперь усложним задачу: просмотрим в журнале документов «Документы покупателей» только документы «Счет-фактура», но при этом нужно просмотреть документы и для покупателей, и для поставщиков. Решаем ее аналогично предыдущей, за исключением одного накладываемого критерия отбора.
И, наконец, отобразим в документе «Реализация товаров и услуг» с номером ТДН00002 в табличной части только номенклатуру, содержащую в наименованиях слово «СТИНОЛ». Эта задача, позволит увидеть универсальность самого механизма отбора, а также насколько разнообразно может быть его использование. Задача основана на реальных ситуациях, когда, например, в табличной части накладной несколько сотен (а то и тысяч) строк и надо быстро проанализировать ее состав. В нашей демобазе есть документ «Реализация товаров и услуг» с номером ТДН00002, у которого в табличной части есть несколько строк. Несмотря на то что в документе кнопок использования отборов не наблюдается, вызов отбора доступен через контекстное меню (правая кнопка мыши).
После этого остается только добавить отобранные позиции в список отбора для документа и применить критерии отбора.
Полезные функции механизма отбора
Рассмотрим еще несколько моментов, связанных так или иначе с отборами в системе «1С:Предприятие 8.1».
В списках объектов конфигурации, где используется привязка к датам (например, списки документов), и в журналах документов можно использовать быстрый отбор по диапазону дат. Для этого достаточно нажать соответствующую кнопку «Настройка периода» на панели действий (или выбрать в контекстном меню) (рис. 15). Таким способом можно в каждом списке индивидуально регулировать критерий отображения элементов по датам.
В программе также есть возможность быстрого поиска по номеру документа в списках документов или в журналах. Вызывается эта возможность кнопкой «Поиск по номеру» (рис. 20) и позволяет найти нужный документ, гибко настроив параметры поиска. Найденные документы по указанным критериям отображаются в нижней части окна этого сервиса, и можно перейти к нужному документу.
Установка отбора по списку значений при открытии формы выбора справочника из реквизита обработки
Исходная задача: нужно выбрать автомобиль из списка автомобилей, но не из всего большого перечня имеющихся в справочнике автомобилей элементов, а из двух-трех десятков автомобилей, уже отобранных в список значений.
Для этого, необходимо открыть справочник с предустановленным отобором по списку значений. Исходный список значений имеется на форме обработки, по команде открытия другой формы этой же обработки нужно чтобы при выборе одного из реквизитов открываемой формы открывалась форма выбора справочника с уже определенным списком значений для выбора, а не все содержимое справочника, при этом выбор должен осуществляться не из списка выбора (с использованием свойства «СписокВыбора») а из «полноценного» перечня элементов справочника, чтобы пользователь мог видеть значения нескольких реквизитов элемента справочника и осуществлять удобный и осознанный выбор.
Последовательность реализации такая:
1. В исходной форме обработки в команде открытия другой формы обработки указываем:
Таким образом передаем в открываемую форму массив значений выгруженный из списка значений («СписокАвтомобилей») расположенного на исходной форме обработки.
2. В открываемой форме обработки (куда передается список значений в виде массива) должны быть: реквизит формы с типом значения «СписокЗначений» и параметр с типом значения «Произвольный», при этом имя параметра должно быть таким как указано в параметрах открытия формы (в нашем примере это «СписокАвтомобилей»).
3. В открываемой форме должен быть такой код:
В процедуре «ПриСозданииНаСервере» мы получаем значения из параметра «СписокАвтомобилей» и загружаем их в реквизит «РеквизитСписокАвтомобилей» в момент открытия формы обработки.
В процедуре «АвтомобильНачалоВыбора» программно устанавливается требуемый вариант отбора и модально открывается форма выбора справочника с подстановкой выбранного значения в реквизит открытой формы обработки.
Как ограничить поля отбора в динамическом списке и ничего не сломать
Однако, долгое время разработчики не имели возможность запрещать пользователям делать отборы по конкретным полям и их реквизитам. Такое бывает необходимо, чтобы не дать возможность «положить» списки со сложными запросами или с большим количеством данных.
И вот с версии 8.3.10 в платформе появился метод УстановитьОграниченияИспользованияВОтборе()
Тип: Массив.
Пути к полям компоновки, на которые требуется установить ограничение.
Запрещает использование указанных полей и всех их дочерних полей в настройках отбора.
Поля, на которые установлено ограничение, не входят в коллекцию доступных полей.
После вызова метода список полей с ограничениями замещается указанным. Вызов метода с пустым списком полей отменяет ранее установленные ограничения.
Использование в версии:
Доступен, начиная с версии 8.3.10.
Здесь нас интересует этот пункт:
Запрещает использование указанных полей и всех их дочерних полей в настройках отбора.
Поля, на которые установлено ограничение, не входят в коллекцию доступных полей.
После вызова метода список полей с ограничениями замещается указанным. Вызов метода с пустым списком полей отменяет ранее установленные ограничения.
Это означает, что метод можно вызывать повторно, настраивая доступность полей в зависимости от каких-то событий. Но нужно понимать нюансы работы.
Приведём такой пример. Есть динамический список с документами. Необходимо запретить пользователям делать фильтры по полям, если в шапке формы пустой параметр «Организация». Возьмём для нашего эксперимента форму журнала документов продажи из демо базы ERP 2.4:
Для этого добавим форму в расширение:
Подключимся к обработчику изменения организации:
И вставим такой простой код:
Обновим базу и откроем форму в режиме предприятия. Сразу видим, что в контекстном меню по полю «Подразделение» нет возможности поиска:
Расширенный поиск не позволяет выбирать подразделение:
Так же отбор недоступен и в форме настройки списка:
А теперь заполним организацию:
И появилась возможность фильтровать в расширенном поиске:
Ну и настройка динамического списка заработала:
А значит теперь мы можем наложить отбор на подразделение. Давайте так и сделаем.
Сейчас в списке доступны три строки с двумя подразделениями:
Установим отбор по подразделению «Дирекция» при помощи Ctrl+Alt+F
Всё хорошо. Но что будет, если мы сейчас очистим организацию в шапке формы, тем самым запретив отбирать по подразделению?
Странно, да? Отбор отключился. Но надпись осталась. Да, её не трудно закрыть крестиком вручную, но пользователю будет непонятно, почему показан отбор, который не работает.
Для начала снова выберем организацию в шапке формы и установим отбор по подразделению:
Хорошо, а теперь очистим организацию в шапке:
Мы установили ограничение на отбор, но существующий при этом не сбросился. А в настройке списка наш отбор помечен красным и более недоступен:
Как же так? Понять это поможет другая статья, в которой рассказывается принцип того, как СКД (на которой и базируются динамические списки) работает с ограничениями полей:
Ограничения полей, или как обмануть СКД?.
Прочитав её, станет понятно, что ограничения полей в отборах полноценно влияют только на пользовательскую доступность полей, но не на логику выборки данных. То есть, пользовательские настройки обходят ограничения полей.
Интересно, что решение, которое было предложено в статье, в данной ситуации не работает. Если использовать КомпоновщикНастроек.Восстановить(), то пользовательские отборы всё равно остаются на месте.
Попробуем же программно отключить использование отборов, если их полей нет в коллекции ДоступныеПоляОтбора.
Теперь когда пользователь очищает поле «Организация», то и наш «неправильный» отбор отключается.
Можно заметить, что при этом поле остаётся. И самое интересное, что если пользователь вручную нажмёт его использование, то и, несмотря на ограничения отборов, фильтрация применится:
Но что же делать? Придётся не отключать использование отбора, а просто удалять его.
Теперь при очистке организации, так же удаляются и «запрещенные» отборы:
Пользователь теперь не может наложить отбор, так как его нет в доступных полях для отбора. А старые отборы почистились автоматически.
Хорошо, мы разобрались с ограничениями отборов в динамическом списке. Но как обстоят дела с другими ограничениями? Добавим запреты на группировку и сортировку:
Открываем форму с пустой организацией и видим, что подразделения нет в доступных к группировке полей. Всё хорошо.
Теперь выберем организацию и добавим группировку:
Всё хорошо применилось:
А теперь очистим организацию. После очистки, наш код запрещает использование поля Подразделение в группировках.
И вот мы видим такую ошибку:
На группировку 1С поругалась. И форма теперь показывает пустой список:
То же самое и с ограничением по сортировке.
Выходит, что платформа позволяет блокировать такие действия. Но с отборами это не работает. Хорошо, что мы написали свой метод по обработке этого?
На первый взгляд, все эти проблемы возникнут только в тех случаях, если разработчик в рамках одного списка производит включение\отключение ограничений. Однако, это не совсем так.
Если изначально форма списка не содержала ограничения по отборам, то при внесении изменений, у пользователей могут остаться сохранённые настройки. Как и те, что подгружаются автоматически при открытии формы, так и те, что пользователь может подгрузить вручную по кнопке «Выбрать настройки».
И это так же нужно обрабатывать кодом. Иначе нет никакой уверенности, что ваши ограничения действительно заработали и пользователи не накладывают «запрещенные» отборы.
Он позволяет наложить нехитрый отбор для примитивных типов полей, поэтому немного изменим наш код и ограничим поле «Сумма». И оставим пока только ограничение отборов.
(В нашей обработке два поля «Сумма», поэтому, чтобы избежать путаницы, ограничим оба)
Для этого в форме с пустой организацией зайдём в «Настроить список». Как видим, поля суммы в отборах нет:
И перенесем доступные к сортировке поля в группу с отборами:
Фильтр применился. Несмотря на ограничения.
Да, этот способ обхода замудрён, но работает. И к сожалению, события по изменению отборов в 1С нет.
Есть простой способ предотвратить это. Если вы отключаете использование в отборах, то и запрещайте использовать в группировках и сортировках. Тогда неоткуда будет подтянуть поле с отбором.
Выводы:
Ограничения отборов в динамическом списке автоматически обрабатываются недостаточно, поэтому:
1. Дополнительно программно обходите настройки
а) при установки ограничений
б) при загрузке пользовательских настроек
2. Если запрещаете отборы, то запрещайте и группировку\сортировку.
3. Если планируете включать\отключать ограничения и у вас платформа меньше 8.3.16, то отключите отображения поля состояния просмотра, чтобы оно не вводило пользователя в заблуждение.
Понравилась статья?
Подайте знак автору =) Поставьте плюс, оставляйте комментарий и переходите к другим публикациям:
Особенности использования отборов в системе компоновки данных
В настройках компоновки данных возможно указание главного отбора и отбора группировок. Главный отбор устанавливается для всего отчета в целом. Отбор группировок устанавливается у конкретной группировки. В данной статье описываются особенности работы системы с главным и отборами группировок.
Главный отбор отчета
Главный отбор влияет на получение данных из наборов, для вывода в отчет. Например, если в главный отбор добавить условие Номенклатура Равно «1С:Бухгалтерия 7.7 Стандартная версия», то в отчет будут выдаваться только записи, у которых поле Номенклатура имеет значение «1С:Бухгалтерия 7.7 Стандартная версия».
Применение отбора в запросах
Если возможно, условия из главного отбора помещается в текст запроса. Отбор может быть помещен в условие виртуальной таблицы, в предложение ГДЕ, в предложение ИМЕЮЩИЕ, в зависимости от того, на какое поле накладывается отбор.
В условие виртуальной таблицы отбор помещается в случае если в исходном запросе набора данных явно сказано, что отбор на данное поле нужно помещать в условие виртуальной таблицы или для набора данных указано автоматическое заполнение полей.
Пример явного указания необходимости помещения условия на поле Номенклатура в параметр виртуальной таблицы:
Сгенерированный запрос набора данных при применении отбора на поле Номенклатура может выглядеть следующим образом:
Как видно, отбор помещен в условие виртуальной таблицы.
В предложение ГДЕ условие помещается в случае если в исходном запросе набора данных явно сказано, что отбор на поле нужно помещать в предложение ГДЕ или при автоматическом заполнении. Если для набора данных указано автоматическое заполнение, то условие будет помещаться в предложение ГДЕ только в случае если отбор на поле не применилось в условии виртуальной таблицы, которая не находится в левой части соединения.
Пример. В наборе данных используется следующий запрос и используется автоматическое заполнение:
Если в отбор добавить условие на поля Номенклатура и Склад, то результирующий запрос будет выглядеть так:
Как видно, отбор на поле Номенклатура был помещен в параметры виртуальных таблиц и т.к. отбор на данное поле был помещен в таблицу, которая не находится в левом соединении (ПродажиОбороты), то отбор на это поле не был помещен предложение ГДЕ. Условие же на поле Склад было помещено как в виртуальную таблицу, так и в предложение ГДЕ, т.к. таблица УчетНоменклатурыОстатки, в условие которой помещен отбор, находится в левом соединении.
Если бы в исходном запросе было явное указание того, что условие на поле Номенклатуры нужно помещать в предложение ГДЕ, как в следующем запросе:
То отбор на данное поле был бы добавлен в предложение ГДЕ результирующего запроса вне зависимости от того, был ли отбор помещен в условие виртуальной таблицы. Для выше описанного примера результирующий запрос бы выглядел следующим образом:
В предложение ИМЕЮЩИЕ условие помещается в случае если отбор накладывается на поле, выражение которого содержит агрегатную функцию.
Например, если исходный запрос, с автоматическим заполнением, выглядит так:
То при применении отбора на поле СуммаДок результирующий запрос будет выглядеть так:
Отбор, применяемый не в запросе
В некоторых ситуациях поместить условие в текст запроса не удается. Такое может произойти в случае если в условии используются поля из нескольких наборов данных или в условии используется вычисляемое или пользовательское поле, содержащее выражения, которые не могут быть представлены на языке запросов. В этом случае выражение условие помещается в свойство Отбор сгенерированного набора данных макета компоновки данных. Если в условии использовались поля из нескольких наборов данных, то условие будет помещаться в последний по связи дочерний набор данных, поле которого используется в условии. Например, если в схеме определены наборы данных Продажи и связанный с ним набор данных Остатки и в условии используются поля из обоих наборов данных, то условие будет помещено в свойство Отбор набора данных Остатки.
Особенности использования отбора при работе с несколькими наборами данных
При использовании в схеме нескольких наборов данных, если в главном отборе накладывается условие на поле некоторого дочернего набора данных, то в сгенерированном макете компоновки данных дочерний набор данных будет связан с родительским набором данных с типом связи «Внутренняя». Родительские наборы данных набора данных, к которому применяется условие, также будут связаны со своими родительскими наборами данных с типом связи «Внутренняя». Тип связи «Внутренняя» означает, что запись родительского набора данных будет выводиться в результат отчета только в случае, если в дочернем наборе данных будут найдены связанные записи. Например, если в схеме определены наборы данных Продажи и связанный с ним набор данных Остатки и в условии используются поле из набора данных Остатки, то в сгенерированном макете компоновки данных связь между этими наборами данных будет определена с типом связи «Внутренняя». Если бы при этом набор данных Продажи был в свою очередь приемником связи для некоторого другого набора данных, то и эта связь также была бы сгенерирована с типом связи «Внутренняя».
Отбор группировок
Отбор группировок используется для фильтрации записей, выводимых в группировке. При этом отбор распространяется на саму группировку, на вложенные группировки, и не влияет на другие группировки имеющиеся в отчете.
Например. В схеме компоновки опишем набор данных, который получает остатки номенклатуры по складам.
В настройках отчета создадим следующую структуру:
В первую группировку по полю Номенклатура добавим условие Склад Равно «Основной склад». В группировку по полю Склад добавим условие Склад Не Равно «Основной склад».
Результат отчета будет выглядеть следующим образом:
Отбор: Склад Равно «Основной склад» |
Номенклатура | Количество остаток |
1С:Аспект 7.7 | 10,00 |
1С:Бухгалтерия 7.7 Базовая версия | 15,00 |
1С:Бухгалтерия 7.7 Стандартная версия | 5,00 |
1С:Бухгалтерия ПРОФ версия 7.7 | 2,00 |
1С:Торговля и Склад 7.7 Проф | 2,00 |
Windows XP Home Edition Russian CD | 14,00 |
Windows XP Home Edition Russian UPG CD | 20,00 |
Windows XP Professional Russian CD | 2,00 |
Клавиатура Apple Pro Keyboards | 7,00 |
Клавиатура Keyboard PS/2 | 11,00 |
Клавиатура Linkworld LK-601 PS/2 | 30,00 |
Клавиатура LK-601 KB-2 000 PS/2 | 17,00 |
Лазерный принтер 5250197-203 Minolta-QMS | 1,00 |
Лазерный принтер Canon LBP-810 | 2,00 |
Лазерный принтер HP LaserJet 2200 | 2,00 |
Монитор 15′ LG Studioworks 575N | 4,00 |
Монитор 19′ Hitachi CM715ET | 4,00 |
Монитор LCD 22′ M8537ZM/A | 1,00 |
Мышь 2-кноп A4Tech PS/2 | 16,00 |
Мышь GENIUS «EASY» (3 кнопки), | 35,00 |
Мышь Ice Mouse MUS-2 | 8,00 |
Мышь LOGITECH M-S48 PS/2 | 1,00 |
Сист. блок Hewlett-Packard Brio BA410 | 10,00 |
Сист. блок Hewlett-Packard Vectra VL420 | 2,00 |
Сист. блок IBM NetVista A22p | 5,00 |
Сист. блок IBM NetVista M41 | 3,00 |
Итого | 229,00 |
Отбор: Склад Не равно «Основной склад» |
Склад | Количество остаток |
Номенклатура | |
Витрина в офисе | 23,00 |
1С:Аспект 7.7 | 2,00 |
1С:Бухгалтерия 7.7 Базовая версия | 1,00 |
1С:Бухгалтерия 7.7 Стандартная версия | 1,00 |
1С:Бухгалтерия ПРОФ версия 7.7 | 1,00 |
1С:Торговля и Склад 7.7 Проф | 1,00 |
Windows XP Home Edition Russian CD | 2,00 |
Windows XP Home Edition Russian UPG CD | 5,00 |
Windows XP Professional Russian CD | 2,00 |
Клавиатура Keyboard PS/2 | 3,00 |
Лазерный принтер 5250197-203 Minolta-QMS | 1,00 |
Лазерный принтер Canon LBP-810 | 1,00 |
Мышь GENIUS «EASY» (3 кнопки), | 2,00 |
Ноутбук Rover Computers Explorer | 1,00 |
Склад отдела продаж | 58,00 |
1С:Аспект 7.7 | 1,00 |
1С:Бухгалтерия ПРОФ версия 7.7 | 1,00 |
1С:Торговля и Склад 7.7 Проф | 1,00 |
Windows XP Home Edition Russian CD | 1,00 |
Windows XP Home Edition Russian UPG CD | 4,00 |
Клавиатура Apple Pro Keyboards | 1,00 |
Клавиатура Keyboard PS/2 | 2,00 |
Клавиатура Linkworld LK-601 PS/2 | 5,00 |
Клавиатура LK-601 KB-2 000 PS/2 | 5,00 |
Монитор 17′ Philips 107S20 | 1,00 |
Монитор 19′ Hitachi CM715ET | 4,00 |
Мышь GENIUS «EASY» (3 кнопки), | 5,00 |
Мышь Ice Mouse MUS-2 | 16,00 |
Мышь LOGITECH M-S48 PS/2 | 5,00 |
Мышь OK-720 Mouse A4Tech PS/2 | 1,00 |
Ноутбук Rover Computers Navigator KT7 | 4,00 |
Сист. блок Hewlett-Packard Vectra VL420 | 1,00 |
Итого | 81,00 |
Как видно, в первой группировке выданы остатки номенклатуры по складу «Основной склад». В следующих группировках выдаются остатки номенклатуры по другим складам.
Тип применения отбора группировок
В отборах, применяемых к группировкам, возможно указание типа применения условия для выводимых записей.
Возможны три варианта типа применения:
В следующем примере в результат отчета выдаются четыре группировки по полю Номенклатура. При этом в первой группировке выводятся записи без отбора, а в остальных группировках выдаются записи с отбором Количество остаток больше 40, с типами применения Без иерархии, Иерархия, Только иерархия.
Без отбора |
Номенклатура | Количество остаток |
Клавиатура Keyboard PS/2 | 16,00 |
Клавиатуры | 65,00 |
Клавиатура Apple Pro Keyboards | 8,00 |
Клавиатура Linkworld LK-601 PS/2 | 35,00 |
Клавиатура LK-601 KB-2 000 PS/2 | 22,00 |
Мониторы | 14,00 |
Монитор 15′ LG Studioworks 575N | 4,00 |
Монитор 17′ Philips 107S20 | 1,00 |
Монитор 19′ Hitachi CM715ET | 8,00 |
Монитор LCD 22′ M8537ZM/A | 1,00 |
Мыши | 89,00 |
Мышь LOGITECH M-S48 PS/2 | 6,00 |
Мышь OK-720 Mouse A4Tech PS/2 | 1,00 |
Оптические мыши | 82,00 |
Мышь 2-кноп A4Tech PS/2 | 16,00 |
Мышь GENIUS «EASY» (3 кнопки), | 42,00 |
Мышь Ice Mouse MUS-2 | 24,00 |
Ноутбуки | 5,00 |
Ноутбук Rover Computers Explorer | 1,00 |
Ноутбук Rover Computers Navigator KT7 | 4,00 |
Принтеры | 7,00 |
Лазерный принтер 5250197-203 Minolta-QMS | 2,00 |
Лазерный принтер Canon LBP-810 | 3,00 |
Лазерный принтер HP LaserJet 2200 | 2,00 |
Программное обеспечение | 93,00 |
1С:Аспект 7.7 | 13,00 |
1С:Бухгалтерия 7.7 Базовая версия | 16,00 |
1С:Бухгалтерия 7.7 Стандартная версия | 6,00 |
1С:Бухгалтерия ПРОФ версия 7.7 | 4,00 |
1С:Торговля и Склад 7.7 Проф | 4,00 |
Windows XP Home Edition Russian CD | 17,00 |
Windows XP Home Edition Russian UPG CD | 29,00 |
Windows XP Professional Russian CD | 4,00 |
Системные блоки и комплектующие | 21,00 |
Сист. блок Hewlett-Packard Brio BA410 | 10,00 |
Сист. блок Hewlett-Packard Vectra VL420 | 3,00 |
Сист. блок IBM NetVista A22p | 5,00 |
Сист. блок IBM NetVista M41 | 3,00 |
Итого | 310,00 |
Без иерархии | |
Отбор: Количество остаток Больше «40» |
Номенклатура | Количество остаток |
Мыши | 42,00 |
Оптические мыши | 42,00 |
Мышь GENIUS «EASY» (3 кнопки), | 42,00 |
Итого | 42,00 |
Иерархия | |
Отбор: Количество остаток Больше «40» |
Номенклатура | Количество остаток |
Клавиатуры | 65,00 |
Мыши | 89,00 |
Оптические мыши | 82,00 |
Мышь GENIUS «EASY» (3 кнопки), | 42,00 |
Программное обеспечение | 93,00 |
Итого | 310,00 |
Только иерархия | |
Отбор: Количество остаток Больше «40» |
Номенклатура | Количество остаток |
Клавиатура Keyboard PS/2 | 16,00 |
Клавиатуры | 65,00 |
Клавиатура Apple Pro Keyboards | 8,00 |
Клавиатура Linkworld LK-601 PS/2 | 35,00 |
Клавиатура LK-601 KB-2 000 PS/2 | 22,00 |
Мыши | 89,00 |
Мышь LOGITECH M-S48 PS/2 | 6,00 |
Мышь OK-720 Mouse A4Tech PS/2 | 1,00 |
Оптические мыши | 82,00 |
Мышь 2-кноп A4Tech PS/2 | 16,00 |
Мышь GENIUS «EASY» (3 кнопки), | 42,00 |
Мышь Ice Mouse MUS-2 | 24,00 |
Программное обеспечение | 93,00 |
1С:Аспект 7.7 | 13,00 |
1С:Бухгалтерия 7.7 Базовая версия | 16,00 |
1С:Бухгалтерия 7.7 Стандартная версия | 6,00 |
1С:Бухгалтерия ПРОФ версия 7.7 | 4,00 |
1С:Торговля и Склад 7.7 Проф | 4,00 |
Windows XP Home Edition Russian CD | 17,00 |
Windows XP Home Edition Russian UPG CD | 29,00 |
Windows XP Professional Russian CD | 4,00 |
Итого | 310,00 |
Например, если используется следующий запрос:
И в главный отбор добавляется условие на поле КоличествоОборот, то в результирующий запрос будет добавлено условие
Т.к. в запросе используется виртуальная таблица Обороты, которая выдает агрегированные данные в зависимости от использованных полей, то результат отчета будет зависеть от того, какие поля будут задействованы в настройках отчета. Так, если в отчете задействовано только поле Контрагент, то в результат будут выдаваться записи для контрагентов, по которым оборот превышал заданную величину, а если задействованы поля Контрагент и Номенклатура, то в результат будут выдаваться записи для сочетаний контрагентов и номенклатуры, по которым оборот превысил заданную величину.
Таким образом, если в отчете требуется получить только записи группировки, в которых значение ресурса удовлетворяет некоторому условию, то следует добавлять отбор в группировку, а не в главный отбор.
Например, для того, чтобы в отчете, в группировке номенклатуры, получить номенклатуру, с оборотом, превышающим некоторую величину, то отбор следует применять в группировке по номенклатуре.