Ссылки 1 – 1С 8.x : Как ПолучитьНавигационнуюСсылку() в Управляемом приложении и на Web-клиенте » Встроенные Функции » FAQ 1С 8.x : » HelpF.pro

Содержание

ТИПЗНАЧЕНИЕ и ССЫЛКА в запросах 1С 8.3 на примерах

В запросах 1С 8.3 существует две конструкции, которые позволяют работать с типами данных:

  • ТИПЗНАЧЕНИЯ(<Выражение>) — Название данной функции говорит само за себя, то есть она возвращает тип переданного в неё значения.
  • ССЫЛКА И  ТИП — специальные конструкции, которые могут поставить условие на тип.

Несколько примеров

Предположим, что в нашей конфигурации существует документ «ПродажаТоваров».

Состав реквизитов следующий:

  • «Контрагент» (тип <СправочникСсылка.Контрагенты>, <СправочникСсылка.Сотрудники>)
  • «СуммаДокумента» (тип <Число>)

То есть покупки у нас может совершать, как сотрудник, так и сторонний покупатель.

Пример №1 — Получаем тип поля в результате запроса

Сделаем запрос к документу «ПродажаТоваров», в котором выберем все документы продажи где можно будет увидеть наименование покупателя, а с помощью функции  ТИПЗНАЧЕНИЯ() в отдельной колонке определим тип покупателя.

Текст запроса:

ВЫБРАТЬ
ПродажаТоваров.Ссылка КАК ДокументПродажи,
ПродажаТоваров.Покупатель КАК Покупатель,

ТИПЗНАЧЕНИЯ(ПродажаТоваров.Покупатель) КАК ТипПокупателя
ИЗ
Документ.ПродажаТоваров КАК ПродажаТоваров

Результат запроса может выглядеть так:

Получите 267 видеоуроков по 1С бесплатно:

Пример №2 — Отбор с помощью функций ССЫЛКА и ТИП(…)

Функцию ТИПЗНАЧЕНИЯ() удобно применять совместно с функцией ТИП(<Имя типа>), для проверки на соответствие определённому типу значения. Немного модифицируя запрос из примера №1, выведем записи только с теми документами, в которых тип покупателя сотрудник. Для наглядности оставим поле «ТипПокупателя».

Текст запроса:

ВЫБРАТЬ
ПродажаТоваров.Ссылка КАК ДокументПродажи,
ПродажаТоваров.Покупатель КАК Покупатель,
ТИПЗНАЧЕНИЯ(ПродажаТоваров.Покупатель) КАК ТипПокупателя
ИЗ
Документ.ПродажаТоваров КАК ПродажаТоваров
ГДЕ
ТИПЗНАЧЕНИЯ(Покупатель) = ТИП(Справочник.Сотрудники)

Результат запроса:

Стоит отметить, что аналогом такой связки ( ТИПЗНАЧЕНИЯ() + ТИП() ), исключительно для ссылочных типов данных, может служить оператор ССЫЛКА.

Тогда текст запроса мог бы выглядеть так:

ВЫБРАТЬ
ПродажаТоваров.Ссылка КАК ДокументПродажи,
ПродажаТоваров.Покупатель КАК Покупатель,
ТИПЗНАЧЕНИЯ(ПродажаТоваров.Покупатель) КАК ТипПокупателя
ИЗ
Документ.ПродажаТоваров КАК ПродажаТоваров
ГДЕ
Покупатель ССЫЛКА Справочник.Сотрудники

Пример №3 — Использование в конструкции ВЫБОР … КОГДА … КОНЕЦ

Также  функция ТИПЗНАЧЕНИЯ() часто находит своё применение в конструкциях условного оператора «ВЫБОР».

Синтаксис оператора «ВЫБОР»:

ВЫБОР
КОГДА <ПроверяемоеВыражение> ТОГДА <ВыражениеЗамены_1>
ИНАЧЕ < ВыражениеЗамены_2>
КОНЕЦ

