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

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

Виявлення нульових даних

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

Мова завдань

Інформацію з бази даних 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.х «бита» — не буде неіснуючої функцією засланого типу, яка повертає Невизначений значення об’єкта.

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

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

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

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

Ссылка на основную публикацию
Adblock
detector