Андроид. Windows. Антивирусы. Гаджеты. Железо. Игры. Интернет. Операционные системы. Программы.

Проверка значения на null 1с. Значения null (есть null и естьnull()). Использование операции выбор

Каждой организации для принятия своевременных и правильных управленческих решений необходима оперативная информация о наличии товара на складах, о его себестоимости, о продажах. Торговые организации работают с большим числом номенклатуры и контрагентов, а это требует хорошей настройки аналитического учета и быстрого получения требуемой информации по его данным. М.С. Паськова (эксперт компании «Лаэрта») рассматривает основные приемы работы со стандартными отчетами в типовом решении «1С:Управление торговлей 8» (ред. 11), построенными на основе системы компоновки данных и дает полезные практические рекомендации, которые пригодятся и начинающим пользователям, и тем, кто перешел на нее с предыдущих редакций.

По мере развития платформы «1С:Предприятие 8» и появления новой версии 8.2, отчеты в системах становятся все гибче, и пользователи имеют все больше возможностей настраивать их под свои требования, не прибегая к помощи программистов «1С». Новые возможности, предоставляемые системой компоновки данных (СКД), как никогда ранее позволяют ощутить преимущества новых возможностей при построении отчетов. И, несмотря на то, что интерфейс отчетов претерпел значительные изменения (по сравнению с редакцией 10.3 конфигурации «Управление торговлей», далее - УТ), настройки отчетов по-прежнему доступны рядовому пользователю. Рассмотрим некоторые основные приемы работы с ними.

«Быстрые отборы»

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

Например, возьмем отчет Анализ доступности товаров в УТ. Сразу отметим, что вся демонстрация возможностей отчетов в УТ 11 будет проходить на примере двух отчетов:

Отбор по некоторым полям можно сделать как непосредственно в форме отчета, так и по кнопке Настройка (рис. 1).


Рис. 1. Быстрый отбор

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

  • Равно - отчет будет строиться только по выбранной номенклатурной позиции;

  • Не равно - отчет будет строиться по всей номенклатуре, кроме выбранной позиции;

  • В списке - отчет будет строиться по списку номенклатурных позиций;

  • Не в списке - отчет будет строиться по всей номенклатуре, кроме выбранных позиций;

  • В группе - отчет будет строиться по всей номенклатуре, находящейся в выбранной папке справочника Номенклатура;

  • Не в группе - отчет будет строиться по всей номенклатуре, кроме позиций, находящихся в выбранной папке справочника Номенклатура;

  • В группе из списка - аналогичен сравнению В списке, только в качестве значений списка выбираются папки в справочнике Номенклатура;

  • Не в группе из списка - аналогичен сравнению Не в списке, только в качестве значений списка выбираются папки в справочнике Номенклатура.

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

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

Пример простого изменения настроек отчета

Для просмотра/изменения настроек отчета необходимо зайти в меню Все действия/Изменить вариант.


Рисунок 2. Изменение настроек отчета

Перед нами открывается окно настроек для выбранного варианта отчета (рис. 3).


Рисунок 3. Окно настроек

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

В нижней части окна выводятся относящиеся к отчету в целом (в случае если в структуре отчета выделен верхний уровень Отчет ), либо к определенной группировке строк или колонок отчета (если выделена группировка Склад или Номенклатура , Характеристика ) настройки вывода информации и оформления полей.

Пример 1. В отчете Анализ доступности товаров уберем группировку по характеристикам номенклатуры и добавим новую группировку по ценовой группе (поле Номенклатура. Ценовая группа ).

Шаг 1. Нам необходимо убрать группировку по характеристике номенклатуры, оставив только группировку по номенклатуре. Для этого в верхней части окна настроек отчета щелкнем мышкой по полю Номенклатура, Характеристика . В нижней части окна перейдем на вкладку Группировки (рис. 4)


Рисунок 4. Удаляем группировку по Характеристике номенклатуры

Выделим поле Характеристика и щелкнем по кнопке Удалить командной панели. Подтвердим внесение изменений в настройки отчета, щелкнув по кнопке Завершить редактирование в нижнем левом углу экрана.

Результат наших действий представлен на рис. 5. Как видно из представленного рисунка, поле Характеристика больше не фигурирует в отчете.


Рисунок 5. Результат