Допустим, в нашей информационной базе предусмотрена система скидок в зависимости от типа покупателя.  Если покупатель сотрудник делаем скидку 10%.

Используя связку, функция ТИПЗНАЧЕНИЯ() и условный оператор «ВЫБОР», можем рассчитать в запросе сумму со скидкой в отдельном поле.

Текст запроса может выглядеть так:

ВЫБРАТЬ

ПродажаТоваров.Ссылка КАК Ссылка,
ПродажаТоваров.Покупатель КАК Покупатель,
ПродажаТоваров.СуммаДокумента КАК СуммаДокумента,
ВЫБОР
КОГДА ТИПЗНАЧЕНИЯ(ПродажаТоваров.Покупатель) = ТИП(Справочник.Сотрудники)
ТОГДА ПродажаТоваров.СуммаДокумента — ПродажаТоваров.СуммаДокумента * 0.1
ИНАЧЕ ПродажаТоваров.СуммаДокумента
КОНЕЦ КАК СуммаСоСкидкой
ИЗ
Документ.ПродажаТоваров КАК ПродажаТоваров

Результат:

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Объект не найден в 1С или про Битые ссылки 1С

Если вдруг, в один прекрасный день Вы открываете свою программу 1С, а вместо данных там сообщение вида:

<Объект не найден> (84:893f00215aecf30a11e0760ca6c900fd) - Что же делать!?

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

И так, для начала Скачайте Обработку GUID

Откройте ее в 1С через Файл - Открыть, откроется окно вида:

Поиск битых ссылок в базе 1С

Для примера, найдем битые ссылки в Документах

Результат:

Восстановление битой ссылки в 1С

Копируем текст объект не найден.... и вставляем в поле:

Нажимаем на кнопку Получить GUID

В результате обработки получаем GUID и ТИП удаленного элемента.

Нажав создать объект из GUID... открывается форма Ввода нового Элемента,

Заполните её данными (если есть архив базы, то используйте его для поиска данных)

Как в архивной копии базы найти элемент по GUID

Открываем копию базы, через Файл - Открыть запускаем обработку

В поле GUID вставляем полученный ранее guid

Нажав на Ссылку -> получим элемент базы данных с этим guid

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

Аналогично, можно обратно - из Ссылки получить Guid

Надеюсь что интерфейс обработки понятен и прост.

Пишите, пожалуйста, все свои пожелания и замечания в комментариях.

Поиск битых ссылок запросом в 1С и другими способами

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

Как выглядит битая ссылка

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

Поиск битых ссылок в 1С запросом

Очень часто встает вопрос: как отобрать элементы с битыми ссылками запросом 1С?

Вопрос решается достаточно легко, рассмотрим его на примере:

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

Решение задачи:

Получите 267 видеоуроков по 1С бесплатно:

Поиск битый ссылок запросом

Что мы сделали?

Первым отбором «НЕ СчетНаОплатуПокупателю.Организация ЕСТЬ NULL»  мы определили, что ссылка установлена.

Вторым отбором СчетНаОплатуПокупателю.Организация.Код ЕСТЬ NULL, обращаясь к коду организации по точке, система строит левое соединение, но не находит в таблице организаций такой элемент — возвращает NULL.

Всё получается достаточно просто.

Определение битой ссылки в объектной модели

Если у Вас нет возможности сделать проверку запросом, рекомендую использовать два разных метода. Рассмотрим их на примере, который давали ранее:

Используя ПолучитьОбъект()

При использовании метода «ПолучитьОбъект()» битая ссылка вернет «Неопределено».

Например:

Если Счет.Организация.ПолучитьОбъект() = Неопределено Тогда

Сообщить("Ссылка битая!");

КонецЕсли;

Поиск в строке

Этот метод самый простой — поиск строки «Объект не найден» в представлении элемента.

Например:

Если Найти(Строка(Счет.Организация),"Объект не найден") <> 0 Тогда

