Зміст
В 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.х «бита» — не буде неіснуючої функцією засланого типу, яка повертає Невизначений значення об’єкта.
Звідки вони беруться
При переході за неіснуючою адресою битою лінки користувачеві в кращому випадку показано повідомлення про те, що об’єкт не знайдено, в гіршому — зображення сторінки сервера. Найгіршою їх рисою є прихованість. Звідси — складність в перевірці їх коректності. Під час роботи з конфігурацією вона постійно допрацьовується, оновлюється. Якісь об’єкти підлягають видаленню, змінюється структура. А посилання на віддалений елемент залишається в конструкціях і алгоритмах. Таким чином, неіснуючі адреси залишаються в системі після видалення самого елемента (разом з адресою).
У сьогоднішній публікації було розглянуто спеціальне побудова запитів. Наведені приклади конструкцій. Це стане в нагоді вам в роботі при пошуку порожніх значень.
Залишайте свої коментарі.