Если в основу решения об отборе кладутся определенные характеристики кандидатов, выступающие в качестве критериев отбора, то для снижения вероятности ошибок эти характеристики должны отвечать определенным требованиям. Среди важнейших требований, которым должны отвечать критерии отбора, можно выделить следующие:

· валидность,

· полнота,

· надежность,

· различительная способность,

· необходимость и достаточность критериев.

Валидность критериев отбора. Валидность критериев означает, что критерии отбора должны соответствовать содержанию работы и требованиям к должности, на которую производится отбор. Если при отборе используются критерии, обладающие низкой валидностью, то это может явиться источником ошибок. К примеру, если производить отбор на должность секретаря на основании внешних данных, то будет неудивительно, если в ряде случаев такие секретарши не будут справляться со своей работой. Привлекательная внешность сама по себе не гарантирует наличие способностей или навыков, необходимых для хорошего выполнения работы. Конечно, может попасться и отличный работник, но это скорее будет случайностью или везением, а не результатом целенаправленного поиска и отбора.

Полнота критериев. Требование полноты критериев, используемых при отборе, означает, что они должны учитывать все ключевые характеристики, важные для успешной работы в данной должности. Неполнота критериев отбора может привести к тому, что будут отобраны кандидаты, не удовлетворяющие организацию по некоторым важным рабочим показателям. Например, если при отборе руководителя отдела опираться только на опыт и профессиональные знания кандидата, не учитывая его деловых качеств и умения работать с людьми, то есть опасность назначить на руководящую должность человека, который не сможет работать с подчиненными и добиваться от них необходимого уровня результативности и сотрудничества.

Надежность критериев. Отбор на основании установленных критериев должен обеспечивать точность и устойчивость результатов. Результаты, полученные в ходе отбора, не должны быть случайными.

Высокая различительная способность . Критерии, используемые при отборе, должны легко устанавливать различия между кандидатами (отделять подходящих от неподходящих).

Необходимость и достаточность критериев. Не следует усложнять процедуру поиска и отбора претендентов на заполнение той или иной вакансии, излишне сокращая число возможных кандидатов и включая в число критериев такие, которые не являются необходимыми или обязательными для прогноза успешной работы в должности. Например, если на должность секретаря искать красавицу, с высшим лингвистическим образованием (желательно МГУ), знанием двух языков, компьютера, делопроизводства, этикета, то поиск и отбор на основании таких критериев превращается в крайне сложную задачу. Важным условием для замещения имеющейся вакансии наилучшей кандидатурой является наличие достаточного числа претендентов, отвечающих минимальным требованиям должности. При этом число кандидатов на одно вакантное место может колебаться от нескольких человек до нескольких десятков.

«Иногда руководители перебарщивают – они хотят иметь непременно эксклюзивных сотрудников,  считает руководителя службы персонала ТД «Русьимпорт» И.Дудник.  Очень часто предполагаемую работу может выполнять нормальный человек со средним уровнем профессиональной подготовки. И стоит он дешевле на рынке, и найти его можно быстрее. Пример из моей практики: «Подберите мне секретаря в отдел. Обязателен совершенный английский язык, профессиональное знание компьютера. Стоимостью, условно говоря, 400 рублей». Я спрашиваю, а зачем вам секретарь с совершенным английским языком: Отвечают: «Нам там иногда факсы приходят раз в три месяца». Таких примеров очень много, когда требования к человеку не соотносятся с рыночными реалиями жизни».

Желание работодателя взять на работу человека с высшим образованием вполне понятно. Высшее образование гарантирует определенный культурный уровень претендента, и этот уровень важен не только для работников, непосредственно связанных с обслуживанием клиентов (например, в торговле или в гостиничном бизнесе). Дипломированный специалист легко осваивает навыки, необходимые для работы, и при найме его часто предпочитают менее образованному человеку, уже имеющему профильный опыт.

К примеру, в Торговом доме «На Смольной» на должность продавца-консультанта принято брать людей с высшим образованием. «Продавец должен уметь дать грамотную консультацию»,  говорит Надежда Арапова, психолог ТД «На Смольной». А вот опыт работы для соискателей здесь не обязателен. Человек, сдавший множество экзаменов за время учебы в вузе, лучше справляется с любыми возникающими проблемами, чем даже опытный продавец без образования.

Однако при установлении критериев отбора также не следует забывать о проблеме «переобученности» или «переобразованности» работников, которая возникает в случае, когда работник «слишком хорош», имеет слишком высокую квалификацию для данной работы, когда реальная работа требует меньше того, что умеет или может работник.

Не секрет, что зачастую люди с высшим образованием сами предлагают себя на неквалифицированную работу, если их высокая квалификация остается невостребованной. Но это не значит, что такое положение вещей их устраивает. Человек в этом случае редко бывает доволен, работа его не удовлетворяет, он делает ее недостаточно качественно. Начинаются обиды и претензии, не всегда обоснованные, что создает неблагоприятную атмосферу в коллективе. Следствием этого является достаточно быстрое снижение его удовлетворенности работой вплоть до увольнения работника еще до окончания периода адаптации.