Сообщить("Ссылка битая!");

КонецЕсли;

Читайте также другие статьи по разработке в 1С.

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Передача ссылок в 1С

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

После прочтения статьи вы научитесь:

  • получать текстовые ссылки в 1С;
  • передавать полученные ссылки другим пользователям;
  • открывать переданные ссылки в 1С;
  • контролировать выполненную работу по выданным ссылкам.

Текстовые ссылки

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

При этом:

  • экономится время на объяснение, где найти нужный объект в программе;
  • исключается возникновение ошибки при поиске нужных данных;
  • сохраняется история переданных ссылок для последующего быстрого контроля произведенных по ним изменений.

Рассмотрим подробнее, как выполняется в 1С:

Получение ссылки

Получение ссылки происходит из формы объекта по специальной команде Получить ссылку. Команда доступна по:

  • кнопке Главное меню — Сервис — Получить ссылку;
  • кнопке Получить ссылку области системных команд;
  • комбинации клавиш CTRL+F.

При вызове команды открывается форма Получение ссылки, в которой отображается автоматически сформированная текстовая ссылка на открытый объект.

Повторное получение ссылки даст тот же самый результат, сколько бы для конкретного объекта вы не формировали ссылку. Алгоритм формирования ссылки в 1С позволяет каждый объект определять уникальным образом.

Узнать подробнее Как формируется ссылка на объект в 1С

Пошаговая инструкция получения ссылки

Шаг 1. Откройте документ реализации с неправильной ценой услуги по контрагенту Камелия.

Шаг 2. Вызовите команду Получить ссылку, например, комбинацией клавиш CTRL + F11.

Шаг 3. Нажмите кнопку Копировать в буфер, по которой текст ссылки помещается в буфер обмена. Теперь ее можно передать ответственному лицу.

Передача ссылки

Полученную ссылку на объект можно передать:

Из программы

Eсли в 1С настроена учетная запись электронной почты, то для передачи ссылки нажмите кнопку Конверт в форме документа.

В полях открывшейся формы:

  • Кому — укажите электронную почту ответственного лица, которому отправляется ссылка;
  • Содержание — опишите ситуацию для исправления и по комбинации клавиш CTRL+V вставьте полученную ссылку на документ из буфера обмена.

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

Из электронной почты

Если учетная запись электронной почты в 1С не настроена или нужно передать сразу несколько ссылок, то можно отправить обычное электронное письмо. Для этого создайте его в своей электронной почте, укажите кому отправляете письмо и по комбинации клавиш CTRL+V последовательно вставьте сформированные в 1С ссылки. По кнопке Отправить перешлите письмо ответственному лицу для проверки или исправления.

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

Переход по ссылке

Переход по ссылке происходит по специальной команде Переход по ссылке. Команда доступна по:

  • кнопке Главное меню — Сервис — Перейти по ссылке;
  • кнопке Получить ссылку области системных команд;
  • комбинации клавиш Shift+F.

При вызове команды открывается форма Переход по ссылке, в которой поле Ссылка не заполнено. В вызванной форме перехода по ссылке нажмите кнопку Вставить из буфера, предварительно скопировав ссылку из полученного письма по кнопке CTRL+C.

После указания данных в поле Ссылка нажмите кнопку Перейти.

Программа автоматически откроет ссылку на нужный документ.

функции и операторы для работы с типами

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

Войдите на сайт как ученик

Войдите как ученик, чтобы получить доступ к материалам школы

Язык запросов 1С 8.3 для начинающих программистов: функции и операторы для работы с типами (ТИПЗНАЧЕНИЯ, ТИП, ССЫЛКА, ЕСТЬNULL, ВЫРАЗИТЬ)

Автор уроков и преподаватель школы: Владимир Милькин

Давайте вспомним, что каждый реквизит (свойство, поле) справочника, документа или любого другого прикладного объекта имеет свой тип. И этот тип мы можем посмотреть в конфигураторе:

01

В языке запросов существует целый класс функций и операторов для работы с типами реквизитов. Давайте рассмотрим их.

Функция ТИПЗНАЧЕНИЯ

Эта функция принимает один параметр (значение) и возвращает его тип. Для описанного на картинке (выше) реквизита Вкус справочника Еда вернётся следующее:

ВЫБРАТЬ
    Наименование,
    Вкус,
    ТИПЗНАЧЕНИЯ(Вкус)
ИЗ
    Справочник.Еда

02

Если мы запросим тип поля Наименование, то, как и ожидается, получим Строка:

ВЫБРАТЬ
    Наименование,
    ТИПЗНАЧЕНИЯ(Наименование)
ИЗ
    Справочник.Еда

03

А теперь давайте рассмотрим реквизит ОтличительныйПризнак у справочника Города:

04

Вы видите, что этот реквизит может иметь один из нескольких типов: Строка, Справочник.Вкусы, Справочник.Цвета. Такой тип реквизитов называется СОСТАВНЫМ.

Если мы попытаемся заполнить значение такого реквизита в режиме 1С:Предприятие, то система спросит нас, какого типа будет вводимое значение:

05

И только после нашего выбора позволит ввести значение выбранного типа.

Таким образом, элементы справочника одного вида (Справочник.Города) смогут хранить в одном и том же реквизите (ОтличительныйПризнак) значения разных типов (Строка, Цвета или Вкусы).

Вы можете убедиться в этом сами пощёлкав по элементам справочника Города в режиме 1С:Предприятие. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

Здесь значение отличительного признака является элементом справочника Вкусы:

06

Здесь строкой:

07

А здесь вообще элементом справочника Цвета:

09

Вот какие возможности открывает перед нами составной тип данных!

Интересно, как поведёт себя функция ТИПЗНАЧЕНИЯ на реквизите ОтличительныйЭлемент, имеющий составной тип данных:

ВЫБРАТЬ
    Наименование,
    ОтличительныйПризнак,
    ТИПЗНАЧЕНИЯ(ОтличительныйПризнак)
ИЗ
    Справочник.Города

09

Это уже очень интересно. Давайте разбираться с каждой строкой в отдельности.

Тип значения отличительного признака для элемента Россия равен NULL. Мы впервые сталкиваемся с этим типом. Значения данного типа используются исключительно для определения отсутствующего значения при работе с базой данных.

Так и есть, ведь элемент Россия является группой, а не обычным элементом справочника Города, поэтому у него отсутствует поле ОтличительныйПризнак. А тип у отсутствующего значения, как мы прочитали выше, всегда равен NULL.

Идём дальше.

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

Для Красноярска тип признака равен Цвета, потому что значение выбранное в базе является ссылкой на элемент справочника Цвета.

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

Индия снова группа, поэтому значение отсутствует. А тип у отсутствующего значения, как мы помним, равен NULL.

Далее всё аналогично, кроме Сан-Паулу. Это не группа, а обычный элемент справочника (город), но тип его значения пустой. Как так?

А дело вот в чём. Если вы зайдёте в элемент справочника Города с наименованием Сан-Паулу, то увидите, что поле ОтличительныйПризнак совершенно никак не заполнено. Оно пустое. А все незаполненные поля составного типа имеют специальное значение НЕОПРЕДЕЛЕНО.

С НЕОПРЕДЕЛЕНО мы также сталкиваемся впервые.

Значение НЕОПРЕДЕЛЕНО применяется, когда необходимо использовать пустое значение, не принадлежащее ни к одному другому типу. Это как раз наша ситуация.

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

Функция ТИП

Она принимает всего один параметр - имя примитивного типа (СТРОКА, ЧИСЛО, ДАТА, БУЛЕВО), либо имя таблицы, тип ссылки которой нужно получить.

Результатом данной конструкции будет значение типа Тип для указанного типа.

Звучит туманно, не правда ли? :)

