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