Шаг 2. После удаления характеристики, нашей задачей, по условиям примера, будет добавление ценовой группы. По смыслу эта группировка должна идти уровнем ниже, чем группировка по складу, но уровнем выше, чем группировка по номенклатуре. Поэтому, в структуре отчета выделим группировку Склад . Щелкнув по ней правой кнопкой мышки, в контекстном меню выберем команду Новая группировка (рис. 6.)


Рисунок 6. Добавление группировки по ценовой группе

В открывшемся окне редактирования поля группировки в качестве поля выберем Номенклатура.Ценовая группа (рис. 7).

Рисунок 7. Редактирование поля группировки

Щелкнем по кнопке «ОК». Как видно из рисунка, в отчет добавилась новая группировка, подчиненная группировке Склад .

Теперь выделим группировку по номенклатуре и, не отпуская правую кнопку мыши, перетащим ее внутрь (т.е. ниже) группировки по ценовой группе . У нас получится следующая структура:

Рисунок 8. Получившаяся структура отчета

Результат выполнения отчета:


Рисунок 9. Результат настройки отчета

Работа с пользовательскими полями

Давайте теперь немного подробнее рассмотрим новые возможности настройки отчетов в УТ.

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

Пример 2. Настроим под себя отчет История продаж (вариант отчета ). Выведем данные по продажам в разрезе партнеров и номенклатуры. Предположим, что наша компания занимается продажей товаров в Москве и в регионах. Таким образом, каждый клиент в информационной базе принадлежит к определенному географическому региону (реквизит Бизнес-регион справочника Партнеры ). Мы можем без труда сгруппировать данные по продажам в отчете по регионам , но что делать, если нас интересует более укрупненная статистка, в частности ответ на вопрос «Сколько было продано товаров в Москве, а сколько во всех остальных регионах вместе взятых»? В этом случае как раз и пригодятся «пользовательские поля».

Шаг 1. Откроем отчет. Перейдем в форму настройки структуры отчета (Все действия/Изменить вариант ). Удалим по очереди все ранее созданные в отчете группировки - для этого выделим каждую из них и щелкнем по кнопке «Удалить» командной панели, либо воспользуемся клавишей «DEL».

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


Рисунок 10. Новая структура отчета

Шаг 2. Создадим новое пользовательское поле. Откроем закладку Пользовательские поля и выполним команду Добавить/Новое поле-выбор.

Рисунок 11. Добавление нового поля

Присвоим имя нашему новому полю – Регион обобщенно.


Рисунок 12. Редактирование нового пользовательского поля

Щелкнем по кнопке Добавить (рис.12). В новой строке щелкнем по кнопке в колонке Отбор . В появившейся форме редактирования отбора добавим отбор по полю Партнер.Бизнес регион . Выберем вид сравнения Равно , значение – «Москва» (рис. 13)


Рисунок 13. Редактирование отбора

Щелкнем по кнопке «ОК», после чего вернемся в окно редактирования пользовательского поля. Далее необходимо щелкнуть по кнопке в колонке Значение и в появившемся списке выбора типа данных выберем Строка и в качестве значения напишем «Москва».

Повторим операцию. Добавим еще одну строку в таблицу. На этот раз для отбора по полю Партнер.Бизнес регион выберем вид сравнения Не равно (рис. 14).


Рисунок 14. Отбор с видом сравнения Не равно

Вернувшись в окно редактирования пользовательского поля, в колонке Значение напишем «Остальные регионы».


Рисунок 15. Остальные регионы

Щелкнем по кнопке «ОК». Наше новое поле готово.

Шаг 3. Добавим наше новое поле в структуру отчета. Выделив мышкой верхний уровень Отчет в структуре, добавим новую группировку. В реквизите Поле выберем «Регион обобщенно» (рис. 16).


Рисунок 16. Выбор поля

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


Рисунок 17. Новая структура отчета

Сформируем отчет и посмотрим на результат.


Рисунок 18. Результат формирования отчета

Отбор и сортировка

Вернемся к окну редактирования структуры и настроек отчета и обратим внимание на закладки Отбор и Сортировка .


Рисунок 19. Отбор, сортировка, условное оформление

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

Пример 3. В отчет История продаж (вариант отчета Выручка и себестоимость продаж ) добавим отбор по полю Менеджер .

