Строка — один из примитивных типов данных в системах 1С:Предприятие 8. Переменные с типом строка содержат текст.
Значения переменных типа строка заключаются в двойные кавычки. Несколько переменных данного типа можно складывать.
Пер1
=
"Слово 1"
;
Пер2
=
"Слово 2"
;
Пер3
=
Пер1
+
" "
+
Пер2
;
В итоге Пер3 будет иметь значение «Слово 1 Слово 2″.
Кроме того, в системах 1С:Предприятие 8 предусмотрены функции для работы со строками. Рассмотрим основные:
ВвестиСтроку(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — функция предназначена для вывода диалогового окна, в котором пользователь может указать значение переменной типа Строка . Параметр <Строка> является обязательным и содержит имя переменной, в которую будет записана введенная строка. Параметр <Подсказка> необязательный — это заголовок диалогового окна. Параметр <Длина> необязательный, показывает максимальную длину вводимой строки. По умолчанию равен нулю, что означает неограниченную длину. Параметр <Многострочность> необязательный. Определяет режим ввода многострочного текста: Истина — ввод многострочного текста с разделителями строк; Ложь — ввод простой строки.
Строку можно ввести и, зная код символа в кодировке Unicode:
Символ(<КодСимвола>) — код вводится в виде числа.
Буква= Символ(1103 ) ; // Я
Существует и обратная функция, позволяющая узнать код какого-либо символа.
КодСимвола(<Строка>, <НомерСимвола>) — возвращает номер указанного символа в кодировке Unicode в виде числа.
Функции преобразования регистра текста:
ВРег(<Строка>) — преобразует все символы строки в верхний регистр.
НРег(<Строка>) — преобразует все символы строки в нижний регистр.
ТРег(<Строка>) — преобразует все символы строки в титульный регистр. То есть первые буквы во всех словах преобразуется в верхний регистр, а остальные буквы — в нижний.
Функции поиска и замены символов в строке:
Найти(<Строка>, <ПодстрокаПоиска>) — находит номер символа вхождения подстроки поиска. Например:
Найти ("Строка" , "ока" ) ; // 4
СтрНайти(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — находит номер символа вхождения подстроки поиска, номер вхождения указывается в соответствующем параметре. При этом поиск начинается с символа, номер которого указан в параметре НачальнаяПозиция. Поиск возможен с начала или с конца строки. Например:
Номер4 Вхождения= СтрНайти ("Обороноспособность" , "о" , НаправлениеПоиска. СНачала, 1 , 4 ) ; // 7
СтрЗаменить(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) – находит в исходной строке все вхождения подстроки поиска и заменяет ее на подстроку замены.
СтрЗаменить ("Строка" , "ока" , "" ) ; // Стр
ПустаяСтрока(<Строка>) – проверяет строку на наличие значащих символов. Если значащих символов нет, или вообще никаких символов нет, то возвращается значение Истина . В противном случае — Ложь .
СтрЧислоВхождений(<Строка>, <ПодстрокаПоиска>) – вычисляет число вхождений подстроки поиска в исходной строке.
СтрЧислоВхождений ("учиться, учиться и еще раз учиться" , "учиться" , "" ) ; // 3
СтрШаблон(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — подставляет параметры в строку по номеру. Строка должна содержать маркеры подстановки вида: «%1..%N». Нумерация маркеров начинается с 1. Если значение параметра Неопределено , подставляется пустая строка.
СтрШаблон ("Параметр 1 = %1, Параметр 2 = %2" , "1" , "2" ) ; // Параметр 1= 1, Параметр 2 = 2
Функции преобразования строк:
Лев(<Строка>, <ЧислоСимволов>) – возвращает первые сначала символы строки.
Прав(<Строка>, <ЧислоСимволов>) – возвращает последние символы строки.
Сред(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) – возвращает строку длиной в <ЧислоСимволов>, начиная с символа <НачальныйНомер>.
СокрЛ(<Строка>) — отсекает незначащие символы, стоящие слева от первого значащего символа в строке.
СокрП(<Строка>) — отсекает незначащие символы, стоящие справа от последнего значащего символа в строке.
СокрЛП(<Строка>) – отсекает незначащие символы, стоящие слева от первого значащего символа в строке и справа от последнего значащего символа в строке.
СтрПолучитьСтроку(<Строка>, <НомерСтроки>) – получает строку многострочной строки по номеру.
Прочие функции:
СтрДлина(<Строка>) – возвращает количество символов в строке.
СтрЧислоСтрок(<Строка>) – возвращает число строк в многострочной строке. Строка считается новой, если она отделена от предыдущей символом перевода строки.
СтрСравнить(<Строка1>, <Строка2> ) – сравнивает две строки без учета регистра. Функция работает аналогично объекту СравнениеЗначений . Возвращает:
- 1 — если первая строка больше второй
- -1 — если вторая строка больше первой
- 0 — если строки равны
СтрСравнить("Первая строка" , "Вторая строка" ) ; // 1
Главная Заметки из Зазеркалья07.02.2013 Поиск по строке
Реализовано в версии 8.3.3.641.
Мы серьёзно улучшили ввод по строке. Для этого нам пришлось реализовать новый мощный механизм поиска в поле ввода. Теперь он может быстро работать по миллионам записей, содержащихся в базе данных.
Мы проанализировали задачи поиска, возникающие у пользователей. Провели "ревизию" имеющихся в платформе механизмов, которые используют различные алгоритмы поиска. В результате ввод по строке приобрёл качественно новые возможности.
Теперь пользователи могут искать в любом месте названия, а не только по началу строки. Они могут использовать при этом полнотекстовый поиск и даже выполнять поиск с помощью фонового задания. Для того чтобы полнотекстовый поиск эффективно работал при вводе по строке, мы дополнительно оптимизировали этот механизм поиска и повысили его производительность.
Все новые свойства, позволяющие настраивать ввод по строке, мы собрали на отдельной закладке окна редактирования объекта конфигурации:
Например, вы можете указать, что поиск будет выполняться в любом месте строки, а не только в её начале:
Тогда пользователь может набирать любые фрагменты слов, а не только те символы, с которых начинается искомая строка:
Использование полнотекстового поиска при вводе по строке включается отдельным свойством:
С помощью полнотекстового поиска пользователи могут среди больших объёмов данных быстро находить подходящие данные по любому из слов, содержащихся, например, в наименовании:
Также они могут искать и по нескольким известным словам. Незаконченные слова будут автоматически дополняться возможными сочетаниями:
Если объём данных велик, то в обоих случаях вы можете указать, что поиск должен выполняться с помощью фонового задания:
Тогда рядом с полем ввода для пользователей будет отображаться анимированная картинка, похожая на картинку, которая отображается при фоновом выполнении отчета:
- если в объекте, который используется в поле ввода, не ожидается большого количества данных, то мы советуем включить поиск строки в любом месте;
- если в объекте планируется большое количество данных, то:
- мы советуем включить полнотекстовый и фоновый поиск;
- при этом вы также можете использовать поиск строки в любом месте, но совместно с фоновым поиском и желательно с полнотекстовым поиском; чтобы большая часть поисков выполнялась через полнотекстовый поиск.
Все перечисленные свойства вы можете, при необходимости, переопределить в процессе выполнения прикладного решения.
На клиенте - в клиентских обработчиках событий поля ввода АвтоПодбор и ОкончаниеВводаТекста :
На сервере - в модуле менеджера того объекта, в данных которого выполняется поиск. В обработчике события ОбработкаПолученияДанныхВыбора :
Естественно, в этом месте, на сервере, нельзя переопределить способ выполнения поиска "Непосредственно" или "Фоновым заданием" . Потому что исполнение кода уже передано на сервер.
В данной статье я расскажу вам про функцию быстрого поиска 1С Предприятие 8. Что такое быстрый поиск? Очень просто. Быстрый поиск — это один из способов навигации в больших списках записей 1С. Это могут быть списки документов, справочники , регистры — все то, что представлено таблицами.
Что такое быстрый поиск?
Функция быстрого поиска в документах 1С Предприятие чрезвычайно удобна и позволяет не пролистывать огромные массивы данных (к примеру, с помощью полосы прокрутки), а сразу перейти к нужному месту в списке. К сожалению, начинающие пользователи 1С Предприятие 8 (в том числе и 1С Бухгалтерии 8) поначалу не используют возможности быстрого поиска, предпочитая листать списки документов вручную (а они могут быть очень большими). Данная статья поможет вам разобраться с использованием быстрого поиска в 1С.
Прежде всего следует заметить, что в конфигурациях 1С Предприятие 8, построенных на управляемых формах , быстрый поиск работает иначе, чем в предыдущих версиях 1С. Поэтому разберем отдельно использование быстрого поиска в управляемых формах и в обычных.
Быстрый поиск в 1С Бухгалтерии 8.2
В версиях 1С Бухгалтерии с 8.0 по 8.2 функция предназначена именно для перехода к нужной части списка. Для примера посмотрите на окно плана счетов , приведённое на рисунке.
В окне выделена некоторая строка. Обратите внимание малозаметный треугольник из полосок, на который указывает красная стрелка. Как и в других программах Windows, где есть списки (например, в Проводнике), положение этого маркера (треугольника) определяет сортировку списка в целом — в какой колонке установлен маркер, по той и будет отсортирован весь список. На рисунке маркер стоит в колонке Код , следовательно счета в плане счетов будут отсортированы по коду.
Маркер можно перемещать с одной колонки на другую, щёлкая на нужной колонке (на ЗАГОЛОВКЕ колонки! ) мышкой. Если маркер и так уже стоит в текущей колонке, то щелчок приведет к изменению направления сортировки на противоположное (т.е. от большего к меньшему или наоборот). Это стандартное поведение для любых программ Windows. В чем же особенность этого маркера в 1С Предприятии и как это связано с быстрым поиском?
Быстрый поиск в списках 1С Предприятие 8 осуществляется по колонке, в которой стоит маркер. В данном случае быстрый поиск в плане счетов будет осуществляться по колонке Код.
Тут была важная часть статьи, но без JavaScript её не видно!
Как пользоваться быстрым поиском в 1С? Легко! Просто начните печатать то, что хотите найти в ДАННОЙ колонке , т.е. там, где стоит маркер. В примере на рисунке выше следует вводить номер счета. Например, вы хотите найти счет 50 Касса . В таком случае введите (мышкой щелкать никуда не нужно! ) число 50 с клавиатуры и если в данной колонке есть счет с таким номером (а он, конечно, есть), то список прокрутится до этой строки, а сама строка окажется выделенной. Результат показан на скриншоте плана счетов ниже.
сайт_Текст, на который указывает стрелка, стирать потом не нужно — он сам исчезнет.
Если в приведенном примере начать вводить слово "Касса", то текст в нижней части окна будет вводится, а затем стираться. Происходит это потому, что как только начало вводимой строки быстрого поиска перестает совпадать с началом хотя бы одной строки в данной колонке, 1С Предприятие делает вывод, что искомая строка не найдена и автоматически её стирает. В связи с этим следует запомнить два правила .
В 1С Предприятии 8 быстрый поиск производится по началу строки, т.е. в колонке ищется совпадение вводимого текста с началом одной из строк этой колонки.
Отсюда вытекает важная рекомендация: при вводе данных в справочники именуйте элементы так, чтобы их было удобно искать при помощи быстрого поиска. Например, название контрагента лучше писать как "ИмяФирмы ООО", чем "ООО ИмяФирмы". И тем более не стоит использовать в названии кавычки и прочие ненужные символы (речь идет о заполнении поля Наименование в формах).
Если вы начали вводить текст, а он стирается — то, что вы ищете, отсутствует в данной колонке! В этом случае проверьте язык ввода, а также колонку в которой производится быстрый поиск. Типичная ошибка — выбрана не та колонка. Например, маркер установлен в колонке Код, а поиск производится по названию счета.
Быстрый поиск в 1С Бухгалтерии 8.3
Теперь посмотрим, чем отличается быстрый поиск в версии 1С Предприятие 8.3 . Использование во многом схоже с версией 8.2, однако есть одно существенное отличие, которое следует запомнить.
В 1С Бухгалтерии 8.3, а также в любых других конфигурациях на управляемых формах (тот самый новый интерфейс), работает как фильтр. Проще говоря, в результате работы функции быстрого поиска часть списка скрывается .
Как этим пользоваться, мы с вами сейчас выясним. Для начала посмотрите на скриншот окна плана счетов 1С Бухгалтерии 8.3, приведенный ниже.
сайт_Как видите, тот же самый маркер в одной из колонок. Поиск так же производится по колонке, в которой установлен маркер. Это всё осталось без изменений. Однако, если начать вводить текст (в примере - номер счета), то произойдет следующее.
сайт_Как видите, просто автоматически открылось окно поиска. Такое же точно окно откроется, если нажать на кнопку поиска на панели инструментов окна (на рисунке подчеркнута). В результате при нажатии в окне поиска кнопки Найти (на картинке скрыта за выпадающим меню) или просто Enter, то получиться следующий результат.
сайт_Отсюда видно, что быстрый поиск в 1С Бухгалтерии 8.3 просто оставляет видимой часть списка, удовлетворяющую условиям поиска. При этом кнопка Найти пропадает, а вместо неё появляется линза с крестиком (на рис. подчеркнута), при нажатии на которую список возвращается в исходное состояние (при этом остаётся выделена строка, найденная в результате быстрого поиска).
Еще одна важная особенность быстрого поиска в 1С Бухгалтерии 8.3 — совпадение ищется не по началу строки, как в версии 8.2, а производится поиск на совпадение с любой частью строк в колонке. Таким образом, если контрагента назвать "ООО ИмяФирмы", а при поиске начать вводить "ИмяФирмы ООО", то строка все равно найдется!
Делаем выводы
Таким образом, быстрый поиск в 1С Бухгалтерии 8.2 и более ранних версиях предназначается для прокрутки списка к нужной строке, а в 1С Бухгалтерии 8.3 быстрый поиск работает как обычный фильтр, скрывая ненужную вам часть списка.
Механизмов для работы со строками в запросах 1С мало. Во-первых, строки можно складывать. Во-вторых, от строки можно взять подстроку. В-третьих, строки можно сравнивать, в том числе по шаблону. Вот пожалуй и всё, что можно делать со строками.
Сложение строк
Для сложения строк в запросе используется операция «+». Складывать можно только строки ограниченной длины.
ВЫБРАТЬ "Наименование: " + Контрагенты.Наименование КАК Колонка1 ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.Ссылка = &Ссылка
Функция Подстрока
ПОДСТРОКА(<Строка>, <НачальнаяПозиция>, <Длина>)
Аналог функции Сред() из объектной модели. Функция Подстрока() может применяться к данным строкового типа и позволяет выделить фрагмент <Строки> , начинающийся с символа номер <НачальнаяПозиция> (символы в строке нумеруются с 1) и длиной <Длина> символов. Результат вычисления функции имеет строковый тип переменной длины, причем длина будет считаться неограниченной, если <Строка> имеет неограниченную длину и параметр <Длина> не является константой или превышает 1024.
Если длина строки меньше, чем указана во втором параметре, то функция вернет пустую строку.
Внимание! Использование функции ПОДСТРОКА() с целью приведения строк неограниченной длины к строкам ограниченной длины не рекомендуется. Вместо нее лучше использовать операцию приведения типа ВЫРАЗИТЬ().
Функция Подобно
Если нужно убедиться, что строковый реквизит соответствует определённым критериям мы его сравниваем:
ВЫБРАТЬ Контрагенты.Наименование КАК Колонка1 ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.Наименование = "Газпром"
А что, если нужно более хитрое сравнение? Не просто на равенство или неравенство, а на подобие определенному шаблону? Вот как раз для этого и создана функция ПОДОБНО.
ПОДОБНО — Оператор проверки строки на подобие шаблону. Аналог LIKE в SQL.
Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.
Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки:
- % (процент): последовательность, содержащая любое количество произвольных символов;
- _ (подчеркивание): один произвольный символ;
- […] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок. В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона;
- [^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания.
Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки. Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ.