Выбор когда неверные параметры

Рассмотрим назначение и использование условного оператора ПОДОБНО(eng. LIKE) в языке запроса 1С в примерах.

Предназначение

Проверить на соответствие строкового значения в запросе указанному шаблону — возвращает значение Булево-типа (ИСТИНА или ЛОЖЬ).

  • Проверка регистро — независима.
  • При запросе используются индексы таблиц — не связано с индексами полнотекстового поиска.
  • Может долго выполнятся при больших таблицах.
  • Строки неограниченной длины следует привести функцией ПОДСТРОКА

Места использования

  • В условиях оператора ГДЕ
  • В условиях конструкции ВЫБОР КОГДА <> ТОГДА «» ИНАЧЕ «» КОНЕЦ
  • В полях выборки (например: Наименование ПОДОБНО &ПараметрПодобно как СтрокаПодходит)

Описание синтаксиса оператора ПОДОБНО

Параметр оператора должен быть строкой: может задаться константой, либо передан как параметр запроса.

Литералы(маски), указанные ниже, допускается использовать совместно и по отдельности.

Точное указание строки

ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО "1"//Равносильно Ключи.Наименование ="1"

Результат:

% — литерал, означающий произвольное количество любых символов

ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО "%"

Результат: любые 10 наименований

_ (подчеркивание): литерал, соответствующий одному любому символу

Пример №1:

ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО "_"

Пример №2: начинающиеся на любой символ, затем следует «1», а дальше любые символы

ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО "_1%"

Читайте также:  Mobile device service что это

Результат:

[] (в квадратных скобках один или несколько символов)

  • Каждый литерал, соответствующий одному любому символу — используется как ИЛИ.
    Допустимо указание диапазона, например a-z,0-5, означающее произвольный символ из заданного диапазона

Пример

ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО "[лз]%"

Результат: 10 начинающихся на «л» или «з»

Пример: начинающиеся на 5,6,7

ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО "[5-7]%"

Результат:

[^] (в квадратных скобках значок исключения ^, за которым следует один или несколько символов)

Равносильно любому символу (_) кроме указанных ([])

Пример

ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО "8.[^012]%"//не включаем 8.0,8.1,8.2

Результат: все начинающиеся на «8.» исключая указанные

СПЕЦСИМВОЛ — команда для указания в запросе зарегистрированных выше символов

В качестве служебного символа допустимо использовать как минимум: #,

Пример:

ВЫБРАТЬ первые 10
Ключи.Наименование
ИЗ
Справочник.Ключи КАК Ключи
ГДЕ
Ключи.Наименование ПОДОБНО "#_" СПЕЦСИМВОЛ "#"

Результат:

Применимость в платформах

  • 8.0
  • 8.1
  • 8.2
  • 8.3
  • 8.4

Неверные параметры ПОДОБНО >

  • Передается параметр не строкового типа: например число 1 вместо строки «1»
  • Сравнивается поле не строкового типа с верной маской (например ссылка) или при соединении значение не проверяется на ЕстьNUL

Обратите внимание на текст ошибки, где выводится вопрос:

>Ключи.Ссылка ПОДОБНО "1"

Ключи.Наименование ПОДОБНО >&L

Реклама — двигатель торговли: сотня двигает, один торгует.

В "1С:Бухгалтерии 8" одного из клиентов обнаружил невозможность сформировать стандартный отчет "Карточка счета" по некоторым счетам (чуть позже похожее поведение нашел еще в "Карточке субконто" и в "Отчете по проводкам"). Из-за данной периодически возникающей ошибки бухгалтера для работы стали использовать другую версию этого отчета из более ранних редакций конфигурации (когда еще до появления СКД применяли объект "Построитель отчета"). А вообще, если не считать эту тянувшуюся несколько лет ошибку, то в целом в работе системы их больше ничего не беспокоило.

Читайте также:  Горячие клавиши на ноутбуке acer

В конфигурации была включена возможность внесения изменений и моими предшественниками были выполнены некоторые доработки под процессы компании. Но, к моему удивлению, конкретно бухгалтерская отчетность не модифицировалась. Что это – "особенные" настройки? Или результат "кривого" ручного обновления? Неужели ошибка типового функционала, которую за много лет никто не обнаружил?