Давайте рассмотрим применение данной конструкции и всё сразу станет на свои места.

Пусть нам требуется отобрать все записи справочника Города, у которых составной реквизит ОтличительныйПризнак имеет значение типа СТРОКА:

ВЫБРАТЬ
    Наименование,
    ОтличительныйПризнак,
    ТИПЗНАЧЕНИЯ(ОтличительныйПризнак)
ИЗ
    Справочник.Города
ГДЕ
    ТИПЗНАЧЕНИЯ(ОтличительныйПризнак) = ТИП(СТРОКА)

01

Теперь давайте отберём все записи, у которых значения реквизита ОтличительныйПризнак являются ссылками на элементы справочника Цвета (таблица Справочник.Цвета):

ВЫБРАТЬ
    Наименование,
    ОтличительныйПризнак,
    ТИПЗНАЧЕНИЯ(ОтличительныйПризнак)
ИЗ
    Справочник.Города
ГДЕ
    ТИПЗНАЧЕНИЯ(ОтличительныйПризнак) = ТИП(Справочник.Цвета)

02

Отступление

Как вы помните, некоторые элементы справочника Города не имеют реквизита ОтличительныйПризнак. Функция ТИПЗНАЧЕНИЯ для таких элементов выдаёт NULL.

Как можно сделать отбор таких элементов в запросе? Для этого предусмотрен специальный логический оператор ЕСТЬ NULL (не путать с функцией ЕСТЬNULL, которую мы рассмотрим ниже). Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

Вот пример его использования:

ВЫБРАТЬ
    Наименование,
    ОтличительныйПризнак,
    ТИПЗНАЧЕНИЯ(ОтличительныйПризнак)
ИЗ
    Справочник.Города
ГДЕ
    ОтличительныйПризнак ЕСТЬ NULL

03

Отлично.

Но есть и такие элементы (Сан-Паулу), у которых реквизит ОтличительныйПризнак (составного типа) просто не заполнен и равен специальному значению НЕОПРЕДЕЛЕНО.

Чтобы отобрать такие записи следует использовать другую конструкцию:

ВЫБРАТЬ
    Наименование,
    ОтличительныйПризнак,
    ТИПЗНАЧЕНИЯ(ОтличительныйПризнак)
ИЗ
    Справочник.Города
ГДЕ
    ОтличительныйПризнак = НЕОПРЕДЕЛЕНО

03

Но сравнение с НЕОПРЕДЕЛЕНО для определения пустых (не заполненных) реквизитов будет работать только для составных типов.

Кстати, у логического оператора ЕСТЬ NULL форма отрицания выглядит следующим образом:

ВЫБРАТЬ
    Наименование,
    ОтличительныйПризнак
ИЗ
    Справочник.Города
ГДЕ
    ОтличительныйПризнак ЕСТЬ НЕ NULL

Логический оператор ССЫЛКА

Оператор ССЫЛКА позволяет проверить, является ли значение выражения, указанного слева от него, ссылкой на таблицу, указанную справа.

К примеру, давайте выберем из справочника Города только те записи, у которых значение составного реквизита ОтличительныйПризнак являются ссылкой на элемент справочника Вкусы:

ВЫБРАТЬ
    Наименование,
    ОтличительныйПризнак,
    ТИПЗНАЧЕНИЯ(ОтличительныйПризнак)
ИЗ
    Справочник.Города
ГДЕ
    ОтличительныйПризнак ССЫЛКА Справочник.Вкусы

05

Как вы помните, эту же задачу мы могли бы решить используя ТИПЗНАЧЕНИЯ и ТИП:

ВЫБРАТЬ
    Наименование,
    ОтличительныйПризнак,
    ТИПЗНАЧЕНИЯ(ОтличительныйПризнак)
ИЗ
    Справочник.Города
ГДЕ
    ТИПЗНАЧЕНИЯ(ОтличительныйПризнак) = ТИП(Справочник.Вкусы)

