Строка 1С


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

К базовым возможностям языка программирования обычно относят работу с числами и строками. Обычно эти возможности зашиты в код компилятора (или реализованы «базовые» классы языка программирования).

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

 

Значение строки 1С

1. Начнем с самого простого. Создание переменной и присваивание ей строкового константного значения выглядит в 1С так:

Переменная = "Привет, мир! ";

Если требуется в константном строковом значении 1С указать символ кавычки, то его нужно задвоить «»

Переменная = "Привет, ""мир""!";

2. Перенос строки 1С можно указать сразу двумя способами. Первый – с использованием символа |

Переменная = "Привет,
|   мир! ";

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

Переменная = "Привет" + Символы.ПС + "мир! ";

3. Конфигурации в 1С могут быть разработаны не только для одного языка (русского, английского или другого) – но одновременно для нескольких языков. В этом случае используемый в настоящее время язык выбирается в нижней части окна 1С.

Список языков находится в окне конфигурации в ветке Общие/Языки. Каждый язык имеет короткий идентификатор, такой как ru или eng.

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


Переменная = "ru=""Привет, мир! ""; en=""Hello, world! """;

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

//правильно для двуязычных конфигураций
Сообщить(НСтр(Переменная));

 

Реквизит с типом строки 1С

Реквизит – это поле справочника/документа 1С. Отличается от переменной в программе на языке 1С тем, что для реквизита точно указывается его тип (число, строка 1С и т.п.). Если Вам нужно освежить в памяти что такое реквизит – посмотрите урок, посвященный реквизитам 1С.

Если Вы укажите тип реквизита – строка 1С, то дополнительно необходимо указать параметры.

Строки 1С бывают неограниченной длины (указывается как длина = 0) и ограниченной длины, с указанием точного количества символов. Строки 1С неограниченной длины хранятся в отдельной таблице SQL, поэтому их использование менее производительно, чем ограниченной.

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

 

Работа со строками 1С

Для работы со строками есть несколько встроенных функций платформы 1С.

  • СокрЛП("Невероятно, но          факт!")
    Убирает из строки 1С лишние пробелы. Также можно использовать для преобразования любых типов к строке 1С (например, числа).
  • Переменная = "Вася " + СокрЛП(" плюс") + " Оля"; //будет "Вася плюс Оля"
    Пример суммирования нескольких строковых значений 1С. В результате получится одна строка 1С.
  • Переменная = Лев("Музыка", 2); //будет "Му"
    Переменная = Сред("Музыка", 2, 2); //будет "зы"
    Переменная = Прав("Музыка", 2); //будет "ка"

    Различные варианты получения подстроки из строки 1С.
  • Переменная = Найти("Музыка", "зы"); //будет 3
    Поиск подстроки в строке 1С, начиная с символа 1.
  • Переменная = СтрДлина("Музыка"); //будет 6
    Возвращает количество символов в строке 1С.
  • Сообщить("Привет") //в окне сообщений внизу окна 1С
    Предупреждение("Привет") //всплывающее диалоговое окно
    Состояние("Привет") //в строчке отображения состояния внизу слева

    Различные варианты сообщения пользователю.

 

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

Как известно самый популярный формат для обмена структурированной информацией в настоящее время – это XML. Даже последняя версия MS Office Word и Excel сохраняют файлы в этом формате (docx и xlsx соответственно, поменяйте расширение на zip, откройте в архиваторе).

Платформа 1С для обмена данными предоставляет несколько вариантов, основной из которых – также XML.

1. Самый простой метод – использование функции СокрЛП() или Строка(). В тексте запроса можно использовать функцию ПРЕДСТАВЛЕНИЕ(). Результат их действия один и тот же – они генерируют строковое представление любого объекта 1С для пользователя.

Для справочника по умолчанию это будет его наименование. Для документа – имя документа, номер и дата.

ДокументСсылка = Документы.РеализацияТоваровУслуг.НайтиПоНомеру("12");
Сообщить(СокрЛП(ДокументСсылка)); //будет "Реализация товаров и услуг 12 от 14.15.2010 22:30:22"

2. Любой объект 1С (с ограничениями) может быть преобразован в XML и обратно. Процесс преобразования называется сериализация.

СтрокаВидаXml = XMLСтрока(Значение); //получаем XML из значения 1С
Значение1С = XMLЗначение(Тип("СправочникСсылка.Номенклатура"),СтрокаВидаXml); //получаем значение 1С из строки XML, необходимо указать тип 1С, который должен быть получен

3. Существует собственный способ платформы 1С преобразовать в строку любой объект 1С. Он мигрировал из версии 1С 7.7. Этот формат не понимают другие программы, но понимает другая 1С, что позволяет легко использовать его для обмена между базами 1С.

Строка = ЗначениеВСтрокуВнутр(Значение1С); //получаем строку 1С из значения 1С
ЗначениеВФайл("C:\MyFile.txt", Значение1С); //другой вариант, получаем файл с сохраненной строкой из значения 1С
Значение1С = ЗначениеИзСтрокиВнутр(Строка); //обратно из строки 1С
Значение1С = ЗначениеИзФайла("C:\MyFile.txt"); //обратно из файла

 

Редактирование строк 1С на форме

Кроме работы со строками 1С в программе на языке 1С конечно хотелось бы, чтобы пользователь мог их редактировать. Для этого есть несколько возможностей:

1. Самый простой способ – запросить ввод строки 1С по требованию. Этот способ используют при обучении программированию 1С, в жизни он применяется гораздо реже (но применяеся!).

Переменная = "";
Строка = ВвестиЗначение(Переменная, "Введите ФИО");

2. Для вывода реквизита объекта 1С (справочника/документа) или реквизита формы (см. урок по формам) чаще всего используют поле ввода. Это самый распространенный в 1С инструмент для работы пользователя с редактированием полей.

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

  • Галочка Многострочный режим редактирования
  • Галочка Расширенное редактирование (доступна если установлена предыдущая галочка)
  • Галочка Режим пароля (см. урок про пароли).

4. Если всех возможностей поля ввода Вам не хватает – есть встроенный редактор. Для его добавлению на форму нужно в меню Форма/Вставить элемент управления добавить Поле текстового документа. В его свойствах можно указать режим его работы – свойство Расширение.

Поле текстового документа нельзя связать напрямую с данными. Необходимо в обработчике события ПриОткрытии() формы (см. урок про события) прописать функцию:

ЭлементыФормы.ИмяЭлементаПолеТекстовогоДокумента.УстановитьТекст(ЗначениеСтрока); //здесь ЗначениеСтрока – это текст полученный, например из реквизита

А в обработчика сохранения – например, в кнопке Сохранить – добавить сохранение:

ЗначениеСтрока = ЭлементыФормы.ИмяЭлементаПолеТекстовогоДокумента.ПолучитьТекст(); //ЗначениеСтрока здесь – это реквизит, куда мы сохраняем значение

5. В 1С версии 8.2.11, в управляемых формах, появилась новая возможность представления строки 1С – поле Форматированный документ.

  • Добавьте реквизит формы (см. урок про управляемые формы 1С), укажите тип реквизита – форматированный документ, установите галочку Сохраняемые данные

  • Перетащите реквизит на форму – он отобразится как поле для редактирования тестового документа
  • Добавьте новый элемент управляемой формы «Группа – командная панель», в его свойствах установите свойство Источник команд – имя добавленного форматированного документа.

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

  • В объект 1С, форму которого мы делаем (справочник, документ, обработка и т.п.) – добавьте реквизит с типом ХранилищеЗначения
  • В функции ПриЧтенииНаСервере() установим текст из реквизита


    //здесь Реквизит – это добавленный реквизит объекта 1С
    //здесь ФорматированныйДокумент – это имя поля на форме для редактирования
    &НаСервере
    Процедура ПриЧтенииНаСервере(ТекущийОбъект)
         ФорматированныйДокумент = ТекущийОбъект.Реквизит.Получить();
    КонецПроцедуры

  • В функции ПередЗаписьюНаСервере() или по кнопке запишем текст из поля

    &НаСервере
    Процедура ПриЧтенииНаСервере(ТекущийОбъект)
         ТекущийОбъект.Реквизит = Новый ХранилищеЗначения(ФорматированныйДокумент);
    КонецПроцедуры

 


Проголосовать за этот пост:

1 Star2 Stars3 Stars4 Stars5 Stars (34 голосов, среднее: 4,65 из 5)
Загрузка...

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