Поиск причины ошибки

Первое допущение: мои предшественники намудрили с RLS из-за чего возникла ошибка в типовом функционале. Но под полными правами проблема то же воспроизвелась – при попытке сформировать отчет получаю странную картинку с частично сформированной таблицей результата в "поломанном" оформлением и сообщение:

Отчет не сформирован!
Неверные параметры "+"

Вторая гипотеза: вывод отчета формируется программно, а на выводе конкретной строки почему-то вывод сбоит (как вариант, возможно при ручном обновлении были обновили функции из общих модулей, а про их вызов из модулей отчетов забыли). Поиском по верхней части текста ошибки обнаружил место фактического формирования табличного документа штатными механизмами платформы. Ошибка генерировалась уже через несколько секунд после начала выполнения следующей строки кода:

Именно во время выполнения обвернутого в попытку встроенного метода платформы и генерировалось исключение про неверный параметр плюса, который далее перехватывался в блоке обработки исключения и показывался пользователю. Следовательно теперь в поисках причины заинтересовавшей меня ошибки нужно идти в описание схемы компоновки.

Третье подозрение: возможно в схеме есть вызовы общих модулей либо для получения значения параметров отчета, либо для расчета вычисляемых полей, либо для формирования представления. И снова нет – ни единого вызова внешних функций, в которых могла возникнуть ошибка. Следовательно дальнейшие поиски ограничены исключительно схемой.

Вариант с ошибкой в запросе был маловероятным. Но я на всякий случай скопировал запрос в консоль запросов, повторил значения параметров и получил все данные периода. Включая те строки, с которыми система компоновки почему-то не смогла справится. Их анализ чуть позже подсказал причину проблемы и ее решение. Итак, поскольку с источником данных для запроса все было в порядке, то ошибку следует искать при пост-обработке в процессе вывода в макет.

Читайте также:  Видеокарта nvidia geforce gtx 440

Четвертой догадкой стала: проблема с формулами вычисляемых полей. В данном разделе были описано одиннадцать расчетных полей, в трех из которых содержались операции по конкатенации строк с помощью оператора "+". Это были формирование представления документа, а так же описания аналитик по Дебету и Кредиту. Выглядят они во всех типовых (и отраслевых) конфигурациях следующим образом:

29.12.2014
Автоматизация бухгалтерского учета ООО "НАЙСЛЭНД" выполнена сотрудниками фирмы «Сервистренд» на базе ПП «1С:Бухгалтерия 8. ПРОФ»

ПОДРОБНЕЕ

29.12.2014
Автоматизация бухгалтерского учета ЗАО "ЛА ВИНЧИ" выполнена сотрудниками фирмы «Сервистренд» на базе ПП «1С:Комплексная Автоматизация 8»

ПОДРОБНЕЕ

26.09.2019
Новый график вебинаров на ОКТЯБРЬ 2019!
12 новых топовых вебинаров! Сдавайте отчетность легко!
ПОДРОБНЕЕ

Неверный первый параметр Ссылка: Значение должно быть ссылкой или именем предопределенного элемента.

Остались вопросы? Получите бесплатную консультацию наших специалистов!

Ваш заказ успешно отправлен,

наши менеджеры свяжутся

с Вами в ближайшее время

01.11.2019
Акция! Продлевайте ИТС-сопровождение в ноябре – ВЫБИРАЙТЕ и ПОЛУЧАЙТЕ подарки!
Внимание! Акция!
ПОДРОБНЕЕ

29.10.2019
Вышел в свет номер 11 (ноябрь 2019 года) бухгалтерского ежемесячника "БУХ.1С"
Новое в выпуске!
ПОДРОБНЕЕ

28.10.2019
6 декабря – День Бухгалтерии в цирке!
Успейте купить билет на мероприятие года!
ПОДРОБНЕЕ

08.11.2019 22:46:00
Управление нашей фирмой базовая, редакция 1.6
1.6.19.137

08.11.2019 22:45:00
Бухгалтерия предприятия КОРП, редакция 3.0
3.0.74.51

08.11.2019 22:41:00
Бухгалтерия предприятия (базовая для 1), редакция 3.0; 1С:БизнесСтарт
3.0.74.51