как перейти на строку в коде 1с
Как перейти на строку в коде 1с
Описание:
Значения данного типа содержат строку в формате Unicode произвольной длины.
Литералы:
Литералы строкового типа представляют собой набор символов заключенных в кавычки. Для задания в строке символа » (кавычка) необходимо записать две кавычки подряд. Кроме того, допускаются «многострочные» строковые константы. В исходном тексте многострочные константы могут задаваться двумя способами:
Строки в языке 1С 8.3, 8.2 (в примерах)
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю). |
Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
Программирование в 1С для всех
В этой статье изучим один из примитивных типов платформы 1С 8.3 – тип Строка. Научимся выводить строки, соединять, переносить, объединять с другими примитивными типами, а также узнаем, как работают строки в серверном и клиентском контексте, и научимся работать со строками на управляемой форме и в реквизитах объектов.
Строка в 1С
Строка это примитивный тип. Создать переменную типа строка достаточно просто. Нужно переменной присвоить какое-то значение в кавычках.
Метод Сообщить в 1С
Самый простой вариант вывести какую-то строку, это использование процедуры Сообщить. Это процедура глобального контекста, которая выводит сообщение пользователю внизу формы.
В параметре этой процедуры указывается переменная с типом строка (или сама строка), которая будет выведена пользователю на форме.
Если мы код выше применим на какой-нибудь управляемой форме, то получим такое сообщение.
Как объединить строки в 1С
В платформе 1С 8.3 имеется возможность объединять строки. Эта операция называется конкатенация, и выполняется при помощи оператора +.
Можно объединить строки, просто сложив две строки в кавычках. Вот так
Также, можно сложить две переменных с типом строка.
Объединять можно и несколько строк.
Перенос строки в 1С
Все строки, которые мы делали ранее, представляли собой одну длинную строку, что, согласитесь, бывает иногда не совсем удобно. Чтобы не испытывать неудобства, в платформе 1С можно переносить строки, тем самым получая многострочные строки. Для этих целей имеется символ переноса строки – «|» (вертикальная черта).
Наша строка с переносом должна иметь следующий вид.
В случае переноса, после окончания ряда строки не должно быть ни каких символов, а каждая новая строка должна начинаться с символа переноса строки «|».
Если мы выведем эту строку с помощью уже знакомого нам метода Сообщить, то будет такой результат.
Причём, обращу ваше внимание, что не достаточно просто написать символ «|» в строке, нужно этот символ, именно, перенести на новую строку в коде. Поэтому при написании такой строки:
Будет выводиться неверный результат:
Кавычки в строке в 1С
Иногда необходимо внутри строки отобразить кавычку как символ, как это сделать, если у нас кавычка открывает или закрывает строку. Для того, чтобы в строке вывелась кавычка необходимо в строке написать две кавычки подряд.
Будет выдавать следующий результат:
Пустая строка в 1С
А если нам нужно задать пустую строку? В этом случае достаточно просто написать две кавычки рядом, но так, чтобы между ними не было пробела.
Также, в платформе 1С 8.3. имеется возможность проверить, является строка пустой или нет. Для этого необходимо воспользоваться функцией ПустаяСтрока, где в качестве параметра нужно указать проверяемую строку, а возвращает она Истину, или Ложь, в зависимости от того, пустая строка или нет.
Также, эта функция вернет Истина, если в строке одни пробелы.
В этом примере я воспользовался отладкой в коде.
Перевод примитивных типов в строку
Часто возникает задачи, когда нужно примитивный тип перевести в строку, это можно сделать, используя метод Формат, или просто применить метод глобального контекста Строка, где в качестве параметра указать значение примитивного типа. При помощи этого метода можно перевести число в строку, дату в строку и тип булево в строку.
В коде ниже, преобразуются число, булево значение Истина и дата (текущая дата) в строку, а потом все это выводится в сообщении.
У этого кода будет следующий результат:
Причем, в методе Сообщить мы можем в некоторых случаях указать и переменную не строкового типа.
Также можно операцией конкатенацией соединять переменную типа строка с примитивной переменной не строкового типа.
В обоих случаях код нормально отработается.
Конкатенацией мы можем соединить строку с другим примитивным типом, но не можем, к примеру, соединить дату и булево.
Рекомендую вам не злоупотреблять конкатенацией с другими типами, иногда это может приводить к критическим ошибкам.
Строка 1С в клиентском и серверном контексте
Переменную примитивного типа строка можно создать, как в серверном, так и в клиентском контексте. Такой код будет вполне рабочий.
И также, для строк имеется возможность сериализации: т.е. можно перенести переменную с типом строка с клиента на сервер и наоборот:
Поэтому, и такой код будет вполне рабочим:
И наоборот, код также будет работать:
Таким образом, переменную с примитивным типом строка мы можем передать как с клиента на сервер, так и наоборот – с сервера на клиент.
Использование типа Строка в реквизитах объектов
Для того, чтобы реквизит какого-нибудь объекта имел тип Строка, достаточно просто указать этот тип в свойстве Тип нужного реквизита объекта.
У реквизита со свойством строка мы можем указать максимальную длину строки, а также будет длина строки фиксированная или переменная. Максимальная длина – это максимальное количество символов, которое можно вписать в строку.
Если мы укажем, что длина строки фиксированная, то длина строки реквизита объекта всегда будет приводиться к максимальной (заполняться пробелами).
Например, у реквизита ПолноеНаименование справочника Товары, я указал длину строки 10, и также отметил, что это фиксированная длина.
Если я запишу какое-то значение в поле формы, от оно автоматически заполнится пробелами до конца строки, и точно также с пробелами запишется в базу данных.
А если бы мы указали, что допустимая длинна – переменная.
То в этом случае, к строке не добавляются пробелы, и в базу записывается только то, что мы написали.
Также у строки можно указать, что она имеет неограниченную длину
В этом случае в строку можно вписать любое количество символов. Рекомендуется крайне редко использовать свойство Неограниченная длина, поскольку это свойство не совсем положительно сказывается на производительности.
Использование типа строка на управляемой форме
Реквизит управляемой формы 1С также может иметь тип Строка. Достаточно это указать в свойстве Тип реквизита.
Причем нам нужно нажать на кнопку «…» свойства, чтобы получить доступ к дополнительным свойствам строки.
В открывшемся окне мы можем указать длину строки, и установить (или снять) признак неограниченной длинны строки.
Если мы снимем признак неограниченности длинны строки, то сможем указать, какая будет строка – фиксированная или переменна.
Если мы перетащим реквизит в элементы формы, то будет создано поле ввода, в которое пользователь может вводить любую строковую информацию.
У нас имеется возможность сделать многострочный режим ввода, если у элемента поле ввода установим в свойство Многострочный режим значение Да.
Другие статьи о примитивных типах:
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Работа со строками в 1С 8.3
Строка — примитивный тип данных в языке программирования 1С. Помимо 1С, этот тип данных используется во всех известных языках программирования, обычно он называется «string».
Функции работы со строками в 1С
Рассмотрим основные функции встроенного языка программирования 1С.
Строка
Функция Строка() позволяет получить текстовое представление переменных других типов.
СтрДлина
Функция позволяет получить количество символов в строке 1C, включая пробелы и незначащие символы.
СокрЛП, СокрЛ, СокрП
Полезная функция для удаления незначащих символов в строковом значении. СокрЛ обрабатывает символы, стоящие слева от последнего значащего символа, СокрП — справа. А СокрЛП — справа и слева.
Помимо пробелов, функция 1C удаляет такие символы, как перенос строки, неразрывный пробел и т.д.
Лев, Прав, Сред
С помощью данных функций очень просто получить первые (Лев) или последние (Прав) символы в строке, а также произвольное количество символов (Сред).
Найти
ВРег, НРег, ТРег
Функции для управления регистром строки. ВРег — преобразует строку в верхний регистр. НРег — в нижний. ТРег — у каждого нового слова первая буква преобразуется в верхний регистр, остальные в нижний.
ПустаяСтрока
Функция, позволяющая сравнить исходную строку с пустой строкой. Проверяется наличие незначащих символов.
Аналогично можно проверить строку на пустое значение следующим образом:
СтрЗаменить
Функция СтрЗаменить позволяет массово заменить искомое значение на нужное нам. Синтаксис:
СтрЧислоСтрок
Позволяет получить количество строк в многострочном тексте. Функция считает количество переносов строк (Символы.ПС).
Например, построчная обработка текстового фрагмента:
СтрПолучитьСтроку
СтрЧислоВхождений
Функция для подсчета числа вхождений произвольного фрагмента в строку. Например, подсчитать количество вхождений определенных символов или слов в текст.
Символ и КодСимвола
Две обратные функции. С помощью КодСимвола можно получить код символа в кодировке Unicode. Функцией Символ можно получить символ, зная Unicode кодификатор.
Часто встречающиеся задачи по работе со строками в 1С
Рассмотрим классические примеры решения задач в работе с текстовыми переменными.
Конкатенация строк в 1С
Конкатенация, или объединение строк в 1С делается оператором «+».
Преобразовать число в строку
Тут всё просто. Достаточно использовать метод «Строка()»:
Однако может смущать наличие неразрывного пробела.
Его можно убрать с помощью замены неразрывного пробела на пустую строку:
или с помощью метода Формат:
Кавычки в строке 1С
Для новичков достаточно трудно установить кавычки внутри строки, хотя в этом нет ничего сложного. Достаточно внутри строки поставить вместо одних кавычек двое.
Символ переноса строки
Символ переноса строки необходим для переноса строки на следующую строку. В 1С это можно сделать с помощью специальной конструкции «Символы.ПС».
Сравнение строк в 1С
Сравнить строки достаточно просто с помощью оператора сравнения — «=».
Однако для получения корректного сравнения часто требуется возвести строки в один регистр и убрать незначащие символы:
Таким образом, мы получим более точное сравнение двух строк.
Убрать пробелы в строке 1С
Достаточно часто нужно убрать пробелы в строке 1С.
Если требуется убрать пробелы справа и слева:
Если требуется убрать абсолютно все пробелы, можно заменить их на пустую строку:
Если требуется убрать неразрывные пробелы из строки, которая получена из числового типа, сделать это можно так:
Другие статьи по 1С:
Если Вы начинаете изучать 1С программирование, рекомендуем наш курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Как перейти на строку в коде 1с
Подсветка текущего идентификатора
Позволяет подсвечивать текущий идентификатор выбранным цветом.
Выделяются все идентикаторы у которых такое же имя.
Очень удобно для поиска идентификатора по тексту кода.
Отладка под определенным пользователем
Позволяет запускать отладку под определенным пользователем.
Незаменимо когда ошибка появляетося только у определенного пользователя или когда пользователю не хватает прав, но неизвестно каких.
Работа с открытыми окнами в конфигураторе
Позволяет расположить окна в удобном виде.
Выделить их все и закрыть.
Форматирование текста кода
Выделить нужный фрагмент кода и нажать Alt+Shift+F
Предположим, вы дорабатываете незнакомую конфигурацию и в каком-то модуле вам попался неотформатированный текст. Вам трудно в нем разобраться и вы хотите улучшить его читаемость, да и вообще сделать более «приличным».
В этом случае вам не нужно вручную двигать строки текста с помощью клавиши Tab, так как это гораздо удобнее и быстрее сделать с помощью форматирования блока текста.
Для этого выделите этот фрагмент текста (или сразу весь модуль – Ctrl + A) и нажмите кнопку Форматировать (Alt + Shift + F) в командной панели Текст.
Вывод списка всех процедур модуля + заготовки предопределенных процедур
Вернуться в исходное место после команды «Перейти к определению».
Во время анализа кода мы хотим посмотреть что за процедура или функция вызывается. Жмем ПКМ и выбираем перейти к определению и переходим к нужной процедуре/функции.
Но после просмотра функции мы хотим вернуться обратно. Для этого жмем «CTRL» + «-«:
Посмотреть где используется выделенная процедура/функция
Откуда была вызвана процедура/функция? Стек вызовов.
Допустим что в этой процедуре у нас ошибка мы ставим точку останова, но видим что в процедуру уже поступают неверные параметры.
Нужно узнать откуда была вызвана данная процедура. Вызываем стек вызовов:
Видим все процедуры из которорых мы перешли к текущей:
Вырезать часть кода в отдельную процедуру/функцию
Мы хотим часть кода вывести в отдельную процедуру чтобы использовать ее в других процедурах.
Для этого выделим нужную часть, вызовем контекстное меню и сделаем так:
Закладки и перейти к строке.
Бывает что код достаточно большой и нужно «прыгать» от одного места к другому.
Искать место глазами совсем неудобно.
Лучше воспользоваться следующими инструментами.
1 Переход к строке.
Запоминаем номер строки, он написан в правой нижней части экрана
Жмем в любом месте этого модуля кнопку или сочетание клавиш
В нужной строке жмем Alt+F2 либо через меню
Переход по закладкам горячие клавиши:
Остановить отладчик до наступления ошибки.
Отладчик будет остановлен на строке на которой будет ошибка.
Проверим что скажет отладчик.
и остановит процедуру на нужной строке
Вычислять выражение не меняя код.
В контекстном меню при остановке отладчика есть команда «Вычислить выражение». Shift+F9
В поле «Выражение» мы можем написать любой код и тут же получить ответ. Например:
Контекстная подсказка по параметрам
Принудительно вызвать обычную контекстную подсказку: CTRL+Пробел
При изменении объекта метаданных отключить автоматический поиск ссылок на него.
Инструмент безусловно полезный, но нужен он не всегда.
Отключается в Сервис-Параметры. Убрать галочки в группе «Рефакторинг при изменениях в метаданных и формах»:
Редактор текста и модуля
Редактор текста и модуля — это один из инструментов разработки. Он используется для редактирования текстовых документов и для редактирования программных модулей конфигурации.
Редактирование текстовых документов
В процессе редактирования текста можно переходить к конкретной строке документа, сдвигать блоки текста на позицию табуляции, выполнять поиск и замену и использовать закладки. Закладки могут быть размещены на любой строке текста:
В дальнейшем быстрый переход по закладкам возможен по сочетанию клавиш или команде меню:
Редактирование текстов модулей
Редактирование текстов модулей может выполняться в процессе создания формы объекта прикладного решения, непосредственно при разработке модулей объектов или всего приложения, и при редактировании внешнего текстового файла, содержащего текст модуля.
Помимо стандартных действий, присущих любому текстовому редактору, редактор текстов и модулей имеет ряд специфических особенностей:
Выделение цветом синтаксических конструкций
Для удобства редактирования текстов модулей редактор выделяет цветом элементы встроенного языка: ключевые слова, языковые константы, операторы, комментарии и пр.:
Разработчик может использовать цвета выделения, установленные по умолчанию, или настроить их самостоятельно. В общем случае система сама отслеживает необходимость включения режима выделения цветом. Однако в ситуации, когда система «не знает» о том, что редактируется текст модуля (например, если редактируется внешний текстовый файл, содержащий текст модуля), разработчик может включить режим выделения цветом вручную, используя меню конфигуратора:
Группировка
При просмотре модулей редактор позволяет объединять некоторые синтаксические конструкции языка в группы, сворачивать и разворачивать их. Использование группировки синтаксических конструкций позволяет лучше воспринимать различные части текста, а также переносить и копировать группы целиком:
Свернутый текст замещается специальным маркером, который позволяет просмотреть содержимое свернутой группы в виде подсказки:
Разработчику предоставляется возможность настраивать режим группировки, указывая, какие синтаксические конструкции могут группироваться, и каким должно быть исходное состояние группировки (свернутая или развернутая) при открытии документа. Таким образом, он может настроить, например, использование группировок «по максимуму»:
Области
Разработчик может выделять произвольные области текста, группировать и сворачивать их подобно тому, как сворачиваются инструкции циклов, условий, процедур и функций.
Каждой области текста, которую выделяет разработчик, он может дать собственное имя. Это позволяет простым и понятным образом выделять части модуля, имеющие сходный смысл.
Области выделяются с помощью двух инструкций препроцессора: #Область и #КонецОбласти. Единственное назначение этих инструкций — обозначить группируемые и сворачиваемые строки модуля.
Области могут быть вложены друг в друга или в другие группируемые конструкции языка.
Операции с блоками
Редактор позволяет выполнять ряд операций над выделенными блоками текста модуля: автоматическое форматирование, изменение отступа, добавление/удаление комментариев и переносов строк.
Форматирование модуля
Хорошим стилем написания модулей считается использование синтаксического отступа для выделения управляющих конструкций встроенного языка. Редактор позволяет автоматически форматировать текст при его вводе, и кроме этого, выполнять автоматическое форматирование уже введенного текста.
Результат автоматического форматирования:
Увеличение/уменьшение отступа
Наряду с автоматическим форматированием всего выделенного текста, редактор поддерживает также операции сдвига выделенного блока вправо или влево на шаг табуляции.
Это облегчает ручное форматирование больших фрагментов кода.
Добавление/удаление комментариев
Также редактор содержит очень удобную для разработчика функцию автоматической (одним нажатием мыши) установки и снятия комментариев на выделенный текст. Такая возможность часто используется при отладке модулей:
Добавление/удаление переноса строки
Использование добавления и удаления переноса строки часто применяется при переносе текстов запроса между модулем и, например, консолью запросов.
Таким образом, отладив запрос в консоли запросов, разработчик может просто скопировать текст запроса из консоли, вставить его в модуль и одним движением добавить перенос строки ко всем строкам текста запроса:
Переход по процедурам и функциям
В ситуации, когда модуль содержит большое количество процедур и функций, удобно использовать режим поиска процедур, который поддерживается редактором. Процедуры и функции отображаются в отдельном окне в порядке их расположения в модуле, однако разработчик может отсортировать их по алфавиту. Пиктограммы слева от названия обозначают имеющиеся процедуры и функции, а имена в угловых скобках соответствуют предопределенным процедурам, которые в настоящий момент отсутствуют, но могут быть размещены в данном модуле.
Если установить курсор на той процедуре, которая еще отсутствует в модуле, и нажать Перейти, конструктор автоматически вставит в текст модуля заголовок предопределенной процедуры.
Переход к определению процедур и функций
Редактор позволяет автоматически переходить к определению процедуры или функции, использованной в тексте модуля. Для этого достаточно установить курсор на имени нужной функции в теле модуля и выполнить команду контекстного меню или нажать «горячую» клавишу. В окне редактора будет открыт текст искомой процедуры или функции:
Контекстная подсказка
Редактор предоставляет средство контекстного ввода выражений с использованием системных объектов, их свойств, методов и пр. В процессе ввода текста или при нажатии комбинации клавиш редактор выводит контекстный список, позволяющий выбрать нужное свойство, метод, функцию и т. д., что позволяет быстро и правильно набирать тексты модулей:
Контекстная подсказка также работает и для параметров некоторых методов, если эти параметры задаются строковыми литералами.
Копирование имен объектов и реквизитов
При написании текста модуля разработчик может просто перетаскивать мышью имена объектов или их реквизитов из дерева метаданных в нужное место модуля:
Проверка модуля
Редактируемый модуль может быть проверен на правильность использования синтаксических конструкций встроенного языка, корректность обращений к методам и свойствам объектов «через точку», а также на корректность некоторых параметров, имеющих тип «Строка»:
При наличии ошибок в модуле, их список выдается в окне состояния. Щелкнув мышью на сообщении об ошибке, можно перейти к строке модуля, вызвавшей ошибку. При желании разработчик может включить автоматическое выполнение синтаксического контроля модуля при его закрытии или сохранении всей конфигурации.
Кроме этого конфигуратор поддерживает выполнение полной проверки всех модулей, содержащихся в прикладном решении.
В процессе работы с модулем разработчик имеет возможность получать контекстную подсказку по встроенному языку, используя синтакс-помощник. Для этого достаточно установить курсор на интересующий элемент языка и нажатием комбинации клавиш (или по контекстному меню) перейти к описанию этого элемента языка в синтакс-помощнике.
Ограничение доступа к модулю
Для большинства модулей прикладного решения можно установить пароль доступа, защищающий авторские права разработчика конфигурации. При попытке открыть защищенный модуль выводится диалог ввода пароля:
Использование шаблонов
При редактировании текстовых документов и модулей конфигуратор предоставляет разработчику возможность использовать механизм шаблонов для автоматической подстановки часто используемых фрагментов текста.