В составе метаданных 1С:Предприятия 8 существует объект Критерий отбора.

Этот объект, в отличие от большинства прикладных объектов конфигурации, не описывает каких-либо самостоятельных данных, которые будут храниться в информационной базе 1С:Предприятия. Критерий отбора предназначен для того, чтобы описать условия отбора по некоторым объектам. Например, можно указать, что критерий отбора строится по типу данных СправочникСсылка.Номенклатура, и в этот критерий входят документы "ПоступлениеТоваровУслуг" и "РеализацияТоваровУслуг". Конечно, все отборы мы можем делать с помощью запроса.

Особенностью (преимуществом) критерия отбора является то, что он может строиться в том числе по реквизирам табличных частей. Таким образом мы можем очень просто настроить отбор так, чтобы в его результат попадали лишь те документы, в табличной части которых есть интересующий нас элемент справочника "Номенклатура".

Критерий отбора является прикладным объектом, для него, в частности, можно создать форму, которая будет отображаться в пользовательском режиме. Однако находится он в ветке "Общие" из-за того, что имеет узкоспециализированное назначение. Особенностью Критерия отбора является то, что он не входит в глобальный командный интерфейс.

Рассмотрим особенности критерия отбора на примере. Создадим новый критерий отбора "Документы с номенклатурой". Настроим закладки "Данные" и "Состав". На закладке "Данные" указывается тот тип данных, по которому будет осуществляться отбор. Причем тип данных может быть составным. Итак, выберем тип данных - СправочникСсылка.Номенклатура. На закладке состав мы выбираем объекты, которые будут являться результатом выполнения нашего отбора. Система предлагает нам отметить флажками интересующие нас объекты из списка, в который она включает все объекты, содержащие ссылку на справочник "Номенклатура". На закладке формы мы можем для критерия отбора указать ФормуСписка, которая будет содержать динамический список объектов, удовлетворяющих нашему критерию. Кроме того, на закладке Права мы можем настроить "Просмотр" для определенных ролей. Следует отметить, что в пользовательском интерфейсе существует возможность просмотра результата отбора, т.е. ФормыСписка критерия отбора. В нашем случае это будет форма справочника "Номенклатура", но, чтобы это работало, необходимо перейти в командный интерфейс ФормыЭлемента справочника "Номенклатура" и поставить флаг в колонке "Видимость" напротив "Документы с номенклатурой (Объект.Ссылка) .


Рассмотрим, как критерий отбора хранится в базе данных. Если мы в нашей Базе данных создадим запрос, то мы увидим таблицу, которая соответствует критерию отбора. Однако данная таблица является "виртуальной ". В процессе отладки мы можем вызвать метод ПолучитьСтруктуруХраненияБазыДанных() , и мы также не найдем таблиц, соответствующих критерию отбора. Таким образом, нет физической таблицы, соответствующей критерию отбора, но есть таблица виртуальная, к которой мы можем обратиться. Например, создав запрос и выгрузив результатЗапроса:

Запрос.Текст = "ВЫБРАТЬ | ДокументыСНоменклатурой.Ссылка |ИЗ | КритерийОтбора.ДокументыСНоменклатурой(&Номенклатура) КАК ДокументыСНоменклатурой"; Запрос.УстановитьПараметр("Номенклатура", Номенклатура); РезультатЗапроса = Запрос.Выполнить();

Мы получим документы, в которых содержится интересующая нас номенклатура.

Также следует отметить, что, несмотря на то, что при включении в конфигурацию критерия отбора система не создает никаких таблиц, однако для оптимизации поиска создается индекс по каждому реквизиту, который указан в составе критериев отбора. Индексы будут использоваться для оптимизации получения выборки при использовании критерия отбора. Таким образом, при описании критерия отбора нужно учитывать, что система будет тратить дополнительные ресурсы на поддержание необходимых индексов. Кстати, процесс "заполнения индекса поиска" можно увидеть, если мы просто переименуем созданный ранее критерий отбора. Сам процесс длится около минуты. А далее система выдает сообщение "Код модулей содержит возможные использования ссылки на изменяемый объект. Продолжить операцию переименования?" И если мы соглашаемся, то выдает нам ссылки на код, где встречаются упоминания нашего критерия отбора. Причем рядом с каждой ссылкой появляется команда "заменить", при нажатии на которую автоматически происходит замена старого наименования критерия отбора на новое.