Отчет , перейдем на закладку Отбор .

Менеджер . Установим вид сравнения Равно , в качестве значения выберем «Иванов Петр Федорович».


Рисунок 20. Отбор по полю менеджер

В результате в отчет попадут только те реализации, где в качестве менеджера указан Иванов Иван Федорович.

Пример 4. Выведем в отчет данные в порядке убывания выручки от продаж.

Откроем окно настроек отчета, в структуре отчета выделим корневой элемент Отчет , перейдем на закладку Сортировка .

Из списка полей слева перетащим мышкой в правую часть поле Выручка . Установим направление сортировки По убыванию .


Рисунок 21. Сортировка

Результат формирования отчета показан на рисунке 22.


Рисунок 22. Результат формирования отчета

Сохраняем сделанные изменения

При изменении структуры отчета его можно сохранить при помощи команды Все действия/Сохранить вариант .

Рисунок 23. Сохранение варианта отчета

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

Для нового варианта необходимо указать название (щелкнув по кнопке Далее ), и затем нажать на кнопку Сохранить .


Рисунок 24. Сохранение нового варианта отчета

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

Рисунок 25. Выбор варианта отчета

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

Заключение

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

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

27.06.2017

NULL, ЕСТЬNULL() и ЕСТЬ NULL в запросах 1С

Что такое NULL

NULL в результате запроса, означает отсутствие значения (это не пустое значение, не нулевое, не пустая ссылка).
Например в результате соединения таблиц запроса, не нашлось значения в одной из таблиц при связи по полям соединения. Или в запросе идет обращение к несуществующему реквизиту (свойству).

NULL не равно NULL !

Если вы в запросе 1С захотите наложить отбор (условие) с проверкой на NULL, то конструкция вида " ГДЕ ВТ.Поле1 = NULL" Всегда будет возвращать ЛОЖЬ ! Для проверки следует использовать специальный оператор

ЕСТЬ NULL в запросе 1С

Для проверки значения (или для работы со значениями) на NULL необходимо использовать следующую конструкцию " ГДЕ ВТ.Поле1 ЕСТЬ NULL" Или другой пример, использование в конструкции ВЫБОР " ВЫБОР | КОГДА ВТ.Поле1 ЕСТЬ NULL | ТОГДА" Стоит отметить, что функция проверки поля на NULL одна из самых ресурсоемких в запросах 1С. Поэтому если Вы хотите использовать ее в условии запроса, подумайте, возможно ли заменить такую проверку внутренним соединением (вид соединения в запросах, при котором в выборке остаются только записи, присутствующие в обоих таблицах).

Функция ЕСТЬNULL() в запросе 1С

Функция ЕСТЬNULL() позволяет заменить отсутствующее значение в поле запроса, на указанное значение (стандартное значение, заглушку).
К примеру, если информация о стоимости товара отсутствует, то мы указываем ее равной 0 (нулю) "ВЫБРАТЬ | ЕСТЬNULL(ВТ.Цена, 0) КАК Цена |ИЗ ОстаткиТоваров КАК ВТ"

Заключение

Пишите запросы правильно и оптимально. Потому что плохой запрос - это тормоза и говнокод)

NULL - отсутствующие значения.
Не путать с нулевым значением! NULL - это не число, не равно пробелу, пустой ссылке, Неопределено.

NULL - типообразующее значение, т.е. есть тип NULL и единственное значение этого типа.

NULL значения появляются в запросе в следующих ситуациях:
а) Внешнее соединение, при котором не было найдено соответствующей записи в другой таблице (при левом - во второй, при правом - в первой, при полном - в обоих)
б) Обращение к реквизитам элементов для группы и наоборот.
в) NULL в списке полей выборки (ВЫБРАТЬ)
г) Обращение к реквизитам для битой ссылки

ЕСТЬ NULL используется в операторе ВЫБРАТЬ (как бы проверя, что значение это есть пустое (Значение ЕСТЬ NULL)):
Код 1C v 8.х
ВЫБОР
КОГДА Значение ЕСТЬ NULL ТОГДА РезультатЕслиNULL
ИНАЧЕ Значение
КОНЕЦ

еще пример:
Код 1C v 8.х ВЫБРАТЬ
ВЫБОР КОГДА УчетНоменклатурыОстатки.КоличествоОстаток ЕСТЬ NULL ТОГДА 0
ИНАЧЕ УчетНоменклатурыОстатки.КоличествоОстаток КАК КоличествоОстаток
ИЗ

ГДЕ

Функция ЕСТЬNULL (значение, РезультатЕслиNULL) возвращает значение своего первого параметра, в случае если он не равен NULL, и значение второго параметра в противном случае
Является свернутым ВЫБОР…КОНЕЦ, но ЕСТЬNULL предпочтительнее.
Код 1C v 8.х
ВЫБРАТЬ
ЕСТЬNULL(Справочник.Номенклатура.Артикул, "---") КАК Артикул,
Справочник.Номенклатура.Представление КАК Номенклатура

еще пример:
Код 1C v 8.х
ВЫБРАТЬ
СправочникНоменклатуры.Наименование,
ЕСТЬNULL(УчетНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатуры
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УчетНоменклатуры.Остатки КАК УчетНоменклатурыОстатки
ПО УчетНоменклатурыОстатки.Номенклатура = СправочникНоменклатуры.Ссылка
ГДЕ
СправочникНоменклатуры.ЭтоГруппа = ЛОЖЬ
В данном примере получаются все элементы справочника номенклатуры, после чего, для каждой номенклатуры из регистра накопления получаются текущие остатки. Т.к. для номенклатуры, по которой отсутствуют остатки, виртуальная таблица остатков не запись вернет, то в результате соединения в поле "УчетНоменклатурыОстатки.КоличествоОстаток" будут значения NULL для номенклатуры, по которой не было остатков. Для того чтобы вместо значения NULL в результате запроса присутствовало значение 0, мы использовали функцию ЕСТЬNULL(), которая осуществит желаемую замену.

ЕСТЬNULL отличается от ВЫБОР по следующим причинам:
а) При ЕСТЬNULL лучше читается запрос (проще)
б) При ЕСТЬNULL, если проверяется сложное выражение, то работает быстрее, поскольку вычисляется один раз
в) При ЕСТЬNULL выражение замены приводится к типу проверяемого выражения, если оно имеет тип Строка (длина) или Число (разрядность).

Нельзя проверять значения на NULL обычным равенством, потому что в SQL действует трехзначная логика - Истина, Ложь, NULL, и результатом такого сравнения будет UNKNOWN, что в 1С 8.0 аналогично ЛОЖЬ.
NULL <> 0, поэтому при левых внешних соединениях спр. Номенклатура с таблицами остатков, цен, Контрагентов со взаиморасчетами при отсутствии таких записей там будет NULL, который не равен 0. Лучшее решение - ЕСТЬNULL

Функция ЕСТЬNULL(английский синоним ISNULL) используется для подмены нулевого(отсутствующего) значения при соединениях таблиц. Таблицы могут быть произвольными (как совпадающими по полям).

Null — это не число 0, а именно отсутствующее значение.

Наиболее частое использование данной функции для подмены параметры функции Сумма() на 0, передача пустого значения может не вызывать ошибки исполнения, но приводить к некорректному результату, особенно при использовании в запросах СКД.

Быстрый переход

Результат ее выполнения:

  • Значение определенного типа, если оно существует.
  • Указанное вторым параметром значение (любого типа).

Синтаксис ISNULL

ЕстьNULL(<ПроверяемоеПоле>,<ЗначениеЗамены>)

Аналогом этой функции может быть конструкция:
ВЫБОР
КОГДА Таблица.Поле1 ЕСТЬ NULL ТОГДА "Некое значение"
ИНАЧЕ
Таблица.Поле1
КОНЕЦ

Как на практике используется ЕстьNULL

1. Подмена значения константой
ЕСТЬNULL(Таблица1.Поле1,"Некое значение")

ЕСТЬNULL(Таблица1.Количество, 0)

2. Подмена значения параметром

ЕСТЬNULL(Таблица1.Поле1,&Параметр)

3. Подмена значением из другой таблицы

ЕСТЬNULL (Таблица1.Поле1,Таблица2.Поле1)

4.Использование функции для получения предопределенного или пустого значения

ЕСТЬNULL(Таблица2.Поле1,ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка))

Похожие публикации