1с как найти в запросе пробелы

Как в запросе в строках найти неразрывный пробел?

Я
   a2a4

12.07.19 — 08:03

Как в запросе в строках найти неразрывный пробел?

То есть как в операторе ПОДОБНО указать символ с кодом 160?

   Zmich

1 — 12.07.19 — 08:05

(0). Можно указать нужный шаблон в параметре запроса.

   a2a4

2 — 12.07.19 — 08:11

Извиняюсь. Немного некорректно задал.

В консоли запроса как отобразить. В Инструментах разработчика.

   a2a4

3 — 12.07.19 — 08:16

Нашел способ.

На вкладке «Перед выполнение запроса» строка

мОбъектЗапроса.УстановитьПараметр(параметр,»%»+символ(160)+»%»);

   Сияющий в темноте

4 — 12.07.19 — 08:36

А что символ с кодом 160 просто так не вставляется?

например,из charmap

   Timon1405

5 — 12.07.19 — 08:37

alt+(0160) Numpad не катит что ли?

  

arsik

6 — 12.07.19 — 08:54

Для таких дурней 1С придумало Символы.НПП

TurboConf — расширение возможностей Конфигуратора 1С

Описание

Существует несколько видов взаимодействия со строками в языке запросов 1С: конкатенация, выбор подстроки и сравнение.

Конкатенация

Конкатенация строк в языке запросов реализована с помощью оператора «+«.
Пример:

ВЫБРАТЬ

    «а» + «б» // Результат «аб»

или например сложим две строки, только одну получим из таблицы БД

ВЫБРАТЬ

    «Товар: « + Номеклатура.Наименование  КАК Наименование

Из Справочник.Номенклатура КАК Номеклатура

В результате получим все наименования из справочника Номенклатура, к которым вначале добавилась строка «Товар: «. Например «Товар: Coca-Cola».

или например сложим две строки, только одну строку получим выражением ПРАВ()

ВЫБРАТЬ

     «Товар: » + Выразить(Прав(Номеклатура.Код,1) как строка(1))  КАК Наименование

Из Справочник.Номенклатура КАК Номеклатура

В результате получим сумму строки «Товар: » с последним символом кода номенклатуры.  Например «Товар: 1».

Функции работы со строками

ПОДСТРОКА() 

Функция для работы со строками ПОДСТРОКА позволяет выделить часть строки, указанной длины из исходной строки, начиная с указанной позиции.

Синтаксис функции ПОДСТРОКА:
ПОДСТРОКА(<Строка>, <НачальнаяПозиция>, <Длина>).
Строка — Исходная строка, последовательность символов, слово.
Начальная позиция — Номер первого символа части строки, которую хотим получить в результате. Следует учитывать, что нумерация символов в строке начинается с 1, так же можно использовать и числа меньше 1 для указания начальной позиции, но все они в результате работы функции будут приведены к 1.
Длина — Количество символов после начальной позиции, которые должны попасть в результат.
Пример:

ВЫБРАТЬ

    ПОДСТРОКА(«Привет, мир!», 9, 3) // Результат «мир»

В этом примере мы видим строку «Привет, мир!». Если подсчитать количество символов в ней, то мы можем убедиться что их 12

В функцию ПОДСТРОКА первым параметром мы передали наше строковое значение, вторым параметром указали номер символа — 9, с которого хотим начать часть строки, а третьим параметром указали сколько символов после начала так же должно попасть в результирующую подстроку — 3. В результате выполнения функции платформа вернет нам подстроку «мир». 

Строка()

Функция преобразует в строку значения примитивных типов. При попытке преобразования в строку значения не примитивного типа будет выдана ошибка выполнения запроса. Так же при применении к значению NULL, в результате так же будет NULL.
В качестве примера преобразуем к строке число 42

ВЫБРАТЬ

    СТРОКА(42) // Результат строка «42»

ДлинаСтроки()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция ДлинаСтроки возвращает количество символов в переданной строке в качестве значения.

Пример:

ВЫБРАТЬ

    ДлинаСтроки(«Привет, мир!») // Результат 12

СокрЛ()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция СокрЛ удаляет незначащие символы, которые находятся слева от первого значащего символа в переданном строковом значении. Под незначащими символами понимаются пробелы(обычный, неразрывный), символы табуляции, перевода каретки и т.д.
Пример, в исходной строке есть пробельные символы вначале:

ВЫБРАТЬ

    СокрЛ(»   Привет, мир!») // Результат «Привет, мир!»

СокрП()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

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

ВЫБРАТЬ

    СокрП(«Привет, мир!     «) // Результат «Привет, мир!»

СокрЛП()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция объединяет в себе две другие функции СокрЛ и СокрП, и удаляет незначащие символы стоящие перед первым значащим символом в строке и незначащие символы стоящие после последнего значащего символа в строке. Под незначащими символами понимаются пробелы(обычный, неразрывный), символы табуляции, перевода каретки и т.д.

Пример: в этой строке есть лишние пробелы вначале, середине и в конце. Пробелы слева и справа удалились, но в середине остались.

ВЫБРАТЬ

    СокрЛП(»   Привет,   мир!    «) // Результат «Привет,   мир!»

Лев()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция позволяет получить часть символов из строки, находящихся слева, по переданному количеству символов. 

Синтаксис
Лев (Значение, ЧислоСимволов)

Пример, получим 6 символов с начала строки: 

ВЫБРАТЬ

    Лев(«Привет, мир!», 6) // Результат «Привет»

Прав()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция позволяет получить часть символов из строки, находящихся справа, по переданному количеству символов. 

Синтаксис
Прав(Значение, ЧислоСимволов)

Пример, получим 4 символа с конца строки:

 ВЫБРАТЬ

    Прав(«Привет, мир!», 4) // Результат «мир!»

СтрНайти()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция производит поиск в строке и возвращает номер первого символа найденного вхождение искомой строки. Регистр при поиске не учитывается. Если ничего не найдено, то в результате вернется 0