Функция ЕСТЬNULL

Функция предназначена для замены значения NULL на другое значение.

Мы помним, что значение NULL возвращается в том случае, если запрашиваемый реквизит (поле, свойство) не существует.

Как например, реквизит ОтличительныйПризнак для групп справочника Города:

ВЫБРАТЬ
    Наименование,
    ОтличительныйПризнак
ИЗ
    Справочник.Города

06

Функция ЕСТЬNULL поможет нам вывести другое значение в том случае, если это значение равно NULL. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Пусть в данном случае это будет строка "Такого реквизита нет!":

ВЫБРАТЬ
    Наименование,
    ЕСТЬNULL(ОтличительныйПризнак, "Такого реквизита нет!")
ИЗ
    Справочник.Города

08

Получается, что если первый параметр функции ЕСТЬNULL не равен NULL, то возвращается он. Если же он равен NULL, то возвращается второй параметр.

Функция ВЫРАЗИТЬ

Эта функция предназначена только для полей, имеющих составной тип. Отличным примером такого поля является свойство ОтличительныйПризнак у элементов справочника Города.

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

Для поля ОтличительныйПризнак такими допустимыми типами являются СТРОКА, Справочник.Цвета и Справочник.Вкусы.

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

Давайте приведём все значения поля ОтличительныйПризнак к типу Справочник.Цвета:

ВЫБРАТЬ
    Наименование,
    ВЫРАЗИТЬ(ОтличительныйПризнак КАК Справочник.Цвета)
ИЗ
    Справочник.Города

09

В результате, все значения элементов, которые имели тип Справочник.Цвета, остались заполненными и оказались приведенными к указанному типу. Все значения других типов (СТРОКА, Справочник.Вкусы) теперь стали равны NULL. В этом состоит особенность приведения типа при помощи функции ВЫРАЗИТЬ.

Приводить тип можно или к примитивному типу (БУЛЕВО, ЧИСЛО, СТРОКА, ДАТА) или к ссылочному типу. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Но тип, к которому делается приведение, обязательно должен входить в список типов для данного составного поля, иначе система выдаст ошибку.

Пройдите тест

а) Напишите запрос, который запрашивает из справочника Города реквизиты Наименование и Мэр, а также тип значения, которое находится в составном поле Мэр:

Пустая ссылка в запросе 1С 8.3

Содержание статьи

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

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

Виды пустых значений

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

  • Для типа Число – пустым значением является ноль – 0.
  • Для типа Строка – пустая строка – «».
  • Для типа Дата – первое января первого года – 01.01.0001 00:00:00. Именно с этой даты ведется отсчет времени в 1С.*
  • Для типа Булево – значением по умолчанию, технически, является Ложь, но логически оба значения типа являются заполненными. Поэтому принятие решения о том пустое значение Ложь или нет, основывается на логике конкретного алгоритма.

*Будьте внимательны, вне 1С существуют различные системы счисления дат с разными точками отсчета.

Отсутствующее значение в полном смысле соответствует только типу Null. Этот тип содержит лишь одно значение, которое обозначает отсутствие значения.

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

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

Работа с пустыми значениями в запросе

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

Типы Число, Строка, Булево описываются в запросе как во встроенном языке:


	ВЫБРАТЬ
	0 КАК ПримерТипаЧисло,
	"Привет мир" КАК ПримерТипаСтрока,
	Истина КАК ПримерТипаБулево


Неопределено, являясь по существу примитивным типом, описывается аналогично:


	Выбрать
	Партии.Период Из РегистрНакопления.Партии Как Партии
	Где Остатки.ДокументПартии = Неопределено

Пустые ссылочные значения определяются немного сложнее. У всех ссылочных объектов предусмотрено предопределенное служебное значение ПустаяСсылка. Благодаря этому есть возможность единым способом выбрать пустую ссылку – через функцию Значение:


       Выбрать Значение(Справочник.Номенклатура.ПустаяСсылка) Как Пустая Номенклатура

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

  • Оператор Есть Null позволяет создать логическое выражение сравнивающее выбранное значение со значением Null.
  • Функция ЕстьNull возвращает первый аргумент, если он не равен Null, и второй аргумент в обратном случае.

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

