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. Мы работаем в Москве и области.

Источник

Оцените статью