Синтаксис

СтрНайти(СтроковоеЗначение, ИскомаяСтрока)

Пример:

ВЫБРАТЬ

    СтрНайти(«125435», «3»), // Результат «5»

    СтрНайти(«125435», «6») // Результат «0»

ВРег()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция приводит все буквы содержащиеся в переданной строке в верхний регистр

Пример:

ВЫБРАТЬ

    ВРег(«Привет, мир!») // Результат «ПРИВЕТ, МИР!»

НРег()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция приводит все буквы содержащиеся в переданной строке в нижний регистр

Пример:

ВЫБРАТЬ

    НРег(«Привет, мир!») // Результат «привет, мир!»

СтрЗаменить()

Поддерживается только в платформе 1С версии 8.3.20.1549 и выше

Функция находит в переданном строковом значении все вхождения искомой строки и заменяет их на строку замены. Регистр не учитывается.
Синтаксис

СтрЗаменить(Строка, ПодстрокаПоиска, ПодстрокаЗамены)
 

Пример, заменим все буквы «р», на буквы «л»:

ВЫБРАТЬ

    СтрЗаменить(«Привет, мир!», «р», «л») // Результат «Пливет, мил!»

Сравнение строк

Сравнение строк может происходит с помощью оператора «=«. При сравнении регистр не учитывается.

Пример, сравним две строки:

ВЫБРАТЬ

    «Привет» = «привет» // Результат Истина

Оператор ПОДОБНО 

Предназначен для сравнения строковых выражений с заданным шаблоном. Результатом такой проверки будет «Ложь» или «Истина». Отличие от оператора «=» заключается в возможности использования спецсимволов. Шаблон оператора ПОДОБНО задается с помощью специальных символов:
%(процент) — символ или последовательность символов, имеющая любое количество произвольных символов
_(подчеркивание) — один произвольный символ
[ ] (квадратные скобки) — позволяют указать один или несколько символов, один из которых может содержаться в искомой строке
СПЕЦСИМВОЛ — Позволяет использовать один из перечисленных спецсимволов, в качестве обычного символа, если такой символ имеется в строке. 

Оператор ПОДОБНО можно использовать:

  • В полях выборки, как на примере выше
  • В условии ГДЕ
  • В конструкции ВЫБОР КОГДА

Синтаксис
<Строковое выражение> ПОДОБНО <«Шаблон»>

Пример, определим, что переданное значение является почтовым адресом для хостинга mail.ru, в данной строке первым символом идет нижнее подчеркивание, и потому нам пришлось использовать СПЕЦСИМВОЛ, для того, чтобы иметь возможность описать нашу строку с помощью шаблона: 

ВЫБРАТЬ

    «_test@mail.ru» Подобно «_%@mail.ru» СПЕЦСИМВОЛ «» // Результат Истина

Пример, найдем все элементы справочника Номенклатура, содержащие слово «Фрукт» в названии: 

ВЫБРАТЬ

    Номенклатура.Ссылка КАК Товар

Из Справочник.Номенклатура КАК Номенклатура         

ГДЕ Номенклатура.Наименование ПОДОБНО «%фрукт%»

Результатом будет набор элементов:

Товар
Фруктово-ореховая смесь
Фруктовый сок

В этой статье будут рассмотрены способы проверки на пустое значение в зависимости от типа проверяемого реквизита в , в том числе пустой ссылки.

Значение NULL возвращается в том случае, когда реквизита попросту нет. Тип в этом случае будет тоже NULL. Например, вы объединяете две таблицы через левое соединение. В том случае, когда для левой таблицы не будет найдено ни одного значения в правой, вернется NULL.

Проверку на данное значение можно осуществить при помощи конструкции «ЕСТЬ NULL» и « ». В первом случае возвращается Истина или Ложь. Во втором случае можно сразу задать другое значение в том случае, когда возвращается NULL.

В приведенном ниже запросе 1С 8.3 будут возвращен список контактных лиц тех партнеров, у кого не задан сегмент.

ВЫБРАТЬ
КонтактныеЛицаПартнеров.Ссылка
ИЗ
Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СегментыПартнеров КАК СегментыПартнеров
ПО КонтактныеЛицаПартнеров.Владелец = СегментыПартнеров.Родитель
ГДЕ
СегментыПартнеров.Ссылка ЕСТЬ NULL

Пустая дата

Проверка значения на пустую дату производится путем сравнения с конструкцией ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0). Пример использования приведен ниже:

Пустая ссылка в запросе 1С

В случае, когда возвращаемый реквизит имеет ссылочный тип, например, это элемент какого-либо справочника, документа и т. п., используется следующая конструкция: ЗНАЧЕНИЕ(Справочник.ИмяСправочника.ПустаяСсылка).

В приведенном ниже примере запрос выбирает всех партнеров, у которых не указан бизнес-регион.

Чтобы проверить на «ЗначениеЗаполнено» нужно сделать обратное условие:

Партнеры.БизнесРегион <> ЗНАЧЕНИЕ(Справочник.БизнесРегионы.ПустаяСсылка)

Пустая строка

Для проверки строковых типов производится сравнение с другим образцом. В данном случае – «».

Приведенный ниже запрос отберет всех партнеров с незаполненным наименованием.

Несовместимые типы «ВЫРАЗИТЬ»
— такое сообщение появляется, когда программист 1С 8.2 или 8.3 в пытается сравнить два различных типа.

Функция Выразить() позволяет привести значение поля запроса 1С к определенному типу. Это может понадобиться в двух случаях:

1. Получить нужную разрядность числа или нужное количество символов строкового значения. Количество символов полей неограниченного типа приходится ограничить из-за определенных особенностей.

Получите 267 видеоуроков по 1С бесплатно:

Например:

ВЫРАЗИТЬ(Номенклатура.Комментарий КАК СТРОКА(300))
ВЫРАЗИТЬ(Номенклатура.Цена КАК ЧИСЛО(15, 2)) КАК Сумма

2. Преобразовать поле составного типа в поле с одним типом. Это может понадобиться в целях . Если в типизированное поле попадёт значение другого типа, то система вернёт NULL, поэтому всегда необходимо дополнительно устанавливать условие в секции «ГДЕ», ограничивая его оператором ССЫЛКА.

Например:

ВЫБРАТЬ

ВЫРАЗИТЬ(Продажи.Регистратор КАК Документ.Реализация)

ИЗ

ГДЕ Продажи.Регистратор ССЫЛКА Документ.Реализация

Как избежать ошибок

Ошибки типа «Несовместимые типы ВЫРАЗИТЬ …» могут возникать при неправильном использования синтаксиса.

К примеру, конструкция «ВЫРАЗИТЬ(«123″ КАК ЧИСЛО(5, 2)) КАК Сумма» считается ошибочной, так как в запросе нельзя штатными способами преобразовывать из одного типа в другой.

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте

Остальные рассмотрим сейчас.

Функции работы со строками в запросах 1С

Функций и операторов для работы со строковыми данными в запросах 1С немного.

Во-первых, строки в запросах можно складывать. Для этого используется оператор «+»:

Запрос.
Текст=
«ВЫБРАТЬ
»
«Строка: »
» + Источник.Наименование
;

Во-вторых, можно выделить часть строки. Для этого используется функция ПОДСТРОКА.
Функция аналогична встроенного языка 1С. У нее три параметра:

  1. Строка-источник.
  2. Номер символа, с которого должна начинаться выделяемая строка.
  3. Количество символов.

Запрос.
Текст=
«ВЫБРАТЬ
ПОДСТРОКА(»
«Строка: »
«, 4, 3) КАК Результат»
;
// Результат: ока

Функция ЕСТЬNULL

NULL — особый тип данных на платформе 1С:Предприятие. Он же является единственным возможным значением этого типа. NULL может возникать в запросах в нескольких случаях: при соединениях источников запроса, если не было найдено соответствующего значения в одной из таблиц; при обращении к реквизитам несуществующего объекта; если NULL был указан в списке полей запроса (например при объединении результатов выборки из нескольких таблиц) и т.д.

Поскольку NULL не является ни нулем, ни пустой строкой, ни даже значением Неопределено,
его часто бывает полезно заменять на какой-то более полезный тип данных. Для этого и предназначена функция ЕСТЬNULL.

Она имеет два параметра:

  1. Проверяемое значение.
  2. Значение, на которое нужно заменить первый параметр, если он оказался равен NULL.

Запрос.
Текст=
«ВЫБРАТЬ
ЕСТЬNULL(Источник.Остаток, 0) КАК Остаток»
;
// Если в результате запроса поле остаток=NULL,

// то оно заменится на 0, и с ним можно будет выполнять математические действия

Функции ПРЕДСТАВЛЕНИЕ
и ПРЕДСТАВЛЕНИЕССЫЛКИ

Эти функции предназначены для получения строковых представлений различных значений. То есть, они преобразуют ссылки, числа, булево и т.д. в обычный текст. Разница между ними в том, что функция ПРЕДСТАВЛЕНИЕ
преобразует в текст (строку) любые типы данных, а функция ПРЕДСТАВЛЕНИЕССЫЛКИ
— только ссылки, а остальные значения возвращает как есть, не преобразованными.

Запрос.
Текст=
«ВЫБРАТЬ
ПРЕДСТАВЛЕНИЕ (ИСТИНА) КАК Булево,
ПРЕДСТАВЛЕНИЕ (4) КАК Число,
ПРЕДСТАВЛЕНИЕ (Источник.Ссылка) КАК Ссылка,
ПРЕДСТАВЛЕНИЕ(ДАТАВРЕМЯ(2016,10,07)) КАК Дата»
;

// Булево = «Да», Число = «4», Ссылка = «Документ Расходный кассовый ордер №… от…»

// Дата=»07.10.2016 0:00:00″

Запрос.
Текст=
«ВЫБРАТЬ
ПРЕДСТАВЛЕНИЕССЫЛКИ (ИСТИНА) КАК Булево,
ПРЕДСТАВЛЕНИЕССЫЛКИ (4) КАК Число,
ПРЕДСТАВЛЕНИЕССЫЛКИ (Источник.Ссылка) КАК Ссылка,
ПРЕДСТАВЛЕНИЕССЫЛКИ (ДАТАВРЕМЯ(2016,10,07)) КАК Дата»
;

// Булево = ИСТИНА, Число = 4, Ссылка = «Документ Расходный кассовый ордер №… от…»

// Дата=07.10.2016 0:00:00

Функции ТИП
и ТИПЗНАЧЕНИЯ

Функция ТИП
возвращает тип данных платформы 1С:Предприятие.

Запрос.
Текст=
«ВЫБРАТЬ
ТИП (Число) ,
ТИП (Строка),
ТИП (Документ.РасходныйКассовыйОрдер)»
;

Функция ТИПЗНАЧЕНИЯ
возвращает тип переданного в нее значения.

Запрос.
Текст=
«ВЫБРАТЬ
ТИПЗНАЧЕНИЯ (5) КАК Число,
ТИП (»
«Строчка»
«) КАК Строка,
ТИП (Источник.Ссылка) КАК Справочник
Из Справочник.Источник КАК Источник»
;

//Число=Число, Строка=Строка, Справочник = СправочникСсылка.Источник

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

Запрос.
Текст=
«ВЫБРАТЬ

ИЗ

ГДЕ
ТИПЗНАЧЕНИЯ(КонтактнаяИнформация.Объект) = ТИП(Справочник.Контрагенты)»

;

Функция ЗНАЧЕНИЕ

Функция Значение
позволяет использовать в запросе объекты конфигурации 1С напрямую, без применения .

Дополним предыдущий пример еще одним условием. Необходимо получить только телефоны контрагентов.

Запрос.
Текст=
«ВЫБРАТЬ
КонтактнаяИнформация.Представление
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
ТИПЗНАЧЕНИЯ(КонтактнаяИнформация.Объект) = ТИП(Справочник.Контрагенты)
И КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)»
;

Следует отметить, что эту функцию можно использовать только с предопределенными значениями, т.е. со значениями, к которым можно обратиться напрямую из конфигуратора. То есть функция ЗНАЧЕНИЕ
не можно использоваться с элементами справочников, созданными пользователями, но может работать с перечислениями, с предопределенными элементами справочников, со значениями ПустаяСсылка
.

Оператор ССЫЛКА

Оператор ССЫЛКА
предназначен для проверки значений, получаемых запросом, на принадлежность к определенному ссылочному типу. Эту же задачу можно выполнить с помощью функций ТИП
и ТИПЗНАЧЕНИЯ
(которые имеют более широкую область применения и были рассмотрены выше).

Например, задачу выбора контактной информации контрагентов можно было решить и так:

Запрос.
Текст=
«ВЫБРАТЬ
КонтактнаяИнформация.Представление
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
КонтактнаяИнформация.Объект ССЫЛКА Справочник.Контрагенты»
;

Оператор ВЫРАЗИТЬ

Оператор ВЫРАЗИТЬ
используется в запросах 1С в двух случаях:

  • когда нужно изменить характеристики примитивного типа;
  • когда нужно из поля с составным типом данных сделать поле с одиночным типом.

К примитивным типам данных относятся: число, строка, дата, булево.
Некоторые из этих типов данных имеют дополнительные характеристики. Тип Число
имеет длину и точность, тип Строка —
длину или неограниченность.

Оператор ВЫРАЗИТЬ
позволяет изменять не тип данных, а именно дополнительные характеристики. Например, он может из строки с неограниченной длиной сделать строку с длиной ограниченной. Это бывает полезно, если нужно сгруппировать результаты запроса по такому полю. Выполнять группировку по полям с неограниченной длиной нельзя, поэтому мы его преобразуем в строку с длиной 200 символов.

Запрос.
Текст=
«ВЫБРАТЬ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПоступлениеТоваровУслуг.Ссылка) КАК Ссылка
ИЗ
Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
СГРУППИРОВАТЬ ПО
ВЫРАЗИТЬ(ПоступлениеТоваровУслуг.Комментарий КАК СТРОКА(200))»
;

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

Запрос.
Текст=
«ВЫБРАТЬ
ВЫРАЗИТЬ(ДвижениеТоваровОбороты.Распоряжение КАК Документ.ЗаказКлиента).Дата КАК ДатаЗаказа,
ДвижениеТоваровОбороты.Номенклатура
ИЗ
РегистрНакопления.ДвижениеТоваров.Обороты КАК ДвижениеТоваровОбороты
ГДЕ
ДвижениеТоваровОбороты.Распоряжение ССЫЛКА Документ.ЗаказКлиента»
;

Операторы ВЫБОР
и ЕСТЬ NULL

Оператор ВЫБОР
аналогичен оператору ЕСЛИ
во встроенном языке 1С, но имеет несколько урезанный функционал.

Допустим мы хотим получить контактные данные из регистра сведений КонтактнаяИнформация и при этом в отдельном поле запроса указать, принадлежат ли они контрагенту или физическому лицу.

Запрос.
Текст=
«ВЫБРАТЬ
КонтактнаяИнформация.Представление,
ВЫБОР
КОГДА ТИПЗНАЧЕНИЯ(КонтактнаяИнформация.Объект) = ТИП(Справочник.Контрагенты)
ТОГДА »
Контрагент«
ИНАЧЕ ВЫБОР
КОГДА ТИПЗНАЧЕНИЯ(КонтактнаяИнформация.Объект) = ТИП(Справочник.ФизическиеЛица)
ТОГДА »
ФизЛицо»
ИНАЧЕ »
Кто-
то другой«
КОНЕЦ
КОНЕЦ КАК Владелец
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация»
;

Как видно из примера, в конструкции ВЫБОР
всегда присутствует условие после слова КОГДА;
значение, применяемое, если условие выполняется, после слова ТОГДА
и значение, применяемое, если условие не выполняется, после слова ИНАЧЕ.
Все три элемента конструкции ВЫБОР
являются обязательными. Опустить элемент ИНАЧЕ
, так же, как это делается при использовании оператора ЕСЛИ
во встроенном языке 1С, нельзя. Также у оператора ВЫБОР
отсутствует аналог конструкции ИНАЧЕЕСЛИ
, зато можно вложить один ВЫБОР
в другой, как и было сделано в нашем примере.

Оператор ЕСТЬ NULL
используется в конструкции ВЫБОР
для сравнения поля запроса с типом NULL.

Запрос.
Текст=
«ВЫБРАТЬ
ВЫБОР
КОГДА Значение ЕСТЬ NULL ТОГДА 0
ИНАЧЕ Значение
КОНЕЦ»
;

Кроме того, оператор ЕСТЬ NULL
можно использовать в условиях запроса, например в предложении ГДЕ.

Тип «Строка» встречается во всех языках программирования. Он является примитивным, и в 1С существует много функций для работы с ним. В данной статье мы подробно рассмотрим различные способы работы со строковыми типами в 1С 8.3 и 8.2 на примерах.

Строка

Для того чтобы преобразовать переменную какого-либо типа в строку, существует одноименная функция «Строка()». Входным параметром будет сама переменная, строковое представление которой необходимо получить.

Строка(Ложь) // возвращает «Нет»
Строка(12345) // возвращает «12 345»
Строка(ТекущаяДата()) //»21.07.2017 11:55:36″

Преобразовывать к строке возможно не только примитивные типы, но и остальные, например элементы справочников, документов.

СокрЛП, СокрЛ, СокрП

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

