1с строковое представление типа
Строковый тип данных — это один из базовых типов данных, поддерживаемых в языке 1С версии 7.7. Строковым типом в системе «1С:Предприятие» может задаваться любая последовательность символов, в том числе и пустая (последняя в программном коде записывается как последовательность из двух подряд идущих кавычек).
Операции со строками
Чтобы присоединить одну строку к другой, в языке 1С используется операция конкатенации. Длина результирующей строки при этом равна сумме длин соединяемых строк.
Пример конкатенации строковых значений:
При сложении нескольких строк, в случае несовпадения типа данных второго или последующих операндов со строковым типом, значения этих операндов неявно преобразуются к строковому типу в соответствии с правилами преобразования типов. Например:
В вышеприведённом примере второй операнд имеет тип " Дата " . При сложении со строкой система неявно преобразует его в строковый тип.
Строки можно сравнивать между собой и использовать в логических операциях. В языке 1С для строк определены следующие операции сравнения:
- больше ( Строка1 > Строка2 );
- больше или равно ( Строка1 >= Строка2 );
- равно ( Строка1 = Строка2 );
- не равно ( Строка1 >< Строка2 );
- меньше ( Строка1 < Строка2 );
- меньше или равно ( Строка1 <= Строка2 ).
Пример использования строк в логических операциях:
Строковые литералы
В строковых выражениях, наряду с переменными, могут использоваться строковые литералы, представляющие собой обычные строки, заключённые в двойные кавычки. Например:
Наряду с короткими (однострочными) литералами, синтаксис языка 1С допускает использование и многострочных конструкций, причём последние в исходном коде могут задаваться двумя способами.
Способ первый. В этом случае между фрагментами, представляющими отдельные строки многострочной константы, не должно встречаться никаких символов, за исключением пробелов, переводов строки и строк комментариев:
Способ второй. В этом случае значение литерала полностью идентично предыдущему случаю. Отличие заключается в том, что каждая отдельная составляющая (строка) не замыкается кавычками, а на каждой последующей строке помещен символ переноса строки «|» («вертикальная черта»). В таком варианте комментарии между открывающей и закрывающей кавычками (то есть внутри многострочного литерала) не допускаются.
Системные строковые константы
Данные системные константы доступны в любом программном модуле конфигурации. Они могут размещаться в правой части оператора присваивания, в выражениях, могут использоваться в качестве параметров вызываемых методов, процедур и функций.
Пример использования строковых констант:
Преобразование в строковый тип значений других базовых типов
В процессе вычисления различных выражений может возникнуть необходимость в явном или неявном преобразовании типов отдельных значений. При преобразовании значений в строковый тип система руководствуется следующими правилами:
- Если преобразуемое в строку число не имеет форматных установок, то его строковым представлением является полное представление числа в формате с фиксированной точкой.
- Дата преобразованная к строковому типу имеет вид "ДД.ММ.ГГ" , где ГГ — две цифры года, ММ — числовое обозначение месяца (01, 02, 03 и т.д.), ДД — день месяца (01, 02, 03 и т.д.).
Примечание: То, что выражение является строковым, система определяет по первому операнду. В случае несовпадения типа второго и последующих операндов со строковым типом, их значения неявно преобразуются к требуемому типу в соответствии с правилами преобразования типов. Чтобы явно указать, что выражение является строковым, следует начать его с пустой строки:
Для явного преобразования в строковый тип значений других базовых типов в программном коде используется системная функция Строка() . Англоязычный синоним имени функции — String() .
где < ПреобразуемоеЗначение > — выражение типа " Число " или " Дата " , результат вычисления которого необходимо преобразовать в строку.
Примеры использования функции:
Примечание: Даты во встроенном языке программирования 1С принято заключать в одинарные кавычки, в отличие от строк, для выделения которых используются кавычки двойные.
Системные функции для работы со строками
Проверить строку на наличие значащих символов позволяет системная (встроенная) функция ПустаяСтрока() . В качестве единственного параметра функции передаётся строковое выражение, которое необходимо проверить. Функция возвращает 1, если указанная строка пустая или содержит только пробелы, либо 0, если строка содержит значащие символы. Англоязычный синоним имени функции — IsBlankString() .
Узнать длину строки позволяет системная функция СтрДлина() . В качестве единственного параметра функции передаётся строковое выражение, результирующую длину которого необходимо узнать. Возвращаемым значением функции является число, соответствующее количеству символов в строке. Англоязычный синоним имени функции — StrLen() .
Удалить конечные пробельные символы слева, справа или с обоих концов строки сразу позволяют системные функции СокрЛ() , СокрП() и СокрЛП() соответственно. В качестве единственного параметра эти функции принимают строковое выражение, у которого необходимо удалить конечные пробельные символы. Возвращаемым значением этих функций является преобразованная строка. Англоязычные синонимы имён функций: TrimL() , TrimR() , TrimAll() .
Перевести все символы строки в верхний регистр позволяет системная функция Врег() . В качестве единственного параметра функции передаётся строковое выражение, содержащее строку которую необходимо преобразовать. Возвращаемым значением функции будет преобразованная строка. Англоязычный синоним имени функции — Upper() .
Примечание: Подобное преобразование строк обычно требуется при выполнении операций со строками, введёнными пользователем. Ведь пользователь может начать строку с заглавной буквы, может начать с маленькой, а может всю строку набрать заглавными буквами. Вышеназванная же функция позволяет привести все символы строки к единому формату.
Перевести все символы строки в нижний регистр позволяет системная функция Нрег() . В качестве единственного параметра функции передаётся строковое выражение, содержащее строку которую необходимо преобразовать. Возвращаемым значением функции будет преобразованная строка. Англоязычный синоним имени функции — Lower() .
Примечание: Подобное преобразование строк обычно требуется при выполнении операций со строками, введёнными пользователем. Ведь пользователь может начать строку с заглавной буквы, может начать с маленькой, а может всю строку набрать заглавными буквами. Вышеназванная же функция позволяет привести все символы строки к единому формату.
Преобразовать строку из DOS-кодировки в Windows-кодировку позволяет системная функция OemToAnsi() . В качестве единственного параметра функции передаётся строковое выражение, содержащее строку, которую необходимо преобразовать. Возвращаемым значением функции будет преобразованная строка. Русскоязычный синоним имени функции отсутствует.
Примечание: Подобное преобразование строк обычно требуется при работе с некоторыми файлами.
Преобразовать строку из Windows-кодировки в DOS-кодировку позволяет системная функция AnsiToOem() . В качестве единственного параметра функции передаётся строковое выражение, содержащее строку, которую необходимо преобразовать. Возвращаемым значением функции будет преобразованная строка. Русскоязычный синоним имени функции отсутствует.
Примечание: Подобное преобразование строк обычно требуется при работе с некоторыми файлами.
Системные функции для работы с подстроками
Выбрать из строки указанное количество символов слева позволяет системная функция Лев() . Возвращаемым значением функции будет подстрока из выбранных символов. Англоязычный синоним имени функции — Left() .
- < Строка > — строковое выражение, содержащее исходную строку, из которой будет выделена подстрока;
- < ЧислоСимволов > — числовое выражение, задающее число символов, которое необходимо включить в подстроку.
В вышеприведённом примере с помощью функции Найти() определяем позицию первого пробела, а затем выбираем все символы, стоящие левее этой позиции.
Выбрать из строки указанное количество символов справа позволяет системная функция Прав() . Возвращаемым значением функции будет подстрока из выбранных символов. Англоязычный синоним имени функции — Right() .
- < Строка > — строковое выражение, содержащее исходную строку, из которой будет выделена подстрока;
- < ЧислоСимволов > — числовое выражение, задающее число символов, которое необходимо включить в подстроку.
Выбрать из указанной строки подстроку указанной длины, начинающуюся с указанной позиции , позволяет системная функция Сред() . Возвращаемым значением функции будет подстрока из выбранных символов. Англоязычный синоним имени функции — Mid() .
- < Строка > — строковое выражение, содержащее исходную строку, из которой будет выделена подстрока;
- < НомерСимвола > — числовое выражение, задающее номер символа, с которого начнётся выборка подстроки (нумерация символов в строке начинается с 1);
- < ЧислоСимволов > — числовое выражение, задающее число символов, которое необходимо включить в подстроку.
Найти позицию первого вхождения подстроки в строку позволяет системная функция Найти() (англоязычный синоним — Find() ). Возвращаемым значением данной функции является число — позиция первого символа первого вхождения.
- < Строка > — строковое выражение, содержащее строку, в которой будет выполняться поиск;
- < Подстрока > — строковое выражение, содержащее подстроку, поиск которой будет выполняться.
Узнать число вхождений указанной подстроки в указанную строку позволяет системная функция СтрЧислоВхождений() . Возвращаемым значением данной функции является целое число, показывающее число вхождений подстроки в строку. Англоязычный синоним имени функции — StrCountOccur() .
- < Строка > — строковое выражение, содержащее строку, в которой будет выполняться поиск;
- < Подстрока > — строковое выражение, содержащее подстроку, поиск которой будет выполняться.
Заменить все вхождения указанной подстроки другим указанным значением позволяет системная функция СтрЗаменить() . Возвращаемым значением функции является преобразованная строка. Англоязычный синоним имени функции — StrReplace() .
- < Строка > — строковое выражение, содержащее строку, в которой будет выполняться поиск и замена подстрок;
- < СтарПодстрока > — строковое выражение, содержащее заменяемую подстроку (подстроку, поиск и замена которой будет выполняться);
- < НовПодстрока > — строковое выражение, содержащее заменяющую (новую) подстроку.
Системные функции для работы с многострочным текстом
Определить число строк в многострочном тексте (то есть в тексте, где имеются переводы строк) позволяет системная функция СтрКоличествоСтрок() . В качестве единственного параметра функции передаётся строковое выражение, содержащее исследуемый текст. Возвращаемым значением функции является целое число, соответствующее числу строк в исследуемом тексте. Англоязычный синоним имени функции — StrLineCount() .
Получить указанную строку из многострочного текста (то есть текста, где имеются переводы строк) позволяет системная функция СтрПолучитьСтроку() . Англоязычный синоним имени функции — StrGetLine() .
- < ИсходныйТекст > — строковое выражение, содержащее исходный многострочный текст;
- < НомерСтроки > — числовое выражение, содержащее порядковый номер строки, которую необходимо получить. Нумерация строк в многострочном тексте начинается с 1.
Возвращаемым значением функции будет полученная строка текста.
Системные функции для работы с символами
Преобразовать код символа в соответствующий символ позволяет системная функция Симв() . В качестве единственного параметра функции передаётся числовое выражение, содержащее код символа в кодировке Windows-1251. Возвращаемым значением функции является строковое значение — соответствующий указанному коду символ. Англоязычный синоним имени функции — Chr() .
Преобразовать символ в код символа позволяет системная функция КодСимв() . В качестве единственного параметра функции передаётся строковое выражение, содержащее символ. Возвращаемым значением функции является целое число, представляющее собой десятичный код заданного символа в кодировке Windows-1251. Англоязычный синоним имени функции — Asc() .
Функция Представление()
Функция представление предназначена для получения текстового представления любого значения, которое может быть получено при помощи языка запросов. Функция Представление() работает как для ссылочных, так и для примитивных типов. Для ссылочных типов результат функции полностью аналогичен получению поля "Представление" от ссылки, переданной в качестве параметра функции. Для примитивных типов, результатом работы функции является строка, в которую было преобразовано значение, переданное в качестве параметра. Особенностью данной функции является то, что ее результат не может быть использован в выражении. Такая особенность связана с тем фактом, что преобразование значений в строку осуществляется уже при получении данных из результата запроса, т.к. преобразование произвольного значения в строку при исполнении запроса на сервере, не осуществляется, в силу того, что при преобразовании значений в строку необходимо учитывать локальные настройки.
Использование функции Представление() имеет ряд преимуществ по сравнению с использованием поля "Представление". Например, в случае если поле, от которого получается представление, может содержать как ссылочные, так и примитивные типы, получение поля "Представление" через точку от такого поля приведет к тому, что представления для значений примитивного типа не будут получены. Если же, для такого поля применить функцию Представление(), то строковое представление будет получено вне зависимости от типа значения, содержащегося в поле. Кроме того, в случае если функция Представление() применяется к полю, которое является ссылкой более чем на три таблицы, язык запросов получает из базы данных только ссылочные значения, а значения представлений получает одним или несколькими дополнительными запросами. Такое поведение позволяет более эффективно получать представления для полей, которые ссылаются на большое количество таблиц (например, на любой справочник), за счет того, что в исполняемый запрос не будет помещаться большое количество соединений, которые необходимы для получения полей из которых состоит представление.
Применение функции Представление() также может быть полезным при получении представления поля - перечисления, в случае исполнения запроса через COM-соединение
Поле Представление
Каждая объектная таблица в информационной базе имеет виртуальное поле - "Представление". Это поле содержит текстовое представление объекта. В запросе возможно получать данное поле точно также как и другие поля таблиц, однако никакие операции с данным полем выполнять нельзя. Данная особенность связана с тем, что это поле является виртуальным, и, на самом деле, при получении данного поля из базы данных, запрос получает несколько полей, а при получении значения поля из результата запроса преобразовывает полученные значения в строку. Таким образом, единственное, что можно сделать с полем "Представление", это получить его в результат запроса.
Как следствие, результат запроса не рекомендуется упорядочивать по полю "Представление", т.к. это не приведет к желаемому результату - результат запроса будет упорядочен в порядке возрастания ссылок объектов. Подробнее об этом можно прочитать в разделе "Особенности упорядочивания по ссылочным полям".
Функция Представление()
Функция представление предназначена для получения текстового представления любого значения, которое может быть получено при помощи языка запросов. Функция Представление() работает как для ссылочных, так и для примитивных типов. Для ссылочных типов результат функции полностью аналогичен получению поля "Представление" от ссылки, переданной в качестве параметра функции. Для примитивных типов, результатом работы функции является строка, в которую было преобразовано значение, переданное в качестве параметра. Особенностью данной функции является то, что ее результат не может быть использован в выражении. Такая особенность связана с тем фактом, что преобразование значений в строку осуществляется уже при получении данных из результата запроса, т.к. преобразование произвольного значения в строку при исполнении запроса на сервере, не осуществляется, в силу того, что при преобразовании значений в строку необходимо учитывать локальные настройки.
Использование функции Представление() имеет ряд преимуществ по сравнению с использованием поля "Представление". Например, в случае если поле, от которого получается представление, может содержать как ссылочные, так и примитивные типы, получение поля "Представление" через точку от такого поля приведет к тому, что представления для значений примитивного типа не будут получены. Если же, для такого поля применить функцию Представление(), то строковое представление будет получено вне зависимости от типа значения, содержащегося в поле. Кроме того, в случае если функция Представление() применяется к полю, которое является ссылкой более чем на три таблицы, язык запросов получает из базы данных только ссылочные значения, а значения представлений получает одним или несколькими дополнительными запросами. Такое поведение позволяет более эффективно получать представления для полей, которые ссылаются на большое количество таблиц (например, на любой справочник), за счет того, что в исполняемый запрос не будет помещаться большое количество соединений, которые необходимы для получения полей из которых состоит представление.
Применение функции Представление() также может быть полезным при получении представления поля - перечисления, в случае исполнения запроса через COM-соединение
Поле Представление
Каждая объектная таблица в информационной базе имеет виртуальное поле - "Представление". Это поле содержит текстовое представление объекта. В запросе возможно получать данное поле точно также как и другие поля таблиц, однако никакие операции с данным полем выполнять нельзя. Данная особенность связана с тем, что это поле является виртуальным, и, на самом деле, при получении данного поля из базы данных, запрос получает несколько полей, а при получении значения поля из результата запроса преобразовывает полученные значения в строку. Таким образом, единственное, что можно сделать с полем "Представление", это получить его в результат запроса.
Как следствие, результат запроса не рекомендуется упорядочивать по полю "Представление", т.к. это не приведет к желаемому результату - результат запроса будет упорядочен в порядке возрастания ссылок объектов. Подробнее об этом можно прочитать в разделе "Особенности упорядочивания по ссылочным полям".
Функция Представление()
Функция представление предназначена для получения текстового представления любого значения, которое может быть получено при помощи языка запросов. Функция Представление() работает как для ссылочных, так и для примитивных типов. Для ссылочных типов результат функции полностью аналогичен получению поля "Представление" от ссылки, переданной в качестве параметра функции. Для примитивных типов, результатом работы функции является строка, в которую было преобразовано значение, переданное в качестве параметра. Особенностью данной функции является то, что ее результат не может быть использован в выражении. Такая особенность связана с тем фактом, что преобразование значений в строку осуществляется уже при получении данных из результата запроса, т.к. преобразование произвольного значения в строку при исполнении запроса на сервере, не осуществляется, в силу того, что при преобразовании значений в строку необходимо учитывать локальные настройки.
Использование функции Представление() имеет ряд преимуществ по сравнению с использованием поля "Представление". Например, в случае если поле, от которого получается представление, может содержать как ссылочные, так и примитивные типы, получение поля "Представление" через точку от такого поля приведет к тому, что представления для значений примитивного типа не будут получены. Если же, для такого поля применить функцию Представление(), то строковое представление будет получено вне зависимости от типа значения, содержащегося в поле. Кроме того, в случае если функция Представление() применяется к полю, которое является ссылкой более чем на три таблицы, язык запросов получает из базы данных только ссылочные значения, а значения представлений получает одним или несколькими дополнительными запросами. Такое поведение позволяет более эффективно получать представления для полей, которые ссылаются на большое количество таблиц (например, на любой справочник), за счет того, что в исполняемый запрос не будет помещаться большое количество соединений, которые необходимы для получения полей из которых состоит представление.
Применение функции Представление() также может быть полезным при получении представления поля - перечисления, в случае исполнения запроса через COM-соединение
Поле Представление
Каждая объектная таблица в информационной базе имеет виртуальное поле - "Представление". Это поле содержит текстовое представление объекта. В запросе возможно получать данное поле точно также как и другие поля таблиц, однако никакие операции с данным полем выполнять нельзя. Данная особенность связана с тем, что это поле является виртуальным, и, на самом деле, при получении данного поля из базы данных, запрос получает несколько полей, а при получении значения поля из результата запроса преобразовывает полученные значения в строку. Таким образом, единственное, что можно сделать с полем "Представление", это получить его в результат запроса.
Как следствие, результат запроса не рекомендуется упорядочивать по полю "Представление", т.к. это не приведет к желаемому результату - результат запроса будет упорядочен в порядке возрастания ссылок объектов. Подробнее об этом можно прочитать в разделе "Особенности упорядочивания по ссылочным полям".
Читайте также: