К статье
Практический материал

Разработка и Конфигурация · 9 мин

Что означает оператор 1С: разбираем виды и назначение

Что такое оператор в 1С, какие операторы есть во встроенном языке и запросах: арифметические, логические, присваивания, циклы. Примеры и типичные ошибки.

Термин «оператор 1С» встречается в двух разных смыслах, и это часто путает начинающих. В первом случае речь идёт об операторах встроенного языка программирования 1С — конструкциях вроде «Если», «Пока», «Для», знаках «+», «=», «И», «ИЛИ». Во втором — об операторах языка запросов: ВЫБРАТЬ, ИЗ, ГДЕ, СОЕДИНЕНИЕ и других. Оба смысла корректны, и дальше мы разберём каждый из них.

Отдельно стоит упомянуть третье бытовое значение: иногда «оператором 1С» называют сотрудника, который вводит данные в программу (оператор ПК). В этой статье речь идёт именно о синтаксисе языка, поскольку именно такой вопрос возникает у тех, кто начинает программировать в 1С или читать чужой код.

Понимание того, что означает тот или иной оператор, — базовый навык для чтения модулей, отладки и написания собственных процедур. Без него невозможно ни изменить типовую конфигурацию, ни разобраться в ошибке, которую выдаёт платформа.

Что такое оператор во встроенном языке 1С

Встроенный язык 1С (его ещё называют языком модулей) состоит из инструкций, которые выполняются последовательно. Оператор — это законченная инструкция, завершающаяся точкой с запятой. Каждый оператор либо что-то вычисляет, либо изменяет состояние программы: присваивает значение переменной, вызывает процедуру, управляет потоком выполнения.

Самый частый пример — оператор присваивания. Он записывается через знак «=» и означает «поместить значение справа в переменную слева»:

Количество = 10;

Сумма = Количество * Цена;

Важно не путать присваивание со сравнением. В 1С для сравнения в условиях используется тот же знак «=», но внутри конструкции «Если ... Тогда». Контекст определяет смысл: вне условия «=» — это присваивание, внутри условия — проверка равенства.

Арифметические и строковые операторы

Арифметические операторы выполняют вычисления над числами: сложение «+», вычитание «-», умножение «*», деление «/». Остаток от деления получают через оператор «%», который работает с целыми числами. Унарный минус меняет знак числа: -Сумма.

Оператор «+» в 1С перегружен: кроме сложения чисел он выполняет конкатенацию (склеивание) строк. Если хотя бы один из операндов — строка, результатом будет строка:

ФИО = Фамилия + " " + Имя + " " + Отчество;

Результат = "Итого: " + 100; // получится строка "Итого: 100"

Типичная ошибка — сложение строки с числом там, где ожидалась арифметика. Если переменная содержит строку «10», выражение «10» + 5 даст строку «105», а не число 15. Перед вычислениями строковые значения из реквизитов или файлов следует явно преобразовывать через функцию Число().

Логические операторы и операторы сравнения

Операторы сравнения возвращают значение типа Булево — Истина или Ложь. К ним относятся: «=» (равно), «<>» (не равно), «>», «<», «>=», «<=». Их используют в условиях, циклах и при формировании отборов.

Логические операторы объединяют условия: И (оба условия истинны), ИЛИ (хотя бы одно истинно), НЕ (отрицание). Пример составного условия:

Если Сумма > 10000 И Статус = "Оплачен" Тогда

Сообщить("Крупный оплаченный заказ");

КонецЕсли;

Приоритет операций стандартный: сначала НЕ, затем И, затем ИЛИ. При сложных условиях лучше ставить скобки явно — это устраняет двусмысленность и защищает от ошибок при доработке кода другими специалистами.

Типичные ошибки с операторами
01
Путать присваивание и сравнение: в 1С оба используют знак «=», смысл зависит от контекста
02
Складывать строку с числом и ожидать арифметический результат — получится конкатенация
03
Забывать точку с запятой в конце оператора — платформа выдаст синтаксическую ошибку
04
Использовать И вместо ИЛИ (и наоборот) в составных условиях — отбор сработает не так, как ожидалось

Условный оператор и оператор выбора

Условный оператор «Если ... Тогда ... Иначе ... КонецЕсли» управляет ветвлением программы. Код внутри блока выполняется только когда условие истинно. Ветка «ИначеЕсли» позволяет проверить несколько взаимоисключающих условий подряд:

Если Сумма >= 100000 Тогда

Скидка = 10;

ИначеЕсли Сумма >= 50000 Тогда

Скидка = 5;

Иначе

Скидка = 0;

КонецЕсли;

Есть и сокращённая форма — тернарный оператор через функцию «?»: Скидка = ?(Сумма > 100000, 10, 0);. Она удобна для простых присваиваний, но при вложенных проверках быстро становится нечитаемой, поэтому злоупотреблять ею не стоит.

Оператор «Попытка ... Исключение ... КонецПопытки» относится к той же группе управляющих конструкций. Он перехватывает ошибки выполнения и позволяет обработать их штатно, например записать сообщение в журнал регистрации вместо аварийного прерывания.

Операторы циклов: Для, Пока и обход коллекций

Циклы повторяют блок кода несколько раз. Оператор «Для» используют, когда число итераций известно заранее, а также для обхода коллекций в форме «Для Каждого Элемент Из Коллекция Цикл»:

