- ПОДОБНО в условиях запроса
- ПОДОБНО в условиях запроса
- Предназначение
- Места использования
- Описание синтаксиса оператора ПОДОБНО
- Точное указание строки
- % — литерал, означающий произвольное количество любых символов
- _ (подчеркивание): литерал, соответствующий одному любому символу
- [] (в квадратных скобках один или несколько символов)
- [^] (в квадратных скобках значок исключения ^, за которым следует один или несколько символов)
- СПЕЦСИМВОЛ — команда для указания в запросе зарегистрированных выше символов
- Применимость в платформах
- Неверные параметры ПОДОБНО >
- НЕ ПОДОБНО в запросе
- Использование ПОДОБНО в запросе
- 1С 8.3 : Оператор ПОДОБНО
- Использование оператора ПОДОБНО в запросе 1С
- Как пользоваться шаблонами в запросах 1С?
ПОДОБНО в условиях запроса
ПОДОБНО в условиях запроса
Рассмотрим назначение и использование условного оператора ПОДОБНО(eng. LIKE) в языке запроса 1С в примерах.
Предназначение
Проверить на соответствие строкового значения в запросе указанному шаблону — возвращает значение Булево-типа (ИСТИНА или ЛОЖЬ).
- Проверка регистро — независима.
- При запросе используются индексы таблиц — не связано с индексами полнотекстового поиска.
- Может долго выполнятся при больших таблицах.
- Строки неограниченной длины следует привести функцией ПОДСТРОКА
Места использования
- В условиях оператора ГДЕ
- В условиях конструкции ВЫБОР КОГДА <> ТОГДА «» ИНАЧЕ «» КОНЕЦ
- В полях выборки (например: Наименование ПОДОБНО &ПараметрПодобно как СтрокаПодходит)
Описание синтаксиса оператора ПОДОБНО
Параметр оператора должен быть строкой: может задаться константой, либо передан как параметр запроса.
Литералы(маски), указанные ниже, допускается использовать совместно и по отдельности.
Точное указание строки
ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО «1»//Равносильно Ключи.Наименование =»1″
Результат:
% — литерал, означающий произвольное количество любых символов
ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО «%»
Результат: любые 10 наименований
_ (подчеркивание): литерал, соответствующий одному любому символу
Пример №1:
ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО «_»
Пример №2: начинающиеся на любой символ, затем следует «1», а дальше любые символы
ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО «_1%»
Результат:
[] (в квадратных скобках один или несколько символов)
- Каждый литерал, соответствующий одному любому символу — используется как ИЛИ.
Допустимо указание диапазона, например a-z,0-5, означающее произвольный символ из заданного диапазона
Пример
ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО «[лз]%»
Результат: 10 начинающихся на «л» или «з»
Пример: начинающиеся на 5,6,7
ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО «7%»
Результат:
[^] (в квадратных скобках значок исключения ^, за которым следует один или несколько символов)
Равносильно любому символу (_) кроме указанных ([])
Пример
ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО «8.[^012]%»//не включаем 8.0,8.1,8.2
Результат: все начинающиеся на «8.» исключая указанные
СПЕЦСИМВОЛ — команда для указания в запросе зарегистрированных выше символов
В качестве служебного символа допустимо использовать как минимум: #,
Пример:
ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО «#_» СПЕЦСИМВОЛ «#»
Результат:
Применимость в платформах
Неверные параметры ПОДОБНО >
- Передается параметр не строкового типа: например число 1 вместо строки «1»
- Сравнивается поле не строкового типа с верной маской (например ссылка) или при соединении значение не проверяется на ЕстьNUL
Обратите внимание на текст ошибки, где выводится вопрос:
>Ключи.Ссылка ПОДОБНО «1»
Ключи.Наименование ПОДОБНО >&L
Реклама — самая интересная и самая трудная форма современной литературы.
Источник
НЕ ПОДОБНО в запросе
Как из найденного исключить эти строки? Может даже не в запросе, совсем потерялась ((( по форуму ничего для себя не нашла, в СП тоже ничего вразумительного(( очень нужна ваша помощь(((
Непонятно почему у меня другие конструкции не работают. Ведь должны бы, вроде.
Вы сначала выведите в запросе
Ведь в ОтражениеЗарплатыВБухучетеНачисленнаяЗарплатаИВзносы.СпособОтраженияЗарплатыВБухучете.Наименование хранятся не номера счетов!
А вот это например «Отражение начислений по умолчанию»
Ну и кроме того очень не понятно, зачем столько параметров у запроса?
Они явно лишние.
(14) у меня так не работает. Ума не дам почему.. Работает вот такая конструкция
ВидОперации СпособОтраженияЗарплатыВБухучете Ссылка
1. Компенсация ежегодного отпуска Отражение зарплаты в бухучете от 28.08.2019
2. Начислено Отражение зарплаты в бухучете от 28.08.2019
3. Доходы в натуральной форме 91.2 Доход в натуральной форме Отражение зарплаты в бухучете от 28.08.2019
4. Начислено Отражение зарплаты в бухучете от 28.08.2019
5. Начислено 71.01 Возмещение подотчетных сумм Отражение зарплаты в бухучете от 28.08.2019
6. Начислено 91.2 Субсидия Отражение зарплаты в бухучете от 28.08.2019
7. Начислено Отражение зарплаты в бухучете от 28.08.2019
8. Начислено Отражение зарплаты в бухучете от 28.08.2019
Вот из этой таблицы нужно вытащить строки с видом операций Компенсация, Начислено, Начислено(сдельно) и Отпуск, не трогая другие виды вообще. Из выбранных нужно исключить строки, в которых Способ отражения начинается на 91 и 71 (использовать точно не могу, т.к много таких способов)
Суть вопроса — почему не работает мой запрос? Нужно в итоге получить 1,2,3,7 и 8 строки. с моей конструкцией все наоборот, только 5 и 6 строки(((
Источник
Использование ПОДОБНО в запросе
Запрос ничего не выбирает. Подскажите, где ошибка.
(1) pjv, а вообще-то по моему запрос правильный, и параметр кажется праивльно передан.
1. Наверно после «Номенклатура = Запрос.Выполнить().Выбрать(); » идет позиционирование выборки т.е. как-то так
Номенклатура = Запрос.Выполнить().Выбрать();
ЕСли Номенклатура.Следующий() тогда
НомСсылка = Номенклатура.Ссылка;
КонецЕСли;
2. Проверь тип реквизита «Артикул» (должно быть строка) и посмотри в отлдадчике чему все-таки равно «СокрЛП(Формат(Ячейка.Value, «ЧГ=»)); «
Но что-то я подозреваю что забыли сделать позиционирование выборки. 🙂
(4) Win98,
Так мой вариант не работает? Не может быть.
Может Вы не скопировали эту строку — в ней тоже изменения:
(11) pjv, все таки еще раз влезу 🙂
переменная «Номеклатура» это не ссылка это результат выборки! Ее еще спозиционировать надо и потом уже получать ссылку. Вобщем 6 пост посмотри
(13) pjv, тогда уж пиши ошибку 🙂 и строку
приведи в нормальное состояние (там ковычки лишние) у тебя в перывом посте нормально все было
1. но у него то все равно 2 кавычки а не три 🙂 да и не нужно это достаточно «%»+Артикул+»%» — в запрос все равно уходит строковая переменная нужного вида. Иначе в запрос уйдет строковая переменная начинающаяся с ковычки — это не правильно (думаю)
2. в любом случае нету позиционирования выборки (или я его не увидел)
Источник
1С 8.3 : Оператор ПОДОБНО
ПОДОБНО — Оператор проверки строки на подобие шаблону. Аналог LIKE в SQL.
Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.
Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки:
• % (процент): последовательность, содержащая любое количество произвольных символов
• _ (подчеркивание): один произвольный символ
• […] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок
В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона.
• [^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания
Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки.
Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать . Сам (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ.
Например, шаблон “%АБВ5[абвг]\_абв%” СПЕЦСИМВОЛ “\” означает подстроку, состоящую из последовательности символов:
буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в.
Причем перед этой последовательностью может располагаться произвольный набор символов.
Примеры использования:
Код 1C v 8.х
Нужно, что бы в «Договора по умолчанию» попадали только Наименования Основной договор и т.д:
Код 1C v 8.х
Источник
Использование оператора ПОДОБНО в запросе 1С
Иногда возникает ситуация, когда в 1С 8.3 или 8.2 нужно сделать выборку, например, из справочника Номенклатура всех элементов, у которых в наименовании имеется слово «глазурь». Или из справочника Контрагенты выбрать всех контрагентов, в фамилии которых встречается слово «Иван». В общем, проверить какое-нибудь строковое значение.
Для этого существует оператор в запросах 1С 8.3 и 8.2 — «Подобно». Используется он, соответственно, в условиях:
Как пользоваться шаблонами в запросах 1С?
Чтобы сформировать условие отбора, в качестве параметра нужно передать некий шаблон. Для создания шаблона существуют так называемые служебные символы.
Например, символ «%» допускает любую последовательность произвольных символов:
Существуют и другие специальные символы:
- % (процент) — допускает любую последовательность произвольных символов;
- _ (нижнее подчеркивание) — любой один символ;
- […] – один произвольный символ из перечисленных внутри скобок. Кроме перечисления символов можно использовать диапазоны. Пример: а-о;
- [^…] – то же самое, что и предыдущее, но наоборот. Знак «^» означает отрицание.
Смотрите также небольшое видео про этот оператор:
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания — попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Источник