Використання подібно до запиту 1с 8.3. Подібно до умов запиту. Невірні параметри подібні

Оператор подібнодозволяє порівняти у запиті дані рядкового типу, що знаходяться зліва від оператора з даними рядкового типу, що знаходяться праворуч від оператора. Результат порівняння приймає значення "Істина" або "Брехня", таким чином порівняння можна застосовувати у вигляді умови.

Для оператора подібнопередбачені спеціальні службові символи, які не сприймаються як рядок:

  • "%" символ відсотка: позначає наявність у рядку будь-якої кількості довільних символів
  • "[...]" один або кілька символів у квадратних дужках: позначає наявність будь-якого (одинакового) із перелічених символів. Також може бути вказаний діапазон символів (наприклад )
  • "_" символ підкреслення: означає наявність будь-якого довільного символу
  • "[^...]" символ заперечення: означає наявність будь-якого одиночного символу, крім зазначених у квадратних дужках
Якщо необхідно для порівняння вказати один із перерахованих спецсимволів, необхідно скористатися ключовим словом"СПЕЦСИМВОЛ"

Особливості використання з різними СУБД

IBM DB2" Праворуч від оператора ПОДІБНО може розташовуватися лише параметр. Шаблонні символи тільки "_" (підкреслення означає будь-який символ) і "%" (відсоток що означає послідовність будь-яких символів).
У разі використання СУБД " PostgreSQL" або " Oracle Database" спецсимволи " квадратні дужки [...] " сприймаються лише якщо вказані текстом у запиті, а НЕ передаються параметром в запит.

Таким чином, у файловій базі спецсимволи завжди сприйматимуться однаково, і по-різному в залежності від використовуваної СУБД у клієнт-серверному варіанті.

Приклад: вибрати товари, що містять у найменуванні символ "%"

ВИБРАТИ | Посилання Посилання | З | Довідник.Номенклатура ЯК Спр |ДЕ | Спр.Найменування ПОДІБНО "%\%" СПЕЦСИМВОЛ "\"

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

ВИБРАТИ | Посилання Посилання | З | Довідник.Номенклатура ЯК Спр |ДЕ | Спр.Найменування подібно "Бак%"

Приклад: вибрати товари, найменування яких закінчується цифрою

ВИБРАТИ | Посилання Посилання | З | Довідник.Номенклатура ЯК Спр |ДЕ | Спр.Найменування ПОДІБНО "%"

Оператор подібно до запиту перевіряє рядкові значення з таблиць на зразок шаблону.
Використовується наступним чином зліва від цього оператора поміщається рядок, що перевіряється, а справа шаблон.

Після перевірки повертає Істина або Брехня, що відповідно активно використовується в умовах.
Для створення шаблону використовуються наступні службові символи:

  • % (відсоток) – послідовність, що містить будь-яку кількість довільних символів
  • _ (підкреслення) – один довільний символ
  • […] (у квадратних дужках один або кілька символів) - будь-який одиночний символ із перелічених усередині квадратних дужок
    Також крім різних символів можна використовувати діапазони, наприклад, a-z(A-z), що означає наявність довільного символу, що входить в діапазон, включаючи кінці діапазону.
  • [^…] (у квадратних дужках значок заперечення, за яким слідує один або кілька символів) - будь-який одиночний символ, крім тих, які перераховані слідом за значком заперечення

Інші символи використовуються за своїм прямим призначенням.
Якщо як символ необхідно передати один із вищезгаданих службових символів, то йому повинен передувати<Спецсимвол>. Сам<Спецсимвол>(будь-який відповідний символ) визначається в цьому ж операторі після ключового слова СПЕЦСИМВОЛ.
Наприклад, шаблон "%АБВ[абвг]\_абв%" СПЕЦСИМВОЛ "\" означає підрядок, що складається з послідовності символів:
літери А; літери Б; літери У; однієї цифри; однією з букв а, б, або г; символ підкреслення; літери а; літери б; літери ст.
Причому перед цією послідовністю може бути довільний набір символів.

Процедура ВибратиДоговірУтримуєВНайменуванніТекст(мТекст)
//У запиті будемо використовувати шаблон виду "%" + мТекст + "%" Запит = Новий Запит; Запит.ВстановитиПараметр("Найменування", "%" + Текст + "%"); Запрос.Текст = "ВИБРАТИ | Договори. Посилання, | Договори. Власник | З | Довідник. Договори Контрагентів ЯК Договори | | ДЕ | Договори. Результат = Запрос.Выполнить(); Вибірка = Результат.Вибрати(); Повідомити("Договори, що містять в найменування: " + мТекст + " мають наступні Контрагенти"); Поки Вибірка.Наступний() Цикл Повідомити("Контрагент: " + Вибірка.Власник + "; Договір: " + Вибірка.Посилання КінецьЯкщо; КінецьПроцедури

Незважаючи на всі недоліки, пошук по текстовому полю досі є одним із найпопулярніших. Строкові типи даних ми можемо зустріти повсюдно – найменування, номери рахунків, адреси, і навіть інша інформація може зберігатися у цьому форматі. У запитах вбудованою мовою 1С для зручності розробників використовується спеціальний оператор «ПОДІБНО». Це одна з найуживаніших команд, тому без досконалого знання її синтаксису та можливостей програмісту буде складно працювати.