Для Каждого Строка Из ТаблицаТоваров Цикл

Строка.Сумма = Строка.Цена * Строка.Количество;

КонецЦикла;

Оператор «Пока» выполняет тело цикла, пока условие истинно. Его применяют, когда число итераций заранее неизвестно — например, при последовательном чтении данных из выборки запроса: Пока Выборка.Следующий() Цикл ... КонецЦикла;.

Внутри циклов работают операторы «Прервать» (досрочный выход из цикла) и «Продолжить» (переход к следующей итерации). Они делают код компактнее, но при глубокой вложенности усложняют чтение — используйте их осознанно.

Операторы языка запросов 1С

Язык запросов — отдельный декларативный язык внутри платформы, похожий на SQL. Его ключевые слова тоже называют операторами. Основные из них:

  • ВЫБРАТЬ — указывает, какие поля получить из базы данных;
  • ИЗ — задаёт источник данных (таблицу, виртуальную таблицу);
  • ГДЕ — фильтрует строки по условию;
  • СГРУППИРОВАТЬ ПО — группирует данные для агрегатных функций СУММА, КОЛИЧЕСТВО, МАКСИМУМ;
  • УПОРЯДОЧИТЬ ПО — сортирует результат;
  • СОЕДИНЕНИЕ (ЛЕВОЕ, ПРАВОЕ, ПОЛНОЕ, ВНУТРЕННЕЕ) — связывает несколько таблиц;
  • ОБЪЕДИНИТЬ — склеивает результаты нескольких запросов;
  • ПОМЕСТИТЬ — сохраняет промежуточный результат во временную таблицу.

Пример простого запроса с несколькими операторами:

ВЫБРАТЬ

Продажи.Номенклатура,

СУММА(Продажи.Количество) КАК Количество

ИЗ

РегистрНакопления.Продажи КАК Продажи

ГДЕ

Продажи.Период МЕЖДУ &НачалоПериода И &КонецПериода

СГРУППИРОВАТЬ ПО

Продажи.Номенклатура

Здесь «&НачалоПериода» — параметр запроса, а «КАК» — оператор задания псевдонима поля. В отличие от встроенного языка, запрос не выполняет действия по изменению данных: он только читает и преобразует выборку.

Встроенный язык и язык запросов

Операторы встроенного языка

Выполняются на сервере или клиенте, изменяют данные и управляют логикой: Если, Пока, присваивание. Подходят для обработки и записи

Операторы языка запросов

Только читают данные из базы: ВЫБРАТЬ, ГДЕ, СОЕДИНЕНИЕ. Выполняются на уровне СУБД, быстрее для массовых выборок

Как проверить, что оператор работает правильно

Самый надёжный способ понять, что означает и делает конкретный оператор, — отладчик конфигуратора. Поставьте точку останова на нужной строке, запустите отладку и смотрите значения переменных в табло или через «Вычислить выражение» (Shift+F9). Так видно, какое значение даёт выражение и в какую ветку условия попадает выполнение.

Для запросов используйте консоль запросов (в типовых конфигурациях на базе БСП она входит в состав, для остальных есть внешние обработки): она позволяет выполнить текст запроса с реальными параметрами и увидеть результат до встраивания в код.

Как разобраться с незнакомым оператором
  1. 1
    Выделите оператор в модуле и нажмите Ctrl+F1 — откроется синтакс-помощник с описанием и примерами
  2. 2
    Поставьте точку останова и проверьте в отладчике значения до и после выполнения
  3. 3
    Для запроса — выполните его в консоли запросов с теми же параметрами
  4. 4
    Убедитесь, что результат совпадает с ожиданием, прежде чем переносить код в рабочую базу

Синтакс-помощник (Ctrl+F1 или через меню «Справка») — встроенный справочник по всем операторам, функциям и объектам платформы. Это первый источник, к которому стоит обращаться: описания там точные и соответствуют установленной версии платформы.

Итог

Что важно запомнить

Оператор 1С — это команда встроенного языка или языка запросов. В модуле это присваивание, арифметика, сравнения, условия и циклы; в запросе — ВЫБРАТЬ, ГДЕ, СОЕДИНЕНИЕ и другие ключевые слова. Разобраться в любом операторе помогают синтакс-помощник, отладчик и консоль запросов.

Частые вопросы

Чем оператор отличается от функции в 1С?

Оператор — это синтаксическая конструкция языка (Если, Пока, «+», «=»), а функция — именованный блок кода, который вызывается по имени и может возвращать значение. Операторы встроены в синтаксис, функции можно создавать самостоятельно или брать из библиотеки платформы.

Что означает знак «&» в тексте запроса 1С?

Амперсанд обозначает параметр запроса. Значение параметра передаётся через метод УстановитьПараметр объекта Запрос до его выполнения. Так запрос становится универсальным и защищённым от подстановки произвольных строк.

Что делает оператор «Возврат»?

Он досрочно завершает выполнение процедуры или функции. В функции после «Возврат» указывается возвращаемое значение, в процедуре оператор пишется без значения и просто прерывает выполнение.

Можно ли использовать русские и английские варианты операторов одновременно?

Да, встроенный язык 1С поддерживает оба синтаксиса: If/Then вместо Если/Тогда и так далее. Платформа понимает смешанный код, но в одном проекте принято придерживаться одного варианта ради единообразия и читаемости.

Что означает «оператор» в должности «оператор 1С»?

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