Каким же образом система получает искомый результат? Дело в том, что она формирует запрос для поиска объектов, которые включают искомое значение, и формирует выборку, состоящую из найденных ссылок на объекты. Формируемый запрос представляет собой объединение запросов по каждой таблице, в которой нужно осуществить поиск. Запросы формируются только к тем данным (таблицам), из числа описанных в критерии отбора, у которых в реквизите может быть значение того типа, значение которого в данный момент ищется. Например, критерий отбора включает ссылки на справочник физических лиц и справочник организаций, а в конкретном реквизите конкретного документа может быть ссылка только на справочник физических лиц. Тогда запрос по этому документу будет выполняться, только если в данный момент поиск выполняется по физическому лицу. Важно учитывать, что критерий отбора всегда выбирает все искомые данные. Ни в списке, ни в других режимах не поддерживается динамическая выборка, так как информация выбирается путем объединения данных из разных таблиц. Формируемый для критерия отбора индекс позволяет сделать это достаточно быстро, но если данных в выборке окажется очень много, то выборка не будет формироваться эффективно. Поэтому целесообразно создавать критерии отбора по данным, имеющим большой разброс значений, чтобы выборки получались не очень большие. В противном случае теряется смысл такого отбора и снижается его эффективность.

Таким образом, критерий отбора является сервисной возможностью, предлагаемой разработчику конфигурации. Фактически он позволяет интерактивно описать условие выборки, автоматически создать необходимые индексы, автоматически сформировать сложный запрос, включающий обращение к большому количеству данных, и автоматически задействовать выборку по данному критерию в интерфейсе прикладного решения.

Поговорим о программной работе с критерием отбора. В синтакс-помощнике в ветке "Прикладные объекты" находится ветка "Критерии отбора". Мы видим, что количество типов данных здесь не очень большое. Во-первых, это менеджер критериев отбора - КритерииОтбораМенеджер (FilterCriteriaManager) . Это свойство глобального контекста, которое позволяет через точку обратиться к конкретному критерию отбора. Далее мы получаем КритерийОтбораМенеджер.<Имя критерия> (FilterCriterionManager.<Имя критерия>) , у которого есть два метода - Найти(<ЗначениеПоиска>) и ПолучитьФорму(<Форма>, <Владелец>, <КлючУникальности>) . И еще один тип данных - КритерийОтбораСписок.<Имя критерия> (FilterCriterionList.<Имя критерия>) . Он предназначен для управления списком отобранных документов и/или элементов справочников, отображаемых в табличном поле (списком критерия отбора). Как видим, методов для програмной работы не очень много, поэтому гораздо удобнее работать с критерием отбора при помощи запроса.
Рассмотрим на примере, как отобразить результат работы критерия отбора в форме. Для этого можно создать обработку.

Итак, создаем обработку и управляемую форму для неё. У формы будет два реквизита. Это "Номенклатура" - СправочникСсылка.Номенклатуры и "Список", тип которого - "ДинамическийСписок ". В свойствах реквизита "Список" заполним "ОсновнаяТаблица" значением - "КритерийОтбора.ДокументыСНоменклатурой". Перетаскиваем оба реквизита на форму. Кроме того, нам необходимо установить параметр "Значение" для нашего динамического списка. У динамического списка есть свойство "Параметры", тип значения которого: ЗначенияПараметровДанныхКомпоновкиДанных. У которого в свою очередь есть метод: УстановитьЗначениеПараметра(<Параметр>, <Значение>) . Итак, в модуле формы у нас будет следующий код:

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Список.Параметры.УстановитьЗначениеПараметра("Значение",Номенклатура); КонецПроцедуры &НаКлиенте Процедура НоменклатураПриИзменении(Элемент) Список.Параметры.УстановитьЗначениеПараметра("Значение",Номенклатура); КонецПроцедуры

Сохраняем обработку и запускаем в пользовательском режиме.

Рассмотрим еще один пример работы с критерием отбора. На этот раз поработаем с ФормойСписка критерия отбора. Дело в том, что интерактивно открыть её пользователь не может. Попробуем открыть её программным образом. В нашей обработке создадим команду "ОткрытьФ", перетащим её в форму нашей обработки, и создадим процедуру для нашей команды:

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Список.Параметры.УстановитьЗначениеПараметра("Значение",Номенклатура); КонецПроцедуры &НаКлиенте Процедура НоменклатураПриИзменении(Элемент) Список.Параметры.УстановитьЗначениеПараметра("Значение",Номенклатура); КонецПроцедуры &НаКлиенте Процедура ОткрытьФ(Команда) ОткрытьФорму("КритерийОтбора.ДокументыПоДоговоруКонтрагента.ФормаСписка"); КонецПроцедуры

Сохраняем нашу обработку, в пользовательском режиме нажимаем на кнопку "ОткрытьФ" , наша ФормаСписка открывается, но система при этом выдает ошибку. Дело в том, что система не может понять, по какому объекту ей нужно сделать отбор. Нам необходимо заполнить параметр Значение нашего динамического списка. В принципе, мы можем сделать это интерактивно. Для этого перейдем в ФормуСписка нашего критерия отбора, раскроем ветку "Список", найдем там "Параметры" и перетащим их на нашу ФормуСписка критерия отбора. Теперь в пользовательском режиме мы можем поставить флажок перед параметром "Значение" в истину, ну и, собственно, заполнить и сам параметр "Значение". Но лучше это сделать программно при открытии ФормыСписка критерия отбора. Программную установку мы будем делать в процедуре "ПриСозданииНаСервере() ". Если мы поставим точку останова в этой процедуре, то при отладке мы увидим: в параметрах нашего динамического списка есть коллекция "Элементы", и у элемента "Использование" стоит значение "Ложь". Чтобы установить его в истину, можно использовать следующий код, поскольку "Элементы" - это коллекция значений:

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Список.Параметры.Элементы.Использование = Истина; КонецПроцедуры

Мы можем также использовать обращение по имени параметра. Для этого мы можем использовать метод "Найти()" :

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Список.Параметры.Элементы.Найти("Значение").Использование = Истина; КонецПроцедуры

Также мы можем передать в ФормуСписка критерия отбора значение "Номенклатуры" из формы вызывающей, т.е. нашей обработки. Для этого передадим из формы нашей обработки значение "Номенклатура":

&НаКлиенте Процедура ОткрытьФ(Команда) ОткрытьФорму("КритерийОтбора.ДокументыСНоменклатурой.ФормаСписка", новый Структура("Номенклатура", Номенклатура); КонецПроцедуры

А в ФормеСписка критерия отбора воспользуемся переданным значением:

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Список.Параметры.Элементы.Найти("Значение").Использование = Истина; Список.Параметры.Элементы.Найти("Значение").Значение = Параметры.Номенклатура; КонецПроцедуры

Далее запускаем нашу обработку в пользовательском режиме, заполняем реквизит "Номенклатура" и нажимаем кнопку "ОткрытьФ". В результате откроется ФормаСписка критерия отбора с переданным значением "Номенклатуры" из формы вызывающей, а также сформируется результат отбора.

На этом заканчиваем, надеюсь, материал будет полезен для понимания сути объекта "Критерий отбора". Всем пока и удачи)

Печать (Ctrl+P)

Критерии отбора

Критерии отбора – одна из составляющих механизма отбора информации. С их помощью специалист, осуществляющий конфигурирование системы, создает предопределенные правила отбора. В режиме 1С:Предприятие по этим правилам будет выполняться отбор информации в списках.
В окне редактирования объекта Критерий отбора нужно указать имя, синоним и комментарий.
Тип критерия отбора может быть любым из стандартных типов или определенных как объекты дерева конфигурации. Допускается включение реквизитов с составным типом, заданным как СправочникСсылка , ДокументСсылка и т. д., а также реквизитов с составным типом, определенным планом видов характеристик (Характеристика…).
При создании типа критерия отбора следует указать те типы, по которым требуется производить отбор. На закладке Состав по этому типу будет сформирован состав объектов конфигурации, содержащих данные, тип которых входит в тип критерия отбора. В списке требуется установить отметку для тех реквизитов, по которым будет производиться данный отбор.
Чтобы критерий отбора выполнял свои функции, в конфигураторе для него должен быть создан список (закладка Состав), состоящий из реквизитов справочников и документов. На состав списка не накладывается практически никаких ограничений: например, в отличие от графы журнала, для критерия отбора можно выбрать несколько реквизитов одного документа и реквизитов табличной части документа.
Критериев отбора может быть произвольное число, а каждый критерий может иметь несколько форм представления результатов отбора. Этот механизм полезен в случае поиска различной информации. Например, требуется отобрать все документы, в которых используется (в реквизитах и табличных частях) определенный контрагент. При этом можно учитывать и другие условия отбора информации (например, поиск ведется только среди проведенных документов или в определенном интервале дат и т. д.).
ПРИМЕЧАНИЕ. При открытии формы отбора следует передавать в нее параметр Отбор с установленным значением отбора (элемент Значение).
Критерий отбора может иметь произвольное число форм для визуального представления результатов отбора. Для оперативности получения информации по отбору вызов формы можно разместить в пользовательском меню или на панели инструментов.
Если форм критерия отбора несколько, то в свойстве Основная форма указывается та форма, которая будет вызываться по умолчанию.
Если в конфигурации определено несколько подсистем, нужно выбрать ту, к которой относится данный критерий отбора. Можно указать несколько различных подсистем.
Для вызова формы критерия отбора система размещает соответствующую команду в панели навигации формы.

При создании запроса можно задать критерии, вследствие чего по запросу будет осуществлен отбор только нужных записей.

Чтобы найти записи с конкретным значением в каком либо поле, нужно ввести это значение в данное поле в строке бланка QBE Условие отбора .