Використання оператора «ПОДІБНО»

Перед тим, як застосовувати якийсь оператор на практиці, потрібно чітко зрозуміти його призначення, місця застосування та синтаксис. Метою використання «Подібно» у запиті 1С є перевірка задоволення умові, представленому як шаблона. Повертається значенням є логічний тип - істина або брехня, що демонструє чи виконується задана умова. Використання оператора подібно може в декількох місцях запиту:

  • У блоці умов, позначеному ключовим словом «ДЕ»;
  • У конструкції Вибір Коли Тоді Інакше Кінець;
  • Безпосередньо у полях вибірки, як наслідок порівняння полів.

Синтаксис перевірки завжди однаковий і складається з трьох ланок. Зліва текстове значення, яке перевіряється, потім безпосередньо сам оператор «ПОДІБНО», а праворуч – шаблон, яким іде перевірка. Для швидкого та зручного складання шаблонів існують спеціальні символи, що полегшують розробку:

  1. "%" - Послідовність будь-яких символів довільної довжини. Використовується для пошуку окремих слів чи цифр у рядку;
  2. "_" - будь-який одиничний символ. Призначений позначення наявності одного знака;
  3. «[…]» – послідовність символів для порівняння зі знаком у рядку. За допомогою подібного шаблону перевіряється відповідність будь-якому з перерахованих у дужках знаків. Також можна встановити діапазон цифр або літер ([а-г], );
  4. "[^…]" - протилежний попередньому шаблон. Перевіряється відмінність зазначеного у рядку символу від перерахованих у дужках.

Щоб краще засвоїти і зрозуміти принципи складання вірних шаблонів, розглянемо деякі приклади, що часто зустрічаються в житті розробників. Перше, коли нам необхідно вибрати з довідника номенклатури всі позиції, у найменуваннях яких зустрічається слово «РЕЗЕЦЬ». У цьому випадку нам необхідно використовувати подібно до умов запиту:

ВИБРАТИ Номенклатура.Найменування ЯК Найменування З Довідник.Номенклатура ЯК Номенклатура ДЕ Номенклатура.Найменування ПОДІБНО "%РЕЗЕЦЬ%"

Якщо ми приберемо обидва символи «%», запит покаже номенклатуру, у якої найменування повністю збігається із зазначеним у лапках. Якщо залишимо шаблон «РЕЗЕЦЬ%» або «%РЕЗЕЦЬ», то результатом буде список номенклатури, що закінчується або починається відповідно на задану комбінацію символів.


Розберемо завдання, яке може поставити в безвихідь програмістів-початківців, які не знають синтаксис запитів. Допустимо, вам потрібно знайти всю номенклатуру, у найменуванні якої є символ %. Спеціально для випадків, коли потрібно вести пошук зарезервованих символів, існує оператор спецсимвол. Як спецсимвол можна використовувати #,\,/,~ та інші знаки, після яких будь-які зарезервовані символи позначатимуть просто знак.

ВИБРАТИ Номенклатура.Найменування ЯК Найменування З Довідник.Номенклатура ЯК Номенклатура ДЕ Номенклатура.Найменування ПОДІБНО "%#%" СПЕЦСИМВОЛ "#"

Якщо вам потрібно в пошуку використовувати параметр, змінна в запиті з параметром подібно використовується за допомогою додавання. Пам'ятайте, що параметр має бути рядкового типу або потрібно перевести його в рядок у запиті. Це досить складна операція і краще виключити її заздалегідь.

ВИБРАТИ Номенклатура.Найменування ЯК Найменування З Довідник.Номенклатура ЯК Номенклатура ДЕ Номенклатура.Найменування ПОДІБНО "%" + &найменування + "%"

Функція подібно застосовна у всіх версіях платформи, починаючи з 8, і через її застосування розробники 1С не захочуть її міняти. Звичайно, текстовий пошук завжди залежить від точності введення найменування, але він все одно залишається одним із найпоширеніших. У зв'язку з цим професійним розробникам 1С необхідно вивчити використання подібно до всіх його нюансів.

43
NULL – відсутні значення. Чи не плутати з нульовим значенням! NULL - це не число, не однаково пробілу, порожнім посиланням, невизначено. NULL – типообразующее значення, тобто. є тип NULL і єдине значення цього. NULL... 26
Для формування та виконання запитів до таблиць бази даних у платформі 1С використовується спеціальний об'єкт мови програмування. Створюється об'єкт викликом конструкції Новий Запит. Запит зручно... 18
У статті наведено корисні прийоми при роботі з запитами 1С v.8.2, а також відомості, які не так добре відомі мовою запитів. Я не прагну дати повний описмови запитів, а хочу зупинитися лише на... 12
Зіткнувся із завданням, потрібно було вибрати всі документи з виплати та згрупувати їх за типом документа! Перегорнувши всі ЖКК та інтернет, зрозумів що простого способуотримати Вид документа у запиті немає:(Довелося...