Строки в 1С

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

Строка в 1С

Строка это примитивный тип. Создать  переменную типа строка достаточно просто. Нужно переменной присвоить какое-то значение в кавычках.

Например.

СтрокаА = "Привет";

Метод Сообщить в 1С

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

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

Например, так:

СтрокаВывода = "Привет всем!";
Сообщить(СтрокаВывода);

Или, так:

Сообщить("Привет всем!");

Если мы код выше применим на какой-нибудь управляемой форме, то получим такое сообщение.

Сообщить в 1С

Как объединить строки в 1С

В платформе 1С 8.3 имеется возможность объединять строки. Эта операция называется конкатенация, и выполняется при помощи оператора +.

Можно объединить строки, просто сложив две строки в кавычках. Вот так

СтрокаА = "Начало строки " + "продолжение";

Также, можно сложить две переменных с типом строка.

СтрокаА = "Начало строки ";
СтрокаБ = "Продолжение";
СтрокаС = СтрокаА + СтрокаБ;

Объединять можно и несколько строк.

СтрокаА = "Начало строки " + "продолжение " + " окончание строки" ;

Перенос строки в 1С

Все строки, которые мы делали ранее, представляли собой одну длинную строку, что, согласитесь, бывает иногда не совсем удобно. Чтобы не испытывать неудобства, в платформе 1С можно переносить строки, тем самым получая многострочные строки. Для этих целей имеется символ переноса строки – «|» (вертикальная черта).

Наша строка с переносом должна иметь следующий вид.

СтрокаСПереносом = "Первая строка
    |вторая строка
    |третья строка";

В случае переноса, после окончания ряда строки не должно быть ни каких символов, а каждая новая строка должна начинаться с символа переноса строки  «|».

Если мы выведем эту строку с помощью уже знакомого нам метода Сообщить, то будет такой результат.

Перенос строки в 1С

Причём, обращу ваше внимание, что не достаточно просто написать символ «|» в строке, нужно этот символ, именно, перенести на новую строку в коде. Поэтому при написании такой строки:

СтрокаСПереносом = "Первая строка | вторая строка | третья строка";

Будет выводиться неверный результат:

Перенос строки в 1С не работает

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

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

Такой код:

СтрокаСКавычками = "Это справочник ""Номенклатура"" (для хранения номенклатуры)";

Будет выдавать следующий результат:

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

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

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

То есть вот так.

НашаПустаяСтрока = "";

Также, в платформе 1С 8.3. имеется возможность проверить, является строка пустой или нет. Для этого  необходимо воспользоваться функцией ПустаяСтрока, где в качестве параметра нужно указать проверяемую строку, а возвращает она Истину, или Ложь, в зависимости от того, пустая строка или нет.

НашаПустаяСтрока = "";
ЭтоСтрокаПустая = ПустаяСтрока(НашаПустаяСтрока);
Функция ПустаяСтрока

Также, эта функция вернет Истина, если в строке одни пробелы.

НашаПустаяСтрока = " ";
ЭтоСтрокаПустая = ПустаяСтрока(НашаПустаяСтрока);
Функция ПустаяСтрока с пробелами

В этом примере я воспользовался отладкой в коде.

Перевод примитивных типов в строку

Часто возникает задачи, когда нужно примитивный тип перевести в строку, это можно сделать, используя метод Формат, или просто применить метод глобального контекста Строка, где в качестве параметра указать значение примитивного типа. При помощи этого метода можно перевести число в строку, дату в строку и тип булево в строку.

В коде ниже, преобразуются число, булево значение Истина и дата (текущая дата) в строку, а потом все это выводится в сообщении.

НашеЧисло = 10;
НашаБулево = Истина;
ТекДата = ТекущаяДата();

СтрЧисло  = Строка(НашеЧисло);
СтрБулево = Строка(НашаБулево);
СтрДата   = Строка(ТекДата);

Сообщить(СтрЧисло + "
         |" + СтрБулево + "
         |" + СтрДата);

У этого кода будет следующий результат:

Использовании функции Строка

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

НашеЧисло = 10;
НашаБулево = Истина;
ТекДата = ТекущаяДата();

Сообщить(НашеЧисло);
Сообщить(НашаБулево);
Сообщить(ТекДата);
Использовании функции Строка

Также можно операцией конкатенацией соединять переменную типа строка с примитивной переменной не строкового типа.

Например, так:

ТекДатаД = ТекущаяДата();
ТекДатаС = "Сейчас " + ТекДатаД;

Сообщить(ТекДатаС);

Или, так:

Сообщить("Сейчас " + ТекущаяДата());

В обоих случаях код нормально отработается.

Соединение строк

Конкатенацией мы можем соединить строку с другим примитивным типом, но не можем, к примеру, соединить дату и булево.

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

Строка 1С в клиентском и серверном контексте

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

&НаКлиенте
Процедура НекаяПроцедура()
    СтрокаА = "Привет с клиента";
КонецПроцедуры

&НаСервере
Процедура НекаяПроцедураСервер()
    СтрокаБ = "Привет с сервера";
КонецПроцедуры

И также, для строк имеется возможность сериализации: т.е. можно перенести переменную с типом строка с клиента на сервер и наоборот:

Поэтому, и такой код будет вполне рабочим:

&НаКлиенте
Процедура НекаяПроцедура()
    СтрокаА = "Привет с клиента";
    НекаяПроцедураСервер(СтрокаА)
КонецПроцедуры

&НаСервереБезКонтекста
Процедура НекаяПроцедураСервер(СтрокаПараметр)
    Сообщить(СтрокаПараметр);
КонецПроцедуры

И наоборот, код также будет работать:

&НаСервереБезКонтекста
Функция НекаяФункцияСервер()
    СтрокаДляВозврата = "Привет с сервера!";
    Возврат СтрокаДляВозврата;
КонецФункции

&НаКлиенте
Процедура НекаяПроцедура()
    СтрокаА = НекаяФункцияСервер();
    Сообщить(СтрокаА)
КонецПроцедуры

Таким образом, переменную с примитивным типом строка мы можем передать как с клиента на сервер, так и наоборот – с сервера на клиент.

Использование типа Строка в реквизитах объектов

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

Тип строка реквизита

У реквизита со свойством строка мы можем указать максимальную длину строки, а также будет длина строки фиксированная или переменная.  Максимальная длина – это максимальное количество символов, которое можно вписать в строку.

Допустимая длина строки

Если мы укажем, что длина строки фиксированная, то длина строки реквизита объекта всегда будет приводиться к максимальной (заполняться пробелами).

Например, у реквизита ПолноеНаименование справочника Товары, я указал длину строки 10, и также отметил, что это фиксированная длина.

Фиксированная длина строки

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

Фиксированная длина строки на форме

А если бы мы указали, что допустимая длинна – переменная.

Переменная длина строки

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

Переменная длина строки на форме

Также у строки можно указать, что она имеет неограниченную длину

Неограниченная длина строки

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

Использование типа строка на управляемой форме

 Реквизит управляемой формы 1С также может иметь тип Строка.  Достаточно это указать в свойстве Тип реквизита.

Свойство реквизита управляемой формы

Причем нам нужно нажать на кнопку «…» свойства, чтобы получить доступ к дополнительным свойствам строки.

Свойства реквизита типа строка

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

Свойства реквизита типа строка

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

Если мы перетащим реквизит в элементы формы, то будет создано поле ввода, в которое пользователь может вводить любую строковую информацию.

Поле ввода для строки

У нас имеется возможность сделать многострочный режим ввода, если у элемента поле ввода установим в свойство Многострочный режим значение Да.

Свойство многострочный режим поля ввода

Другие статьи о примитивных типах:

Функции работы со строками. Часть 1.

Функции работы со строками. Часть 2

Символы в 1С

Примитивный тип Булево

Примитивный тип Дата

Примитивный тип Число

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Программировать в 1С за 11 шагов

Книга написана понятным и простым языком — для новичка.

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»


Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси
  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *