ПОДІБНО- Оператор перевірки рядка на зразок шаблону. Аналог LIKE у SQL.
Оператор ПОДІБНОдозволяє порівняти значення виразу, вказаного зліва від нього, з рядком шаблону, вказаним праворуч. Значення виразу має мати рядок. Якщо значення виразу задовольняє шаблон - результатом оператора буде ІСТИНА, інакше - БРЕХНЯ.
Наступні символи у рядку шаблону є службовими і мають сенс, відмінний від символу рядка:
. % (відсоток): послідовність, яка містить будь-яку кількість довільних символів
. _ (підкреслення): один довільний символ
. […] (у квадратних дужках один або кілька символів): будь-який одиночний символ із перелічених усередині квадратних дужок
У перерахуванні можуть зустрічатися діапазони, наприклад, a-z, що означають довільний символ, що входить в діапазон, включаючи кінці діапазону.
. [^…] (у квадратних дужках значок заперечення, за яким слідує один або кілька символів): будь-який одиночний символ, крім тих, які перелічені слідом за значком заперечення
Будь-який інший символ означає сам себе і не несе жодного додаткового навантаження.
Якщо як самого себе необхідно записати один із перелічених символів, то йому має передувати<Спецсимвол>. Сам<Спецсимвол>(будь-який відповідний символ) визначається в цьому ж операторі після ключового слова СПЕЦСИМВОЛ.
Наприклад, шаблон “%АБВ[абвг]\_абв%” СПЕЦСИМВОЛ “\” означає підрядок, що складається з послідовності символів:
літери А; літери Б; літери У; однієї цифри; однією з букв а, б, або г; символ підкреслення; літери а; літери б; літери ст.
Причому перед цією послідовністю може бути довільний набір символів.
Приклади використання:
Код 1C v 8.х Процедура БанкЗакінчення Введення Тексту (Елемент, Текст, Значення, Стандартна Обробка)
Стандартна Обробка = Брехня;
//Робимо запит із пошуком за шаблоном виду "%" +<Текст введенный пользователм в поле ввода> + "%"
Запит = Новий Запит;
Запит.ВстановитиПараметр("Найменування", "%" + Текст + "%");
Запит.Текст = "ВИБРАТИ
| Банки.
|З
| Довідник. Банки ЯК Банки
|ДЕ
| Банки.Найменування ПОДІБНО &Найменування";
Результат = Запит.Виконати();
Вибірка = Результат.Вибрати();
Якщо Результат.Порожній() Тоді
// Нічого не знайшли. Тут можна вивести повідомлення, або ще чогось зробити:)
Інакше
//Отримуємо результати
тзРезультати = Результат.Вивантажити();
//Підготуємо список значень, що міститиме знайдені елементи.
Значення = Новий СписокЗначень();
Значення.ЗавантажитиЗначення(тзРезультати.ВивантажитиКолонку("Посилання"));
КінецьЯкщо;
КінецьПроцедури
Потрібно, щоб у "Договори за умовчанням" потрапляли тільки найменування основного договору і т.д:
Код 1C v 8.х Вибір
Коли Найменування ПОДІБНО "Договір №%" тоді "Договору з номером" // Підходить будь-який рядок, що починається з "Договір №"
Коли Найменування ПОДІБНО "Основний договір%[^А-яЕйо"+Символ(33)+"-"+Символ(126)+"№»«"+Символи.ПС+Символи.Таб+Символи.ПФ+Символи.НПП+ Символи.ВТаб+"]%" тоді "Договори за умовчанням" //Підходить будь-який рядок, що починається з "Основний договір"
Інакше "Інші"
Кінець Як ВидДоговіру
Інформація взята із сайту
43
NULL – відсутні значення. Чи не плутати з нульовим значенням! NULL - це не число, не дорівнює пробілу, порожньому засланні, Невизначено. NULL – типообразующее значення, тобто. Існує тип NULL і єдине значення цього типу. NULL...
26
Для формування та виконання запитів до таблиць бази даних у платформі 1С використовується спеціальний об'єкт мови програмування. Створюється об'єкт викликом конструкції Новий Запит. Запит зручно...
18
У статті наведено корисні прийоми при роботі з запитами 1С v.8.2, а також відомості, які не так добре відомі мовою запитів. Я не прагну дати повний описмови запитів, а хочу зупинитися лише на...
12
Зіткнувся із завданням, потрібно було вибрати всі документи щодо виплати та згрупувати їх за типом документа! Перегорнувши всі ЖКК та інтернет, зрозумів що простого способуотримати Вид документа в запиті немає:(Прийшлось...
Розглянемо призначення та використання умовного оператора ПОДІБНО(eng. LIKE)у мові запиту 1С у прикладах.
швидкий перехід
Призначення
Перевірити на відповідність рядкового значення у запиті вказаному шаблону — повертає значення Бульово-типу (ІСТИНА або БРЕХНЯ).
- Перевірка регістро – незалежна.
- При запиті використовуються індекси таблиць - не пов'язані з індексами повнотекстового пошуку.
- Може довго виконуватись при великих таблицях.
- Рядки необмеженої довжини слід навести функцією ПІДСТРОКУ
Місця використання
- В умовах оператора ДЕ
- В умовах конструкції ВИБІР КОЛИ<>ТОДІ «ІНАЧЕ» КОНЕЦЬ
- У полях вибірки (наприклад: Назва ПОДІБНО &Параметр Подібно як РядокПідходить)
Опис синтаксису оператора ПОДІБНО
Параметр оператора повинен бути рядком: може задатися константою, або передано як параметр запиту.
Літерали (маски), вказані нижче, допускається використовувати разом і окремо.
Точна вказівка рядка
ВИБРАТИ перші 10
Ключі.Найменування
З
Довідник.Ключі ЯК Ключі
ДЕ
Ключі.Найменування ПОДІБНО "1"//Рівносильно Ключі.Найменування ="1"
Результат:
% - літерал, що означає довільну кількість будь-яких символів
ВИБРАТИ перші 10
Ключі.Найменування
З
Довідник.Ключі ЯК Ключі
ДЕ
Ключі.Найменування ПОДІБНО "%"
Результат: будь-які 10 найменувань
_ (підкреслення): літерал, що відповідає одному будь-якому символу
Приклад №1:
ВИБРАТИ перші 10
Ключі.Найменування
З
Довідник.Ключі ЯК Ключі
ДЕ
Ключі.Найменування ПОДІБНО "_"
Приклад №2:що починаються на будь-який символ, потім слідує «1», а далі будь-які символи
ВИБРАТИ перші 10
Ключі.Найменування
З
Довідник.Ключі ЯК Ключі
ДЕ
Ключі.Найменування ПОДІБНО "_1%"
Результат:
(У квадратних дужках один або кілька символів)
- Кожен літерал, що відповідає одному будь-якому символу, використовується як АБО.
Допустимо вказівку діапазону, наприклад a-z,0-5, що означає довільний символ із заданого діапазону
приклад
ВИБРАТИ перші 10
Ключі.Найменування
З
Довідник.Ключі ЯК Ключі
ДЕ
Ключі.Найменування ПОДІБНО "[лз]%"
Результат: 10 починаються на «л» або «з»
Приклад:починаються на 5,6,7
ВИБРАТИ перші 10
Ключі.Найменування
З
Довідник.Ключі ЯК Ключі
ДЕ
Ключі.Найменування ПОДІБНО "%"
Результат:
[^] (у квадратних дужках значок виключення ^, за яким слідує один або кілька символів)
Рівносильно будь-якому символу (_) крім зазначених ()
приклад
ВИБРАТИ перші 10
Ключі.Найменування
З
Довідник.Ключі ЯК Ключі
ДЕ
Ключі.Найменування ПОДІБНО "8.[^012]%"//не включаємо 8.0,8.1,8.2
Результат: всі, хто починається на «8.» крім зазначених
СПЕЦСИМВОЛ — команда для вказівки у запиті зареєстрованих символів
Як службовий символ можна використовувати як мінімум: #,~,/,\
Приклад:
ВИБРАТИ перші 10
Ключі.Найменування
З
Довідник.Ключі ЯК Ключі
ДЕ
Ключі.Найменування ПОДІБНО "#_" СПЕЦСИМВОЛ "#"
Результат:
Застосовність у платформах
Неправильні параметри подібно<>>
- Передається параметр не рядкового типу: наприклад, число 1 замість рядка «1»
- Порівнюється поле не рядкового типу з вірною маскою (наприклад, посилання) або при з'єднанні значення не перевіряється на ЄNUL
Зверніть увагу на текст помилки, де виводиться запитання:
Ключі.Найменування ПОДІБНО<>>&L
Оператор подібно до запиту перевіряє рядкові значення з таблиць на кшталт шаблону.
Використовується наступним чином зліва від цього оператора поміщається рядок, що перевіряється, а справа шаблон.
Після перевірки повертає Істина чи Брехня, відповідно активно використовується в умовах.
Для створення шаблону використовуються такі службові символи:
- % (відсоток) - послідовність, що містить будь-яку кількість довільних символів
- _ (підкреслення) – один довільний символ
- […] (у квадратних дужках один або кілька символів) - будь-який одиночний символ із перелічених усередині квадратних дужок
Крім різних символів можна використовувати діапазони, наприклад a-z(A-z), що означає наявність довільного символу, що входить в діапазон, включаючи кінці діапазону. - [^…] (у квадратних дужках значок заперечення, за яким слідує один або кілька символів) - будь-який одиночний символ, крім тих, які перераховані слідом за значком заперечення
Інші символи використовуються за своїм прямим призначенням.
Якщо символом необхідно передати один із вищевказаних службових символів, то йому повинен передувати<Спецсимвол>. Сам<Спецсимвол>(будь-який відповідний символ) визначається в цьому ж операторі після ключового слова СПЕЦСИМВОЛ.
Наприклад, шаблон "%АБВ[абвг]\_абв%" СПЕЦСИМВОЛ "\" означає підрядок, що складається з послідовності символів:
літери А; літери Б; літери У; однієї цифри; однією з букв а, б, або г; символ підкреслення; літери а; літери б; літери ст.
Причому перед цією послідовністю може бути довільний набір символів.
Процедура ВибратиДоговірУтримуєВНайменуванніТекст(мТекст)
//У запиті будемо використовувати шаблон виду "%" + мТекст + "%" Запит = Новий Запит; Запит.ВстановитиПараметр("Найменування", "%" + Текст + "%"); Запит.Текст = "ВИБРАТИ | Договори.Посилання, | Договори.Власник |З | Довідник.ДоговориКонтрагентів ЯК Договори | |ДЕ | Договори.Найменування ПОДІБНО &Найменування"; Результат = Запит.Виконати(); Вибірка = Результат.Вибрати(); Повідомити("Договори, що містять в найменування: " + мТекст + " мають наступні Контрагенти"); Поки Вибірка.Наступний() Цикл Повідомити("Контрагент: " + Вибірка.Власник + "; Договір: " + Вибірка.Посилання КінецьЯкщо; КінецьПроцедури
Іноді виникає ситуація, коли в 1С 8.3 або 8.2 потрібно зробити вибірку, наприклад, з довідника всіх елементів, у яких найменування є слово «глазурь». Або із довідника вибрати всіх контрагентів, у прізвищі яких зустрічається слово «Іван». Загалом, перевірити якесь рядкове значення.
Для цього існує оператор у запитах 1С 8.3 та 8.2 – «Подібно». Використовується він, відповідно, в умовах:
Отримайте 267 відеоуроків з 1С безкоштовно:
Як користуватись шаблонами у запитах 1С?
Щоб сформувати умову відбору, як параметр потрібно передати якийсь шаблон. Для створення шаблону є так звані службові символи.
Наприклад, символ % допускає будь-яку послідовність довільних символів:
Існують інші спеціальні символи:
- % (відсоток) – допускає будь-яку послідовність довільних символів;
- _ (нижнє підкреслення) - будь-який один символ;
- […] – один довільний символ із перелічених усередині дужок. Крім переліку символів, можна використовувати діапазони. Приклад: а-про;
- [^…] – те саме, що й попереднє, але навпаки. Знак «^» означає заперечення.