Критерии, устанавливаемые в QBE – области, должны быть заключены в кавычки. Если ACCESS 97 идентифицирует введенные символы как критерии отбора, то заключает их в кавычки автоматически, а если нет, то сообщает о синтаксической ошибке.

Например, как показано на рис.17, построен запрос, по которому из данных по баллам будут выбраны фамилии и имена студентов с оценками только 4 и 5.

Виды критериев

Для создания запроса с несколькими критериями пользуются различными операторами.

Логическая операция или

Можно задать несколько условий отбора, соединенных логическим оператором или (or ), для некоторого поля одним из двух способов:

1) можно ввести все условия в одну ячейку строки Условие отбора, соединив их логическим операторомили (or ). В этом случае будут выбраны данные, удовлетворяющие хотя бы одному из условий.

Например, запись

4 or 5

соответствует тому, что будут выбраны фамилии с оценками 4 или 5.

2) ввести второе условие в отдельную ячейку строки или. И если используется несколько строк или , то чтобы запись была выбрана, достаточно выполнения условий хотя бы в одной из строк или , как, например, показано на рис.18.

Рис 18 . Пример записи условия с использованием оператора или (or ).

При такой записи условия также будут выбраны фамилии с оценками 4 или 5.

Логическая операция и

Логическая операцияи (and ) используется в том случае, когда должны быть выполнены оба условия и только в этом случае запись будет выбрана.

Например, записав условие

>2 and <5

будут выбраны только оценки 3 и 4.

Чтобы объединить несколько условий отбора оператором и ( and ) , следует привести их в одной строке.

Например, на рис. 19 показано как можно задать условие для выбора фамилий студентов, проживающих в городе Уфе, которые учатся только на 5.

Рис 19 . Пример записи условия с использованием оператора и (and ).

Исключить группу данных из состава анализируемых запросом записей позволяет следующий критерий

< > 4

В этом случае можно не использовать кавычки.

Операторы и и или применяются как отдельно, так и в комбинации. Следует помнить, что условия связанные оператором и выполняются раньше условий, объединенных оператором или .

Оператор Between

Оператор B etween позволяет задать диапазон значений, например:

between 10 and 20

Оператор I n позволяет задавать используемый для сравнения список значений. Например:

in (“первый”,”второй”,”третий”)

Оператор L ike

Оператор L ike полезен для поиска образцов в текстовых полях, причем можно использовать шаблоны:

* - обозначает любое количество (включая нулевой) символов;

Любой одиночный символ;

# - указывает что в данной позиции должна быть цифра.

Например: для выбора фамилии, начинающейся с буквы П и с окончанием “ов” можно записать

like П*ов

Операторы для даты и времени

Можно ввести дату и время, при этом значения должны быть заключены между символами #. Например:

>#31.12.96#

В Access используется ряд других функций, которые помогут задать условия отбора для даты и времени, например:

Day (дата) – возвращает значение дня месяца в диапазоне от 1 до 31

Month (дата) – возвращает значение месяца года в диапазоне от 1 до 12

Year (дата) – возвращает значение года в диапазоне от 100 до 9999

3.4.Сортировка данных в запросе

Данные можно упорядочить по возрастанию или убыванию.

Для упорядочения отобранных записей целесообразно воспользоваться возможностями сортировки самого запроса в строке Сортировка окна конструктора запроса.

3.5. Вычисляемые поля

Можно задать вычисления над любыми полями таблицы и сделать вычисляемое значение новым полем в запросе.

Для этого в строке Поле бланка QBE вводится формула для вычисления, причем имена полей заключаются в квадратные скобки.

Например: =[ Оклад]*0.15

В выражениях можно использовать следующие операторы:

Арифметические: * умножение; + сложение; - вычитание; / деление; ^ возведение в степень;

Соединение частей текста при помощи знака & , например:

=[ Фамилия] & “ “&[Имя]

В кавычки заключен пробел для того, чтобы запись не была слитной.

Список - неотъемлемый атрибут отображения информации в любой конфигурации, созданной на платформе "1С:Предприятие 8.1". Для эффективной работы со списками, содержащими разнообразные данные, в программах на платформе "1С:Предприятие 8.1" реализованы удобные и мощные механизмы отбора и сортировки. Об особенностях их использования рассказывает В.В. Рыбалка, фирма "1С".


Рис. 1

Списки

С какими списками сталкиваются пользователи? Это могут быть списки документов в соответствующих журналах. Практически любой справочник, заполненный данными, представляется в виде списка, в котором, как правило, есть иерархия (группы-папки или подчиненные элементы). Нередко для выбора какого-либо элемента программа формирует списки автоматически или подчиняясь заложенной разработчиками логике.

Практически во всех списках можно использовать механизмы отбора (если это явно не запрещено разработчиком) и разнообразной сортировки (рис. 1). В программе эти механизмы неразрывно связаны друг с другом. Рассмотрим, как их использовать правильно и эффективно.

Рис. 1

Механизм сортировки

Для чего нужен механизм сортировки? Во-первых, он, как следует из названия, позволяет отсортировать список по нужному критерию.

Во-вторых, в платформе "1С:Предприятие 8.1" активно используется механизм быстрого поиска. Этот механизм позволяет быстро найти в каком-либо списке нужный элемент, набрав первые символы (рис. 2). Но в динамических списках (например, список элементов справочника или список документов) быстрый поиск работает только по реквизитам, по которым доступна сортировка.

Рис. 2

Посмотреть все доступные для сортировки реквизиты списка можно, открыв окно "Отбор и сортировка". Это окно, как правило, доступно на панели действий (рис. 3) либо в контекстном меню списка, открывающемся правой кнопкой мыши (рис. 4). В окне "Отбор и сортировка" нужно перейти на закладку "Сортировка", где показаны все доступные реквизиты, по которым возможна сортировка.

Рис. 3

Рис. 4

На рисунке 3 видно, что для списка документов "Реализации товаров и услуг" доступна сортировка по двум реквизитам: "Дата" и "Номер". Однако информативность окна сортировок этим не ограничивается. Здесь можно посмотреть, какая сортировка включена в данный момент (левая часть окна) и список всех доступных для сортировки реквизитов (правая часть). Тут же можно настроить нужную сортировку и ее порядок. Обратите внимание: текущий реквизит сортировки будет помечен в списке специальным символом - стрелочкой, обозначающей направление сортировки. Три примера различной сортировки (в т. ч. комбинированной) и способы ее отображения в списке показаны на рисунке 5.

Рис. 5

Заметим, что нижний пример иллюстрирует возможность использования комбинированной сортировки (одновременно по нескольким реквизитам). В нашем случае, это сортировка по дате по убыванию (самые старые даты внизу) и по номерам по возрастанию (самые большие номера внизу).

В каждом списке можно индивидуально сохранить нужную сортировку. Достаточно включить галочку "Использовать эту настройку сортировки при открытии" и нажать "ОК". Система запомнит настройку и при следующем открытии этого списка установит сохраненную сортировку.

Быстро отсортировать список по нужному реквизиту можно, щелкнув мышкой по шапке с названием этого реквизита.

Например, в нашем случае, можно щелкнуть по реквизиту "Дата" (включится сортировка дат по возрастанию, и можно будет использовать быстрый поиск по дате) или по реквизиту "Номер" (будет переключена сортировка по номерам по возрастанию, после чего можно быстро искать по номеру). Инвертировать сортировку тоже просто - достаточно повторно щелкнуть по тому же реквизиту в шапке списка.

Механизм отбора

Отбор - мощный механизм платформы "1С:Предприятие 8.1", который позволяет эффективно работать со списками, даже если в них содержится не один десяток или сотня тысяч элементов. Для начала рассмотрим работу механизма отбора в общем случае.

Практически везде, где есть список (как правило, в виде таблицы), можно использовать механизм отбора, который активируется либо соответствующей кнопкой на панели действий, либо в контекстно-зависимом меню списка (рис. 3 и 4). Если отбор у нужного списка возможен, откроется окно "Отбор и сортировка". В нем будут отображены все возможные виды доступных для отбора реквизитов. Список доступных элементов отбора зависит от того, где этот отбор будет использован. В общем случае нужно найти один или несколько необходимых элементов для отбора, указать значения и активировать настроенную комбинацию критериев.

Список возможных условий для того или иного вида отбора зависит от типа элементов, используемых в нем. Например, для чисел и дат будет доступно указание диапазонов, для строк - поиск подстроки (условия "Содержит"/"Не содержит"), а для элементов справочников - заполнение списков и анализ иерархии.

Если указать одновременно несколько критериев отбора, в списке будут отображены только такие элементы, которые удовлетворяют всем указанным критериям.

Механизмы отбора и сортировки на примерах

Попробуем решить несколько задач в демонстрационной базе ("Бухгалтерия предприятия", редакция 1.6). Например, отобразим документы, сформированные для контрагента "Саймон и Шустер ООО" в журнале "Документы покупателей". Сразу оговоримся, что описывать будем стандартные для платформы "1С:Предприятие 8.1" правила и логику ведения отбора, без привязки к какой-либо конкретной конфигурации и дополнительным сервисным возможностям, в ней реализованным.

Итак, открываем журнал документов "Документы покупателей". В стандартном состоянии без включенного отбора на экран выводятся все документы всех покупателей (даже в демонстрационной базе это занимает не одну страницу).

Нам нужно быстро посмотреть все документы контрагента "Саймон и Шустер ООО". Реализуется задача следующим образом - открывается окно отбора, в элементе "Контрагент" выбирается контрагент "Саймон и Шустер ООО" из справочника (рис. 6) и нажимается "ОК". Задача решена (рис. 7).

Рис. 6

Рис. 7

Для быстрого использования нужного отбора достаточно сразу приступать к выбору нужного критерия. Ставить галочку напротив используемого отбора не нужно. Программа сделает это сама после того, как будет указан необходимый критерий. Быстро применить настроенные критерии отбора можно, нажав комбинацию клавиш Ctrl+Enter*.

Обратите внимание еще и на то, что при указании значений в элементах отбора (в нашем примере - контрагент "Саймон и Шустер ООО"), в большинстве случаев будет работать механизм быстрого подбора, широко распространенный в платформе "1С:Предприятие 8.1". В нашем примере достаточно было набрать первые символы названия контрагента или его код прямо в поле значения отбора, нажать Enter или Tab и система автоматически бы "угадала" нужный нам элемент справочника.

Имейте в виду - быстрый подбор существенно ускоряет выбор известных вам значений. Используйте его, где это возможно.

Теперь отобразим список номенклатуры, в наименованиях которых содержится слово "Чайник". Для этого открываем справочник "Номенклатура", вызываем окно отбора, в элементе "Наименование" выбираем условие сравнения "Содержит" и указываем требуемое слово (рис. 8).

Рис. 8

Вид сравнения "Содержит" выбран не случайно. Именно он позволяет найти нужное слово (или его часть) в любом месте наименования номенклатуры. Если оставить вид сравнения "Равно", в списке будут отображены только такие элементы номенклатуры, которые называются точно так, как написан запрос. А таких в нашей демобазе нет (то есть не было бы отображено ни одного элемента).

Так как в нашей демобазе у номенклатуры есть реквизит "Полное наименование", оно присутствует в списке доступных отборов отдельной позицией. Но при этом в качестве условий сравнения доступно только "Содержит"/"Не содержит". Причина в том, что реквизит "Полное наименование" в нашей демобазе - строка неограниченной длины.

Если искать не по наименованию, а по полному наименованию, галочку использования отбора по наименованию лучше снять. Иначе отбор будет использован и по наименованию, и по полному наименованию, что не всегда может оказаться необходимым (рис. 9).

Рис. 9

Для удобства работы с элементами справочника при использовании отборов лучше на время отключать отображение иерархии (рис. 10).

Рис. 10

В качестве третьей задачи просмотрим в журнале документов "Документы покупателей" только документы "Реализация товаров и услуг". Решение этой задачи продемонстрирует особенность одного из видов отбора, доступного только в журналах документов.

Открываем журнал "Документы покупателей" и указываем в элементе отбора "Вид документа" документ "Реализация товаров и услуг". Программа сама предоставляет возможность выбора определенного вида документа из тех, которые включены в данный журнал. Для этого есть и персональная кнопочка на панели действий (рис. 11).

Рис. 11

Аналогично отбору по виду документов платформа автоматически предложит элемент отбора "Структура подчиненности", если в конфигурации настроены взаимосвязи между документами.

Попробуем просмотреть в журнале документов "Документы покупателей" только документы "Счет-фактура" для контрагентов, находящихся в группе "Покупатели" справочника. Эта задача похожа на первую с тем лишь отличием, что мы не указываем конкретного контрагента, а анализируем счета-фактуры целой группы контрагентов, которые находятся в группе "Покупатели".

У задачи существует несколько способов реализации. Рассмотрим наиболее эффективный. Открываем журнал "Документы покупателей", указываем в элементе отбора "Вид документа" документ "Счет-фактура выданный". После этого в элементе отбора "Контрагент" указываем вид сравнения "В группе". Выбираем тип значения "Контрагенты" и открываем форму выбора контрагентов. В ней выбираем группу "Покупатели" (рис. 12).

Рис. 12

Такой вид сравнения подразумевает, что условию будут удовлетворять все элементы справочника, которые находятся в указанной группе. Причем даже если внутри указанной группы есть подгруппы, все вложенные туда элементы тоже будут удовлетворять такому критерию.

А теперь усложним задачу: просмотрим в журнале документов "Документы покупателей" только документы "Счет-фактура", но при этом нужно просмотреть документы и для покупателей, и для поставщиков. Решаем ее аналогично предыдущей, за исключением одного накладываемого критерия отбора.

Человеческим языком задача формулируется так: "отобразить все нужные документы по всем контрагентам, находящимся в группах справочника Покупатели, Поставщики, Поставщики на реализацию". Реализуется это просто - в условии отбора "Контрагент" выбираем "В группе из списка" (рис. 13). После этого становится доступным механизм заполнения списка, в который можно добавить нужные группы (или элементы) справочника. Причем список можно заполнить вручную. По аналогии с решением предыдущей задачи, найти нужную группу и выбрать ее, повторив это для каждого нового элемента списка. Однако целесообразнее воспользоваться удобным механизмом подбора, который автоматически реализуется программой. С помощью подбора намного проще и быстрее заполнить список нужными составляющими. После того, как список заполнен, нажимаем "ОК" и активируем настроенные критерии отбора. Задача решена.

Рис. 13

Отличие условия отбора "В группе из списка" от условия "В списке" заключается в том, что в первом случае условие выполнится для всех элементов справочника, которые либо явно указаны в списке, либо находятся внутри указанных в списке групп. Второй же случай просто указывает программе сверяться со списком при отборе. То есть если вы укажете там группу, то в отбор попадет сама группа (как самостоятельный элемент справочника), а элементы, которые в нее входят, критерию отбора удовлетворять не будут. Решать задачу можно было и "в лоб" - выбрать условие "В списке" и при помощи подбора добавить туда все элементы, содержащиеся в необходимых группах.

Условия отбора "Не в списке" и "Не в группе из списка" позволяют указать нужные наборы данных, которые в отбор попадать не должны. То есть решать задачу можно было бы и от обратного - указать "Не в группе из списка" и добавить туда все группы справочника, кроме трех необходимых (Покупатели, Поставщики, Поставщики на реализацию).

И, наконец, отобразим в документе "Реализация товаров и услуг" с номером ТДН00002 в табличной части только номенклатуру, содержащую в наименованиях слово "СТИНОЛ". Эта задача, позволит увидеть универсальность самого механизма отбора, а также насколько разнообразно может быть его использование. Задача основана на реальных ситуациях, когда, например, в табличной части накладной несколько сотен (а то и тысяч) строк и надо быстро проанализировать ее состав. В нашей демобазе есть документ "Реализация товаров и услуг" с номером ТДН00002, у которого в табличной части есть несколько строк. Несмотря на то что в документе кнопок использования отборов не наблюдается, вызов отбора доступен через контекстное меню (правая кнопка мыши).

Далее накладываем критерии отбора в разрезе Номенклатуры. Тут же возникает другой вопрос - как отобрать "СТИНОЛ", если условия выбора номенклатуры довольно сильно ограничены (доступно "Равно", "Не равно", "В списке" и "Не в списке"). Решить задачу можно и при таких условиях. Выбираем условие "В списке", открываем уже знакомое окно заполнения списка, используем подбор номенклатуры (рис. 14, 1). В списке номенклатуры может быть большое количество элементов, поэтому не будем искать глазами нужные позиции. Воспользуемся отбором в списке номенклатуры, указав условие отбора "Содержит" для наименования номенклатуры (рис. 14, 2).

Рис. 14

После этого остается только добавить отобранные позиции в список отбора для документа и применить критерии отбора.

Полезные функции механизма отбора

Рассмотрим еще несколько моментов, связанных так или иначе с отборами в системе "1С:Предприятие 8.1".

В списках объектов конфигурации, где используется привязка к датам (например, списки документов), и в журналах документов можно использовать быстрый отбор по диапазону дат. Для этого достаточно нажать соответствующую кнопку "Настройка периода" на панели действий (или выбрать в контекстном меню) (рис. 15). Таким способом можно в каждом списке индивидуально регулировать критерий отображения элементов по датам.

Рис. 15

Быстро установить отбор по значению в текущей ячейке списка можно, нажав на кнопку "Отбор по значению в текущей колонке" (рис. 16). При нажатии на эту кнопку будет установлен отбор по текущему значению в колонке. Эта функция работает только для тех колонок, по реквизитам которых можно устанавливать отборы. Если в списке уже используется какой-либо отбор, новый будет присоединен к нему. Причем кнопка становится активной для данной колонки. Отменить такой отбор можно аналогично - "отжав" кнопку в соответствующей колонке.

Рис. 16

Еще одно полезное свойство механизма отборов - ведение истории отборов (рис. 17). Программа запоминает, какие отборы были установлены, поэтому можно быстро вернуться к какому-либо из них, просто выбрав его из выпадающего списка. К слову, в окне "Отбор и сортировка" обратите внимание на кнопку "Отборы" (рис. 6). Нажав на эту кнопку, вы попадете в интерфейс, в котором можно сохранять и восстанавливать настройки отборов, чтобы в последствие можно было к ним вернуться (рис. 18).

Рис. 17

Рис. 18

И последняя функция - это отмена всех отборов (рис. 19). Нажатием кнопки "Отключить отбор" отключаются все отборы, установленные в списке. Аналогичного действия можно добиться, открыв окно "Отбор и сортировка" и сняв галочки напротив всех активных элементов.

Рис. 19

В программе также есть возможность быстрого поиска по номеру документа в списках документов или в журналах. Вызывается эта возможность кнопкой "Поиск по номеру" (рис. 20) и позволяет найти нужный документ, гибко настроив параметры поиска. Найденные документы по указанным критериям отображаются в нижней части окна этого сервиса, и можно перейти к нужному документу.