Практические примеры

Проверка на пустую ссылку

С использованием функции Значение


	Выбрать
	Товары.Ссылка Как Номенклатура,
	Товары.Ссылка = Значение(Справочник.Номенклатура.ПустаяСсылка) Как
	ЭтаСсылкаПустая
	Из втТовары Как втТовары

С использованием оператора Есть Null


	Выбрать
	Товары.Ссылка Как Номенклатура,
	Товары.Ссылка Есть Null Как ЭтаСсылкаПустая
	Из втТовары Как втТовары

Null при левом или полном соединении

Проверка на Null

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


	Выбрать
	втТовары.Ссылка Как Номенклатура,
	Остатки.КоличествоОстаток Как Количество,
	Остатки.КоличествоОстаток Есть Null Как НетОстатка
 
	Из втТовары как втТовары
	Левое Соединение РегистрНакопления.ТоварыНаСкладах.Остатки Как 
   Остатки
	По втТовары.Ссылка = Остатки.Номенклатура

Обработка Null-значений

Модификация предыдущего запроса для демонстрации часто встречающейся методики по получению каких-либо значений по умолчанию, взамен отсутствующих. В данном примере с использованием функции ЕстьNull, производится замена отсутствующего значения остатка, на логически правильное 0.


	Выбрать
	втТовары.Ссылка Как Номенклатура,
	ЕстьNull(Остатки.КоличествоОстаток, 0) Как Количество
 
	Из втТовары как втТовары
	Левое Соединение РегистрНакопления.ТоварыНаСкладах.Остатки Как 
    Остатки
	По втТовары.Ссылка = Остатки.Номенклатура

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


Сократить ссылку | Сократить ссылку онлайн

09.01.2020 12:40

Мы сделали свой сократитель ссылок

Новый инструмент поможет при составлении отчетов и аналитике переходов по сокращенным ссылкам - http://s.be1.ru/068mh

16.12.2019 18:20

Навигация по нашим инструментам стала более удобной и быстрой

Наших инструментов становится много, но у каждого пользователя есть свои часто используемые. Теперь их можно выделить и очень быстро найти - http://s.be1.ru/8qsjn

03.12.2019 13:13

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

Нарастив ресурсы для съема позиций в Google, теперь мы можем дать возможность сохранять проекты с галочкой - https://be1.ru/s/kdx9o

28.11.2019 18:21

Дополнили функционалом инструмент по проверке позиций сайта

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

12.08.2019 10:00

Разработали новый SEO-инструмент, определяющий частотность запросов!

Инструмент поможет определить базовые виды частотностей поисковых запросов, данные тянутся непосредственно из Яндекс Вордстат. Ссылка на инструмент: https://be1.ru/wordstat/

02.07.2019 12:00

Обновили дизайн старого инструмента!

Мы до неузнаваемости обновили инструмент определяющий IP адрес компьютера, теперь в нем куча плюшек и современный дизайн! Ссылка на инструмент: https://be1.ru/my-ip/

13.06.2019 14:34

Добавили новый SEO-инструмент!

Он умеет быстро и бесплатно определять систему управления контентом (CMS) сайта.

07.05.2019 10:05

Мы переехали на новый сервер!

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

26.03.2019 10:47

Падение сервера 25.03.18

Остановка в работе сервиса связанна c DDoS атакой, в данный момент работа Be1 полностью восстановлена. Будем укрепляться и ждать следующую волну. Извините за временные неудобства.

19.02.2019 10:00

Новое расширение для анализа сайтов!

Наше расширение помогает бесплатно в один клик провести глубокий SEO-анализ сайта. Рекомендуем: https://be1.ru/goto/extension

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *