Формат операторов

Встроенный язык

Синтаксис и применение Формат операторов в платформе 1С:Предприятие. Описание и примеры кода.

Полное описание, параметры и ограничения

Формат операторов

Операторы имеют вид стандартного обращения к процедуре, за исключением оператора присваивания (А = В;) и синтаксических конструкций встроенного языка (например, таких как Для, Пока, Если). Между собой операторы обязательно следует разделять символом ";" (точкой с запятой). Конец строки не является признаком конца оператора, т.е. операторы могут свободно переходить через строки и продолжаться на другой строке. Можно располагать произвольное число операторов в одной строке, разделяя их символом ";".

Операторы языка в программном модуле можно подразделить на две категории: операторы объявления переменных и исполняемые операторы.

Операторы объявления переменных создают имена переменных, которыми манипулируют исполняемые операторы.

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

~метка:Оператор[(параметры)] [ДобКлючевоеСлово];

В качестве меток используются специальные идентификаторы, начинающиеся с символа ‘~’ (тильда) и состоящие из последовательности букв, цифр и символов ‘_’ (подчеркивание). Чтобы пометить оператор, надо поместить перед ним метку и следующий за ней символ ":".

Пример:

~метка:А=В;

Практические примеры

Точка с запятой и вертикальная черта: собрать учебное сообщение

Одна арифметическая операция переносится между строками, а строковый литерал продолжается специальным символом. Скобки и индексы показаны на собственной позиции заказа.

Где и как запускать

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

Подготовка

  1. В отдельной учебной базе 8.5.1.1343 создайте общий модуль УчебныйЯзык: Сервер=Истина, Глобальный=Ложь, ВызовСервера=Ложь, Привилегированный=Ложь. Клиентские и внешнее соединение отключены; ПовторноеИспользованиеВозвращаемыхЗначений=НеИспользовать.

  2. Вставьте весь приведённый текст в этот общий модуль. ВыполнитьПример — экспортная точка входа; остальные процедуры и функции располагаются рядом, а не внутри неё.

  3. В своей внешней учебной обработке создайте управляемую форму, команду Выполнить и кнопку. Клиентский обработчик Выполнить(Команда) вызывает свою процедуру ВыполнитьНаСервере(); она имеет директиву &НаСервереБезКонтекста и одну строку УчебныйЯзык.ВыполнитьПример();. Это серверный вызов общего модуля, а не разрешение клиенту прямо обращаться к серверной библиотеке.

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

  5. HTML только показывает BSL. Код в 1С не запускался; перечисленные результаты и отрицательные опыты проверяйте самостоятельно в собственном стенде.

Процедура ВыполнитьПример() Экспорт
    Позиция = Новый Структура("Товар,Цена,Количество", "Книга ""Азбука""", 250.50, 3);
    Позиции = Новый Массив;
    Позиции.Добавить(Позиция);
    Сумма = Позиции[0].Цена *
        Позиции[0]["Количество"];
    Итог = Окр(
        Сумма,
        2);
    Сообщение = "Учебная заявка
    |Товар: " + Позиция.Товар + Символы.ПС + "Количество: " + Строка(Позиция.Количество);
    Сообщить(Итог = 751.50);
    Сообщить(Позиции[0] = Позиция);
    Сообщить(Позиции[0]["Количество"] = 3);
    Сообщить(СтрНайти(Сообщение, "Учебная заявка" + Символы.ПС + "Товар:") = 1);
    Сообщить(Позиция.Товар = "Книга ""Азбука""");
    Сообщить(Сообщение);
КонецПроцедуры

Разбор по шагам

  1. 250.50 использует точку как десятичный разделитель исходного числового литерала. Три книги дают 751.50; формат отображения сообщения может зависеть от локали.

  2. Оператор Сумма = ... продолжается на следующей строке до ;. Конец обычной строки сам по себе не завершает оператор.

  3. Параметры Окр разделены запятой и заключены в круглые скобки. Вызов тоже занимает несколько строк до точки с запятой.

  4. Позиции[0] выбирает элемент массива по нулевому индексу. ["Количество"] обращается к свойству по строковому имени; это иной смысл тех же квадратных скобок.

  5. Внутри литерала после Учебная заявка новая строка начинается с |. Вертикальная черта обозначает продолжение и не входит в данные; между строками появляется перенос.

  6. Две кавычки подряд внутри литерала дают одну кавычку в значении. Отдельный Символы.ПС добавляет ещё один явный перенос при соединении строк.

Как проверить результат

  1. Пять проверок Истина, затем сообщение на трёх строках: заголовок, товар с кавычками вокруг Азбука и количество 3.

  2. Не удаляйте ; между независимыми присваиваниями. Для обычного арифметического переноса | не нужен, для продолжения строкового литерала — обязателен.

Ожидаемый результат

Разные специальные символы связаны с реальной подготовкой одного сообщения: граница оператора, параметры, индексы, имя свойства и многострочный текст.

На что обратить внимание

  1. Вертикальная черта в начале продолжения — синтаксис литерала, а не знак разделения логических условий.

  2. Число 0 внутри [] — индекс массива, строка Количество внутри [] — имя свойства объекта. Подмена одного другим вызывает другую операцию.

  3. Комментарии и метки имеют собственные правила; в этом модуле они не нужны. Наличие такого символа в текстовых данных не делает данные исполняемым кодом.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.