Что означает в 1с вид сравнения
Выпуск №4.Настройки отбора и управление формой списка в 1С 8.х
Настройки отбора и управление формой списка в 1С 8.х
В восьмой версии 1С появились более «стройные» возможности работы с динамическими списками, нежели в версии 7.7.
Под динамическими списками следует понимать формы списков справочников, документов, регистров. Всех тех объектов, которые показываются на экране по мере пролистывания. Формы списка, как мы знаем из предыдущей статьи, имеют стандартные командные панели со стандартным набором кнопок управления.
К отборам относятся следующие кнопки:
И для более младших версий 8.х:
Открывая любую стандартную панель управления формой списка, мы можем найти на панели стандартные кнопки управления отбором. Для 8.1 и 8.2 они немного отличаются внешне, но они похожи на «воронки»-фильтры.
Кроме кнопок отбора, в версии 8.х появилась важная функция, которой так не хватало в версии 7.7: возможность вывести на экран, распечатать или сохранить на диск все элементы списка в виде таблицы. Для этого уже не нужно просить программиста нарисовать отчет.
Итак, что же такое отбор и зачем он?
Представьте себе классическую таблицу:
В ней может быть любое число строк и колонок. По сути, список элементов справочника, или список документов являются такой же таблицей.
Часто возникает необходимость выбрать из общей кучи и отобразить несколько строк с нужным значением колонок:
Или наоборот, выкинуть из списка «мешающие» элементы:
Вот тут то и приходят на помощь инструменты отбора. В 1С вы можете столкнуться с отбором во множестве разных вариаций. Но принцип будет везде одинаков : отобрать строки с нужными значениями в одном или нескольких столбцах. Или убрать строки с ненужными значениями в колонках.
Она открывает основную форму отбора для выбранной формы списка
Пример формы отбора справочника основных средств
Строка содержит название колонки с отметкой, вид сравнения и значение для отбора.
Вид сравнения
Кроме простого «колонка равно значение» зачастую требуются более гибкие виды сравнения.
К любому виду сравнения «равно» есть аналогичный вид сравнения «не равно». Это означает, что при выборе такого вида сравнения в списке будут все строки, кроме тех, в колонках которых содержатся указанные в значении отбора величины. Полный список видов сравнения:
Ряду вышеперечисленных видов соответствуют противоположные по смыслу:
Настройка внешнего вида списков, их сохранение и вывод на печать.
У всех стандартных форм списков есть кнопки управления колонками и печатью. Настройка колонок вызывается из меню «действия», по щелчку правой кнопкой на форме списка. Иногда эта кнопка вынесена на командную панель.
По ее нажатии открывается форма настройки:
Когда вы получили нужный вид списка, вы можете распечатать его или сохранить на диске.
сохранения. Например сохранить в формате Microsoft Excel *.xls, или *.xlsx. Учтите, что списки большого объема могут очень долго сохраняться в «неродном» для 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С:Бухгалтерия 8» (ред. 3.0). Как выполнить отбор значений в списке по виду сравнения «Не содержит» (+ видео)?
Видеоролик выполнен в программе «1С:Бухгалтерия 8» релиз 3.0.43.173.
Настройка отображения данных, сортировки строк списка, а также группировки списка в таблице и оформления списка выполняется в диалоге Настройка списка. Диалог открывается командой Еще – Настроить список....
В диалоге предоставляется возможность настроить:
Все настройки распределены на закладках: Основные, Отбор, Сортировка, Условное оформление и Группировка.
Установка отбора в списке
Отбор позволяет просматривать только те данные, которые удовлетворяют всем заданным условиям. Чтобы установить отбор в списке, следует в диалоге Настройка списка перейти на закладку Отбор и добавить элементы отбора.
Для добавления настройки элемента отбора следует в списке доступных полей указать поле и выполнить команду Выбрать. Поле добавляется в список элементов настройки. В левой колонке для него будет установлен флаг использования. Также можно выполнить команду Добавить новый элемент или просто перетащить поле из списка Доступные поля. В колонке Вид сравнения нужно выбрать требуемый вид сравнения из списка и указать значение в одноименной колонке.
Если отбор нужно выполнить по нескольким условиям, то в список элементов настройки нужно добавить другие поля со своими условиями.
Условия можно сгруппировать, объединив их логическими операторами (Группа И, Группа Или, Группа Не). Для этого используется кнопка Сгруппировать.
При необходимости можно изменить порядок, в котором условия будут применяться к списку. Для этого достаточно выделить элемент и перетащить его в нужное место.
Для отмены настройки ее следует удалить или снять флаг использования.
Например, для того чтобы в списке выставленных покупателям счетов отобрать документы, комментарии к которым не содержат слово «молоко», нужно выполнить следующие действия:
Чтобы применить настройку отбора в списке, следует нажать кнопку Завершить редактирование.
Сортировка, группировка и условное оформление списка
Чтобы установить сортировку в списке, следует перейти на закладку Сортировка. Для добавления элемента сортировки следует нажать Добавить новый элемент порядка (или перетащить поле из списка Доступные поля и выбрать Направление сортировки (По возрастанию/По убыванию). Если полей сортировки несколько, то в списке данные будут отсортированы вначале по первому полю, потом по второму и т. д. Последовательность элементов сортировки полей можно поменять, выделив строки и перетащив их в нужное место.
Чтобы применить настройку сортировки в списке, нажать кнопку Завершить редактирование.
Чтобы сгруппировать записи в списке, следует в диалоге настройки перейти на закладку Группировка и добавить поле, по которому необходимо провести группировку. Если было выбрано несколько полей, то записи в списке будут последовательно сгруппированы в порядке, установленном для полей группировки.
Чтобы применить настройку группировки, следует нажать кнопку Завершить редактирование.
Для настройки условного оформления следует в диалоге настройки перейти на закладку Условное оформление и в табличном поле добавить необходимые элементы.
Редактирование элемента условного оформления выполняется в отдельном окне:
Чтобы применить настройку условного оформления, следует нажать кнопку OK.
Настройки динамического списка сохраняются автоматически при закрытии формы и автоматически загружаются при открытии формы в новом сеансе работы.
Чтобы сохранить установленный набор настроек в форме списка, нужно выбрать команду Еще – Сохранить настройки…. В открывшемся диалоге ввести название настройки и нажать кнопку Сохранить.
Вернуть настройки списка по умолчанию можно командой Еще – Установить стандартные настройки.
Логические операции в 1С
Логическая операция позволяет сравнить два значения. Результатом будет значение типа Булево: Истина или Ложь.
Операции сравнения
Сравнивает два операнда на равенство. Если равны, то вернет Истина, если не равны вернет Ложь.
Сравнивает два операнда. Если не равны, то вернет Истина, если равны вернет Ложь.
Если первый операнд больше второго, то вернет Истина, иначе Ложь.
Если первый операнд больше или равен второму, то вернет Истина, иначе Ложь.
На равенство, не равенство можно сравнивать любые типы данных. На больше, меньше можно сравнивать дату с датой, строку со строкой, число с числом и число с булево. При сравнении числа с булево сначала булево приводится к числу, а потом выполняется сравнение.
Все логические операции имеют одинаковый приоритет.
Булевы операции
Булевы операции выполняются над значениями типа Булево. Можно объединять несколько операций сравнения.
Логическое умножение, конъюнкция. Вернет Истина, если оба операнда равны Истина.
Логическое сложение, дизъюнкция. Вернет Истина, если хотя бы один операнд равен Истина.
Логическое отрицание. Вернет Истина, если операнд равен Ложь. Вернет Ложь, если операнд равен Истина.
Выполняются только необходимые части выражения.
Например, в выражении в = а = 1 И б = 1, если а не равно 1, то сравнение б не имеет смысла, так как первый операнд уже не равен Истина.
В выражении в = а = 1 ИЛИ б = 1, если а равно 1, то сравнение б не имеет смысла, так первый операнд уже равен Истина.
Приоритеты вычисления выражений в 1С
В порядке понижения приоритета. Операторы с одинаковым приоритетом выполняются слева направо:
., () | Разыменование, вызов метода и т. п. |
-,+ | Унарные плюс и минус |
*, /, % | Умножение, деление, остаток от деления |
+, — | Сложение, вычитание |
=, >, <> | Сравнение |
Not/Не | Логическое отрицание |
And/И | Логическое умножение |
Or/Или | Логическое сложение |
В примере булевых операций с ИЛИ ошибка
хочу уточнить, все таки есть ли приоритет в булевских операциях или нет в 1С, везде пишут что есть, но по факту его не наблюдаю.
Согласно и вашей же таблице приоритет отдается НЕ — далее И — и последним выполняется ИЛИ. Так?
Но если ввести в отладчике или в коде такую конструкцию:
Ложь ИЛИ Ложь И НЕ 1/0 — ошибки на деление не будет, т.к. проверка
просто не дойдет до деления, т.к. булевские операции на практике
получается НЕ ИМЕЮТ ПРИОРИТЕТА а идут ПО ПОРЯДКУ. Результат будет = ложь.
А в теории сначала должно было выполнится НЕ 1/0 и возникнуть ошибка…но этого не происходит 100%.
Либо еще пример
Истина ИЛИ Истина И НЕ 1/0, результат опять же без ошибок и равен Истина, тк дальше операнда ИЛИ проверка не идет. Приоритет не учелся, просто по порядку.
Поясните, очень нужно разобраться. Спасибо
Выполняются только необходимые части выражения.
1. Ложь ИЛИ Ложь И НЕ 1/0
Здесь выражение Ложь ИЛИ Ложь возвращает Ложь. Дальше идет И. Если хотя бы одна из частей выражения с И возвращает Ложь, то остальные части не имеет смысла выполнять, все равно все выражение будет равно Ложь.
2. Истина ИЛИ Истина И НЕ 1/0
Здесь первая же часть выражения возвращает Истина, соответственно остальную часть можно не выполнять, так как для ИЛИ достаточно чтобы хотя бы одна часть была истинной, чтобы все выражение тоже было истинным.
3. Выполните такой пример:
а = Истина;
б = Истина;
в = Ложь;
г = а ИЛИ б И в;
г будет равно Истина. Если бы приоритет не учитывался, то г было равно Ложь.
Создание отбора
Создать поле выбора для выбора вида сравнения
Создать поле ввода, тип значения которого менять при изменении вида сравнения
Перед открытием формы заполнить поля выбора вида сравнения
Добавить обработчик ПриИзменении для полей выбора
Перед формированием отчета добавить условие в запрос в соответствии с заданными настройками
В общем случае как-то так.. В СКД проще 🙂
(1) Антон, Вот как можно сделать, хоть тут и используется построитель, но отчет далее можно делать и не на нем:
Создать поле выбора для выбора вида сравнения
Создать поле ввода, тип значения которого менять при изменении вида сравнения
Перед открытием формы заполнить поля выбора вида сравнения
Добавить обработчик ПриИзменении для полей выбора
Перед формированием отчета добавить условие в запрос в соответствии с заданными настройками
В общем случае как-то так.. В СКД проще 🙂
ГДЕ
| ВЫБОР
| КОГДА &СотрудникЗаполнен = ИСТИНА
| ТОГДА Заказ.Сотрудник = &Сотрудник
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| И ВЫБОР
| КОГДА &КонтрагентЗаполнен = ИСТИНА
| ТОГДА Заказ.Контрагент = &Контрагент
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| И ВЫБОР
| КОГДА &ФилиалЗаполнен = ИСТИНА
| ТОГДА Заказ.Филиал = &Филиал
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| И Заказ.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНачала, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаОкончания, ДЕНЬ)
| И Заказ.Проведен = ИСТИНА
а это код для отбора
Отбор = ВнешнийОтчетОбъект.ОтборОбщий;
ДоступныеПоляОтбора = Отбор.ПолучитьДоступныеПоля();
Поле = ДоступныеПоляОтбора.Добавить(«Контрагент», «Контрагент»,
Новый ОписаниеТипов(«СправочникСсылка.Контрагенты»));
Поле.Отбор = Истина;
Поле = ДоступныеПоляОтбора.Добавить(«Филиал», «Филиал»,
Новый ОписаниеТипов(«СправочникСсылка.Филиалы»));
Поле.Отбор = Истина;
Поле = ДоступныеПоляОтбора.Добавить(«Сотрудник», «Сотрудник»,
Новый ОписаниеТипов(«СправочникСсылка.Сотрудники»));
Поле.Отбор = Истина;