Перевірка на порожню посилання, дату або рядок в запиті 1С

В 1С не вбудовані розробниками засоби визначення порожніх посилань, дат або рядків. Розглянемо, як перевірити на порожню посилання, дату або рядок в запиті 1С.

Визначити нульові дані можна шляхом використання спеціальних операторів.

зміст

  • 1 Мова завдань
  • 2 Перевірка на вміст NULL
  • 3 контроль дати
  • 4 посилальна перевірка
  • 5 Перевірка рядки
  • 6 Ще про битих і звичайних линках
    • 6.1 В системі 1С-7.7
    • 6.2 В системі 1С-8.x
    • 6.3 Звідки вони беруться

Мова завдань

Інформацію з бази даних 1С запитують (а потім отримують) за допомогою такого інструменту, як мова запитів (Query, англ.). Вони складаються на латиниці і кирилиці. А одним з ключових слів-команд (операторів) при отриманні інформації є слово-команда ВИБРАТИ (SELECT, англ.) В поєднанні з деякими конструкціями. Наведемо приклади побудови цікавлять нас по темі запитуваних завдань:

Перевірка на вміст NULL

Таке завдання виконується оператором ВИБРАТИ в поєднанні з конструкцією "Є NULL":

SELECT
ЗаказиОстаткі.Заказчік,
ЗаказиОстаткі.КолічествоОстаток
З
РегістрНакопленія.Закази.Остаткі ЯК ЗаказиОстаткі
ДЕ
ЗаказиОстаткі.КолічествоОстаток Є NULL

контроль дати

Порожня дата в запиті 1С вноситься побудовою "ДАТАВРЕМЯ (1, 1, 1, 0, 0, 0)":

SELECT
СчетВходящійПоставщіка.Link,
СчетВходящійПоставщіка.ДатаПріхода
З
Документ. СчетВходящійПоставщіка ЯК СчетВходящійПоставщіка
ДЕ
СчетВходящійПоставщіка.ДатаПріхода = ДАТАВРЕМЯ (1, 1, 1, 0, 0, 0)

посилальна перевірка

Перевірка неіснуючих внутріссилочних значень (на плани рахунків, довідники та ін.) Проводиться з використанням конструкції "VALUE (Справочнік.Імя ... ПустаяСсилка)":

SELECT
ПланСчетов.Ссилка
З
Справочнік.ПланСчетов ЯК ПланСчетов
ДЕ
ПланСчетов = VALUE (Справочнік.ПланСчетов.ПустаяСсилка)

Перевірка рядки

Порожнеча в рядках виявляється із застосуванням пробілу в лапках ":

SELECT
Покупателі.Link
З
Справочнік.Покупателі ЯК Покупці
ДЕ
Покупателі.Код = "

Ще про битих і звичайних линках

"Битою" вважається посилання (Link, англ.), Ведуча (яка вказує) на неіснуючий елемент. Під неіснуючим розуміють такий, якого немає в базі даних. Корисно про таких линках знати хоча б для того, щоб отримувати від системи повідомлення в більш зрозумілій формі. Та й запис, видалення і відкриття нереальних об'єктів не має сенсу.

Платформи 1С не володіють внутрішніми засобами щоб їх відсікти.Ще потрібно розуміти, що поза "битих" в системі живуть спеціальні "порожні лінки", які слід розрізняти одні від інших.
Це можна з'ясувати і без запитів до бази даних:

В системі 1С-7.7

Для "битою" - методом Link.Selected () і функцією ПустоеЗначеніе () повертає нуль. Для "порожній" - в першому випадку нуль, а в другому - одиниця. Для "нормальної" - одиниця і нуль. Виходить, в 1С-7.7 "бита" - не є неіснуючим значенням, яке не зважає обраним.

В системі 1С-8.x

Все по-іншому - в обох випадках (для "битих" і "звичайних") метод повертає Брехня, а функція - Істину. Рішення таке: Для "битою" методом Ссилка.ПолучітьОб'ект () повертається функція "Не визначено". Для "порожній" - викидається "Помилка методу контексту". Для "нормальної" - повертається значення згідно з документацією; Виходить, в 1С-8.х "бита" - не буде неіснуючої функцією засланого типу, яка повертає Невизначений значення об'єкта.

Звідки вони беруться

При переході за неіснуючою адресою битою лінки користувачеві в кращому випадку показано повідомлення про те, що об'єкт не знайдено, в гіршому - зображення сторінки сервера. Найгіршою їх рисою є прихованість.Звідси - складність в перевірці їх коректності. Під час роботи з конфігурацією вона постійно допрацьовується, оновлюється. Якісь об'єкти підлягають видаленню, змінюється структура. А посилання на віддалений елемент залишається в конструкціях і алгоритмах. Таким чином, неіснуючі адреси залишаються в системі після видалення самого елемента (разом з адресою).

У сьогоднішній публікації було розглянуто спеціальне побудова запитів. Наведені приклади конструкцій. Це стане в нагоді вам в роботі при пошуку порожніх значень.

Залишайте свої коментарі.