СокрЛП(» Будут удалены пробелы с обеих сторон «) // «Будут удалены пробелы с обеих сторон»
СокрЛ(» Будут удалены пробелы с обеих сторон «) // «Будут удалены пробелы слева »
СокрП(» Будут удалены пробелы с обеих сторон «) // « Будут удалены пробелы справа»

Лев, Прав, Сред

Данные функции позволяют обрезать часть строки. Функция «Лев()» вернет часть строки с ее левой стороны указанной длины. Функция «Прав()» аналогично, но обрезка производится справа. Функция «Сред()» позволяет указать номер символа, с которого будет выделена строка и ее длину.

Лев(«Строковая переменная», 4) // возвращает «Стро»
Прав(«Строковая переменная», 7) // возвращает «еременная»
Сред(«Строковая переменная», 2, 5)// возвращает «троко»

СтрДлина

Функция определяет количество символов, которые содержатся в строковой переменной.

СтрДлина(«Слово «) // результатом выполнения будет число 5

Найти

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

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

Найти(«раз, два, раз, два, три», «два») // функция вернет число 6

ПустаяСтрока

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

ПустаяСтрока(«Пупкин Василий Иванович») // функция вернет значение Ложь
ПустаяСтрока(» «) // функция вернет значение Истина

ВРег, НРег, ТРег

Данные функции очень полезны при сравнении и преобразовании строковых переменных. «Врег()» вернет исходную строку в верхнем регистре, «НРег()» в нижнем, а «ТРег()» отформатирует ее так, что первый символ каждого отдельного слова будет с большой буквы, а все последующие с маленькой.

ВРег(«ГеНераЛьныЙ дИРЕктОр») // возвращаемое значение – «ГЕНЕРАЛЬНЫЙ ДИРЕКТОР»
НРег(«ГеНераЛьныЙ дИРЕктОр») // возвращаемое значение – «генеральный директор»
ТРег(«ГеНераЛьныЙ дИРЕктОр») // возвращаемое значение – «Генеральный Директор»

СтрЗаменить

Данная функция является аналогом замены в текстовых редакторах. Она позволяет подменять один символ или набор символов другим в строковых переменных.

СтрЗаменить(«красный, белый, желтый», «,», «;») // вернет «красный; белый; желтый»

СтрЧислоСтрок

Функция позволяет определить количество строк, разделенных переносом каретке в текстовой переменной.

Цикл, в приведенном ниже примере, пройдет три круга, так как функция СтрЧислоСтрок вернет значение 3:

Для инд=1 по СтрЧислоСтрок(«Строка1» + Символы.ПС + «Строка2» + Символы.ПС + «Строка3») Цикл
<тело цикла>
КонецЦикла;

СтрПолучитьСтроку

Данная функция работает с многострочным текстом так же, как и предыдущая. Она позволяет получить определенную строку из текстовой переменной.

СтрПолучитьСтроку(«Строка1» + Символы.ПС + «Строка2» + Символы.ПС + «Строка3», 2) // вернет «Строка2»

СтрЧислоВхождений

Функция подсчитывает количество вхождений символа или подстроки в искомой строке.

СтрЧислоВложений(«а;б;в;г; «, «;») // функция вернет число 4

Символ и КодСимвола

Эти функции позволяют получать символ по его коду в кодировке Unicode, а так же определять этот код по самому символу.

КодСимвола(«А») // функция вернет число 1 040
КодСимвола(1040) // функция вернет «А»

Частые задачи при работе со строками

Объединение строк

Чтобы объединить несколько строк (произвести конкатенацию) достаточно использовать оператор сложения.

«Строка 1″ + » Строка 2″ //результатом сложения двух строк будет «Строка 1 Строка 2»

Преобразование типов

Для того, чтобы преобразовать тип в строку, например, ссылку на элемент справочника, число и прочее, достаточно использовать функцию «Строка()». Функции, подобные «СокрЛП()» так же будут преобразовывать переменные в строку, но уже сразу с отсечением незначащих символов.

Строка(1000) // вернет «1 000»

Обратите внимание, что при преобразовании числа в строку, программа автоматически добавила пробел, отделяющий тысячу. Для того чтобы этого избежать можно воспользоваться следующими конструкциями:

СтрЗаменить(Строка(1000),Символы.НПП,»») // вернет «1000»

Строка(Формат(1000,»ЧГ=»)) // вернет «1000»

Кавычки в строке

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

Заголовок = Строка(«ООО «»Рога и копыта»» — это мы!») // вернет «ООО «Рога и копыта» — это мы!»

Многострочность, перенос строки

Для того, чтобы создать многострочный текст достаточно добавить в него символы переноса строки (Символы.ПС).

МногострочныйТекст = «Первая строка» + Символы.ПС + «Вторая строка»

Как убрать пробелы

Для того, чтобы убрать пробелы справа или слева можно воспользоваться функцией «СокрЛП()» (а так же «СокрЛ()» и «СокрП()»):

СтрокаБезПробелов = СокрЛП(» Много букв «) // функция вернет значение «Много букв»

Если после преобразования числа в строку вам потребовалось убрать неразрывные пробелы, воспользуйтесь следующей конструкцией:

СтрокаБезПробелов = СтрЗаменить(Строка(99999),Символы.НПП,»») // вернет «99999»

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

СтрокаБезПробелов = СтрЗаменить(« п р и в е т», » » ,»») // вернет «привет»

Сравнение строк между собой

Сравнить сроки можно обычным знаком равенства. При сравнении учитывается регистр.

«Здраствуйте» = «здравствуйте» // вернет Ложь
«Здраствуйте» = «Здравствуйте» // вернет Истина
«Здраствуйте» = «До свидания» // вернет Ложь

Механизмов для работы со строками в запросах 1С мало. Во-первых, строки можно складывать. Во-вторых, от строки можно взять подстроку. В-третьих, строки можно сравнивать, в том числе по шаблону. Вот пожалуй и всё, что можно делать со строками.

Сложение строк

Для сложения строк в запросе используется операция «+». Складывать можно только строки
ограниченной длины.

ВЫБРАТЬ
«Наименование: » + Контрагенты.Наименование КАК Колонка1
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
Контрагенты.Ссылка = &Ссылка

Функция Подстрока

ПОДСТРОКА(<Строка>, <НачальнаяПозиция>, <Длина>)

Аналог функции Сред() из объектной модели. Функция Подстрока() может применяться к данным строкового типа и позволяет выделить фрагмент <Строки>
, начинающийся с символа номер <НачальнаяПозиция>
(символы в строке нумеруются с 1) и длиной <Длина>
символов. Результат вычисления функции имеет строковый тип переменной длины, причем длина будет считаться неограниченной, если <Строка>
имеет неограниченную длину и параметр <Длина>
не является константой или превышает 1024.

Если длина строки меньше, чем указана во втором параметре, то функция вернет пустую строку.

Внимание!
Использование функции ПОДСТРОКА() с целью приведения строк неограниченной длины к строкам ограниченной длины не рекомендуется. Вместо нее лучше использовать операцию приведения типа ВЫРАЗИТЬ().

Функция Подобно

Если нужно убедиться, что строковый реквизит соответствует определённым критериям мы его сравниваем:

ВЫБРАТЬ
Контрагенты.Наименование КАК Колонка1
ИЗ
Справочник.Контрагенты КАК Контрагенты
ГДЕ
Контрагенты.Наименование = «Газпром»

А что, если нужно более хитрое сравнение? Не просто на равенство или неравенство, а на подобие определенному шаблону? Вот как раз для этого и создана функция ПОДОБНО.

ПОДОБНО — Оператор проверки строки на подобие шаблону. Аналог LIKE в SQL.

Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.

Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки:

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

Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки. Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ.

Время на прочтение
4 мин

Количество просмотров 7.7K

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

Введение

Всем привет! В данном материале, я решил, что немного отойду от своего основного профиля — практической разработке и изучения возможностей библиотеке стандартных подсистем (БСП) и затрону работу программиста с языком запросов 1с.

Думаю, что материал данной статьи будет полезен всем разработчикам и программистам, а также все желающим, кто хочет разобраться в элементарных запросах платформы и приобщиться к касте 1с-ников). Так же данный материал подойдет как обычная «напоминалка» для программиста

Статья содержит только практические примеры использования вот этих функций языка запросов 1С — вот они:

    Строка(String) – преобразует в строку.
    Sin, Cos, Tan, ASin, ACos, ATan - тригонометрические функции (в радианах)
    Exp - вычисляет результат возведения основания натурального логарифма (числа e) в степень
    Log - натуральный логарифм числа.
    Log10 - десятичный логарифм числа.
    Pow -  возведение в степень.
    Sqrt – квадратный корень.
    Окр(Round) - округляет число до нужной разрядности
    Цел(Int) - вычисляет целую часть числа, полностью отсекая дробную часть.
    ДлинаСтроки(StringLength) – длина строки.
    СокрЛ(TrimL) – отбрасывает пробелы слева.
    СокрП(TrimR) – отбрасывает пробелы справа.
    СокрЛП(TrimAll) – отбрасывает пробелы слева и справа.
    Лев(Left) – получает первые слева символы строки.
    Прав(Right) – получает первые справа символы строки.
    СтрНайти(StrFind) – находит первую позицию подстроки в строке (без учета регистра).
    ВРег(Upper) – преобразует символы строки в верхний регистр.
    НРег(Lower) – преобразует символы строки в нижний регистр.
    СтрЗаменить(StrReplace) – заменяет все вхождения подстроки на другую подстроку (без учета регистра).
    РазмерХранимыхДанных(StoredDataSize) – размер данных в байтах, которые занимают данные параметра.

Для реализации данных примеров можно использовать типовой конструктор запросов или типовую консоль (из предприятия), 1С: Платформу 8.3.20 и мою любимую конфигурацию «Библиотека стандартных подсистем 3.1» (3.1.7.137), режим совместимости которой я поднял до 8.3.20 (без использования). Условно, я разбил эти функции на 11 групп (по одной или несколько функций близких по смыслу).

Примеры

1.Строка(String):

// с ссылками работать не умеет.
// только с примитивными типами
// ошибки не будет только если применить "Выразить"

ВЫБРАТЬ
	Строка(ВЫРАЗИТЬ(_ДемоНоменклатура.Ссылка.Наименование КАК СТРОКА(100))),
	Строка(_ДемоНоменклатура.Цена) КАК Цена,   // преобразовал число в строку
	Строка(ИСТИНА) КАК АА, // преобразовал булево в строку
	Строка(ДАТАВРЕМЯ(1,1,1)) Как ТекДата // пробразовал дату
ИЗ
	Справочник._ДемоНоменклатура КАК _ДемоНоменклатура

2. Sin, Cos, Tan, ASin, ACos, ATan:

// тригонометрические функции работают исключительно с примитивным типом "число"

ВЫБРАТЬ
	SIN(1) КАК Син1,
	COS(1) КАК Кос2,
	TAN(1) КАК Тан3,
	ASIN(1) КАК АСин1,
	ACOS(0) КАК АКос2,
	ATAN(1) КАК АТан3,
	_ДемоНоменклатура.Ссылка КАК Ссылка
ИЗ
	Справочник._ДемоНоменклатура КАК _ДемоНоменклатура

3. Exp, Log, Log10, Pow и Sqrt:

// данные математические функции в запросе работают только с типом "число"

 ВЫБРАТЬ
	Exp(1) КАК Exp1,   //2.7
	Log(2.718) КАК Log1,   //0.9999
	Log10(10) КАК Log101, // 1
	Pow(3,2) КАК Pow1, // 9
	Sqrt(9) КАК Sqrt1, // 3
	_ДемоНоменклатура.Ссылка КАК Ссылка
ИЗ
	Справочник._ДемоНоменклатура КАК _ДемоНоменклатура

4.Окр(Round) и Цел(Int):

// округление или целое число

ВЫБРАТЬ
	ОКР(13240.345235, -2) КАК Округление,  // 13200 
	ЦЕЛ(13240.345) КАК Цел1,  // 13240

	_ДемоНоменклатура.Ссылка КАК Ссылка
ИЗ
	Справочник._ДемоНоменклатура КАК _ДемоНоменклатура

5. ДлинаСтроки(StringLength):

// здесь определим длину стоки - длина наименования

ВЫБРАТЬ
	ДЛИНАСТРОКИ(_ДемоНоменклатура.Ссылка.Наименование) КАК ДлинаНаименования		
ИЗ
	Справочник._ДемоНоменклатура КАК _ДемоНоменклатура

6. СокрЛ(TrimL), СокрП(TrimR) и СокрЛП(TrimAll):

// запрос убирает пробелы слева, справа, с обеих сторон строки

ВЫБРАТЬ
	СокрЛ(" "+_ДемоНоменклатура.Ссылка.Наименование+" ") КАК УбратьПробелыСлева,
	СокрП(" "+_ДемоНоменклатура.Ссылка.Наименование+" ") КАК УбратьПробелыСправа,
	СокрЛП(" "+_ДемоНоменклатура.Ссылка.Наименование+" ") КАК УбратьПробелы
ИЗ
	Справочник._ДемоНоменклатура КАК _ДемоНоменклатура

7. Прав(Right) и Лев(Left):

// обрезаем строку и выводим результат

ВЫБРАТЬ
	Лев(_ДемоНоменклатура.Ссылка.Наименование,5) КАК Слева5,
	Прав(_ДемоНоменклатура.Ссылка.Наименование,10) КАК Справа10	
ИЗ
	Справочник._ДемоНоменклатура КАК _ДемоНоменклатура

8. СтрНайти(StrFind):

ВЫБРАТЬ
	СтрНайти(_ДемоНоменклатура.Ссылка.Наименование, "коллекция") КАК Нашли1  // номер символа вхождения
ИЗ
	Справочник._ДемоНоменклатура КАК _ДемоНоменклатура

9. ВРег(Upper) и НРег(Lower):

// переводим в заглавные или строчные буквы

ВЫБРАТЬ
	Врег(_ДемоНоменклатура.Ссылка.Наименование) КАК Заглавными,
	Нрег(_ДемоНоменклатура.Ссылка.Наименование) КАК Прописными
ИЗ
	Справочник._ДемоНоменклатура КАК _ДемоНоменклатура

10. СтрЗаменить(StrReplace):

ВЫБРАТЬ
	СтрЗаменить(_ДемоНоменклатура.Ссылка.Наименование, "журнал","газета") КАК Нашли1  // меняем подстроку "журнал" на "газета"
ИЗ
	Справочник._ДемоНоменклатура КАК _ДемоНоменклатура

11. РазмерХранимыхДанных(StoredDataSize):

ВЫБРАТЬ
	РазмерХранимыхДанных(_ДемоНоменклатураПрисоединенныеФайлы.ФайлХранилище) КАК ФайлХранилище // применяю к реквизиту с типом ХранилищеЗначений, хотя можно применить к любому реквизиту (размер в байтах)
ИЗ
	Справочник._ДемоНоменклатура КАК _ДемоНоменклатура
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник._ДемоНоменклатураПрисоединенныеФайлы КАК _ДемоНоменклатураПрисоединенныеФайлы
		ПО _ДемоНоменклатура.ФайлКартинки = _ДемоНоменклатураПрисоединенныеФайлы.Ссылка

Так, ну вроде, все проверено — все работает. При строгой типизации — ошибок в применении не будет.

Выводы статьи

Спасибо за прочтение. В материале представлены практические примеры применения новых функций языка запросов 1с. Эти функции характерны для платформы 1с предприятия версии от 8.3.20. Надеюсь, что вам понравилась данная статья и вы на один шаг приблизились к миру 1С.

На чтение 5 мин. Просмотров 1.2k. Опубликовано 15.12.2019

Программирование системы 13.08.2016 13:39 19401

При работе со строками, для удаления пробелов и других незначащих символов в 1С предусмотрены функции СокрЛ(), СокрП(), СокрЛП().

Содержание

  1. Удалить пробелы справа, слева
  2. Удалить все пробельные символы
  3. Функция ПОДСТРОКА()
  4. Вычисление функции ПОДСТРОКА() на SQL сервере

Удалить пробелы справа, слева

Незначащие символы — это «Пробел», «Неразрывный пробел», «Табуляция», «Возврат коретки», «Перевод коретки», «Перевод строки», «Перевод формы».

Удалить все пробельные символы

Для удаления всех пробельных символов строки можно воспользоваться функцией «СтрЗаменить()». Эта функция позволяет заменить одну подстроку на другую.

При преобразовании числа к строке могут появиться разделители групп числа. Если разделителем групп является символ «Неразрывный пробел», то функцией СтрЗаменить() можно заменить данный символ на пустую строку.

Иногда, приведенные выше примеры не удаляют пробельные символы. Такая ситуация может возникнуть, например, при работе с Excel файлами. Для решения данной задачи можно попробовать заменить Символ(160) на пустую строку.

Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться

Раздел содержит описание особенности выполнения функции ПОДСТРОКА() языка запросов в клиент-серверном варианте работы и вытекающие из нее рекомендации по построению запросов.

Функция ПОДСТРОКА()

В языке запросов 1С:Предприятия функция ПОДСТРОКА() в формате ПОДСТРОКА( , , ) может применяться к данным строкового типа и позволяет выделить фрагмент , начинающийся с символа номер (символы в строке нумеруются с 1) и длиной символов. Результат вычисления функции ПОДСТРОКА() имеет строковый тип переменной длины, причем длина будет считаться неограниченной, если имеет неограниченную длину и параметр не является константой или превышает 1024.

Вычисление функции ПОДСТРОКА() на SQL сервере

В клиент-серверном варианте работы функция ПОДСТРОКА() реализуется при помощи функции SUBSTRING() соответствующего оператора SQL, передаваемого серверу баз данных SQL Server, который вычисляет тип результата функции SUBSTRING() по сложным правилам в зависимости от типа и значений ее параметров, а так же в зависимости от контекста, в котором она используется.

В большинстве случаев эти правила не оказывают влияния на выполнение запроса 1С:Предприятия, однако есть случаи, когда для исполнения запроса существенна максимальная длина строки результата, вычисленная SQL Server. Важно иметь в виду, что в некоторых контекстах использования функции ПОДСТРОКА() максимальная длина ее результата может оказаться равной максимальной длине строки ограниченной длины, которая в SQL Server равна 4000 символам. Это может привести к неожиданному аварийному завершению выполнения запроса.

ВЫБРАТЬ
ВЫБОР
КОГДА Вид = &ЮрАдресФизЛица
ТОГДА ПОДСТРОКА(Представление, 0, 200)
ИНАЧЕ NULL
КОНЕЦ КАК Представление,
ВЫБОР
КОГДА Вид = &ЮрАдресФизЛица
ТОГДА ПОДСТРОКА(Представление, 0, 200)
ИНАЧЕ NULL
КОНЕЦ КАК Представление1
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
УПОРЯДОЧИТЬ ПО
Представление,
Представление1

завершается аварийно с сообщением:

Ошибка СУБД:
Microsoft OLE DB Provider for SQL Server: Warning: The query processor could not produce a query plan from the optimizer because the total length of all the columns in the GROUP BY or ORDER BY clause exceeds 8000 bytes.
HRESULT=80040E14, SQLSTATE=42000, native=8618

Это происходит потому, что вычисленная Microsoft SQL Server максимальная длина строки, которая является результатом выражения:

ВЫБОР
КОГДА Вид = &ЮрАдресФизЛица
ТОГДА ПОДСТРОКА(Представление, 0, 200)
ИНАЧЕ NULL
КОНЕЦ КАК Представление,

равна 4000 символов. Поэтому длина записи, состоящей из двух таких полей превышает 8000 байт, разрешенные для выполнения операции сортировки.

В связи с описанной особенностью исполнения функции SUBSTRING() на SQL Server использование функции ПОДСТРОКА() с целью приведения строк неограниченной длины к строкам ограниченной длины не рекомендуется. Вместо нее лучше использовать операцию приведения типа ВЫРАЗИТЬ() . В частности, приведенный пример можно переписать в виде:

ВЫБРАТЬ
ВЫБОР
КОГДА Вид = &ЮрАдресФизЛица
ТОГДА ВЫРАЗИТЬ(Представление КАК Строка(200))
ИНАЧЕ NULL
КОНЕЦ КАК Представление,
ВЫБОР
КОГДА Вид = &ЮрАдресФизЛица
ТОГДА ВЫРАЗИТЬ(Представление КАК Строка(200))
ИНАЧЕ NULL
КОНЕЦ КАК Представление1
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
УПОРЯДОЧИТЬ ПО
Представление,
Представление1

Недавно понадобилось в запросе получить значение строковых кодов справочника без концевых пробелов. Как вы знаете, в языке запросов нет ничего похожего на функцию СокрЛП(), как же быть?

Можно, конечно, предварительно выполнить вспомогательный запрос, выгрузить его в таблицу значений, перебрать ее в цикле выполняя СокрЛП(), и затем передать обратно в нужный запрос в виде параметра (создать временную таблицу).

Или, если максимальная длина строки, как в случае кода справочника, фиксирована можно написать в запросе громоздкую конструкцию из вложенных конструкций ВЫБОР КОГДА.

Но это неинтересно. Благо на глаза попалась статья ildarovich-а //expert.chistov.pro/public/90367/. Оказалось, что с помощью временой таблицы с числами 0,1,2,3. можно получить много нетривиальных вещей в запросах.

Далее несколько примеров.

Сначала удаление начальных и конечных пробелов, аналог функции СокрЛП(). Заодно мы попутно получаем длину обрезанных строк.

Идея очень простая: ищем первый пробельный символ после которого идет не пробел (учитываем, что первый же символ может быть не пробелом) и последний не пробел после которого идет пробел.

Дополнительно тут используется, что выражение ПОДСТРОКА(СтрокаСПробелами, ЗначениеБольшеДлиныСтроки, 1) возвращает пустую строку, а при сравнении cтандарт SQL говорит, что строки, отличающиеся незначащими символами в хвосте не различаются. В языке запросов 1С сравнение происходит точно так-же. Т.е. для запроса «» = » «.

Теперь выполним разложение строки на слова, используя эту же идею: не пробельный символ, перед которым идет пробел, считаем началом слова, и к нему берем первый не пробельный символ, после которого идет пробел.

Здесь в качестве «пробельных» символов введена вспомогательная таблица с несколькими разделителями. Т.е. мы выполняем разложение строки не по пробелам, а по заданным разделителям.

Решето Эратосфена, выдающее таблицу простых чисел

Степени двойки до 2^106, большие степени не помещаются в 32 знака (не разряда!) числа, которыми оперирует 1С

Запрос, выполняющий точное вычисление квадратного корня числа в диапазоне 0 — 1 048 576, развитие запроса из статьи ildarovich-а (см. ссылку в начале), который вычислял целое значение квадратного корня.

Понравилась статья? Поделить с друзьями:
  • В вайбере дублируются контакты как исправить
  • Как найти местонахождения компании
  • Как составить анкету для ребенка в школу
  • Как найти попутчика для поездки на отдых
  • Как найти радио в телевизоре самсунг