Разработка и Конфигурация · 9 мин
Что означает оператор 1С: разбираем виды и назначение
Что такое оператор в 1С, какие операторы есть во встроенном языке и запросах: арифметические, логические, присваивания, циклы. Примеры и типичные ошибки.
Термин «оператор 1С» встречается в двух разных смыслах, и это часто путает начинающих. В первом случае речь идёт об операторах встроенного языка программирования 1С — конструкциях вроде «Если», «Пока», «Для», знаках «+», «=», «И», «ИЛИ». Во втором — об операторах языка запросов: ВЫБРАТЬ, ИЗ, ГДЕ, СОЕДИНЕНИЕ и других. Оба смысла корректны, и дальше мы разберём каждый из них.
Отдельно стоит упомянуть третье бытовое значение: иногда «оператором 1С» называют сотрудника, который вводит данные в программу (оператор ПК). В этой статье речь идёт именно о синтаксисе языка, поскольку именно такой вопрос возникает у тех, кто начинает программировать в 1С или читать чужой код.
Понимание того, что означает тот или иной оператор, — базовый навык для чтения модулей, отладки и написания собственных процедур. Без него невозможно ни изменить типовую конфигурацию, ни разобраться в ошибке, которую выдаёт платформа.
Что такое оператор во встроенном языке 1С
Встроенный язык 1С (его ещё называют языком модулей) состоит из инструкций, которые выполняются последовательно. Оператор — это законченная инструкция, завершающаяся точкой с запятой. Каждый оператор либо что-то вычисляет, либо изменяет состояние программы: присваивает значение переменной, вызывает процедуру, управляет потоком выполнения.
Самый частый пример — оператор присваивания. Он записывается через знак «=» и означает «поместить значение справа в переменную слева»:
Количество = 10;
Сумма = Количество * Цена;
Важно не путать присваивание со сравнением. В 1С для сравнения в условиях используется тот же знак «=», но внутри конструкции «Если ... Тогда». Контекст определяет смысл: вне условия «=» — это присваивание, внутри условия — проверка равенства.
Арифметические и строковые операторы
Арифметические операторы выполняют вычисления над числами: сложение «+», вычитание «-», умножение «*», деление «/». Остаток от деления получают через оператор «%», который работает с целыми числами. Унарный минус меняет знак числа: -Сумма.
Оператор «+» в 1С перегружен: кроме сложения чисел он выполняет конкатенацию (склеивание) строк. Если хотя бы один из операндов — строка, результатом будет строка:
ФИО = Фамилия + " " + Имя + " " + Отчество;
Результат = "Итого: " + 100; // получится строка "Итого: 100"
Типичная ошибка — сложение строки с числом там, где ожидалась арифметика. Если переменная содержит строку «10», выражение «10» + 5 даст строку «105», а не число 15. Перед вычислениями строковые значения из реквизитов или файлов следует явно преобразовывать через функцию Число().
Логические операторы и операторы сравнения
Операторы сравнения возвращают значение типа Булево — Истина или Ложь. К ним относятся: «=» (равно), «<>» (не равно), «>», «<», «>=», «<=». Их используют в условиях, циклах и при формировании отборов.
Логические операторы объединяют условия: И (оба условия истинны), ИЛИ (хотя бы одно истинно), НЕ (отрицание). Пример составного условия:
Если Сумма > 10000 И Статус = "Оплачен" Тогда
Сообщить("Крупный оплаченный заказ");
КонецЕсли;
Приоритет операций стандартный: сначала НЕ, затем И, затем ИЛИ. При сложных условиях лучше ставить скобки явно — это устраняет двусмысленность и защищает от ошибок при доработке кода другими специалистами.
Условный оператор и оператор выбора
Условный оператор «Если ... Тогда ... Иначе ... КонецЕсли» управляет ветвлением программы. Код внутри блока выполняется только когда условие истинно. Ветка «ИначеЕсли» позволяет проверить несколько взаимоисключающих условий подряд:
Если Сумма >= 100000 Тогда
Скидка = 10;
ИначеЕсли Сумма >= 50000 Тогда
Скидка = 5;
Иначе
Скидка = 0;
КонецЕсли;
Есть и сокращённая форма — тернарный оператор через функцию «?»: Скидка = ?(Сумма > 100000, 10, 0);. Она удобна для простых присваиваний, но при вложенных проверках быстро становится нечитаемой, поэтому злоупотреблять ею не стоит.
Оператор «Попытка ... Исключение ... КонецПопытки» относится к той же группе управляющих конструкций. Он перехватывает ошибки выполнения и позволяет обработать их штатно, например записать сообщение в журнал регистрации вместо аварийного прерывания.
Операторы циклов: Для, Пока и обход коллекций
Циклы повторяют блок кода несколько раз. Оператор «Для» используют, когда число итераций известно заранее, а также для обхода коллекций в форме «Для Каждого Элемент Из Коллекция Цикл»:
Для Каждого Строка Из ТаблицаТоваров Цикл
Строка.Сумма = Строка.Цена * Строка.Количество;
КонецЦикла;
Оператор «Пока» выполняет тело цикла, пока условие истинно. Его применяют, когда число итераций заранее неизвестно — например, при последовательном чтении данных из выборки запроса: Пока Выборка.Следующий() Цикл ... КонецЦикла;.
Внутри циклов работают операторы «Прервать» (досрочный выход из цикла) и «Продолжить» (переход к следующей итерации). Они делают код компактнее, но при глубокой вложенности усложняют чтение — используйте их осознанно.
Операторы языка запросов 1С
Язык запросов — отдельный декларативный язык внутри платформы, похожий на SQL. Его ключевые слова тоже называют операторами. Основные из них:
- ВЫБРАТЬ — указывает, какие поля получить из базы данных;
- ИЗ — задаёт источник данных (таблицу, виртуальную таблицу);
- ГДЕ — фильтрует строки по условию;
- СГРУППИРОВАТЬ ПО — группирует данные для агрегатных функций СУММА, КОЛИЧЕСТВО, МАКСИМУМ;
- УПОРЯДОЧИТЬ ПО — сортирует результат;
- СОЕДИНЕНИЕ (ЛЕВОЕ, ПРАВОЕ, ПОЛНОЕ, ВНУТРЕННЕЕ) — связывает несколько таблиц;
- ОБЪЕДИНИТЬ — склеивает результаты нескольких запросов;
- ПОМЕСТИТЬ — сохраняет промежуточный результат во временную таблицу.
Пример простого запроса с несколькими операторами:
ВЫБРАТЬ
Продажи.Номенклатура,
СУММА(Продажи.Количество) КАК Количество
ИЗ
РегистрНакопления.Продажи КАК Продажи
ГДЕ
Продажи.Период МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
Продажи.Номенклатура
Здесь «&НачалоПериода» — параметр запроса, а «КАК» — оператор задания псевдонима поля. В отличие от встроенного языка, запрос не выполняет действия по изменению данных: он только читает и преобразует выборку.
Встроенный язык и язык запросов
Выполняются на сервере или клиенте, изменяют данные и управляют логикой: Если, Пока, присваивание. Подходят для обработки и записи
Только читают данные из базы: ВЫБРАТЬ, ГДЕ, СОЕДИНЕНИЕ. Выполняются на уровне СУБД, быстрее для массовых выборок
Как проверить, что оператор работает правильно
Самый надёжный способ понять, что означает и делает конкретный оператор, — отладчик конфигуратора. Поставьте точку останова на нужной строке, запустите отладку и смотрите значения переменных в табло или через «Вычислить выражение» (Shift+F9). Так видно, какое значение даёт выражение и в какую ветку условия попадает выполнение.
Для запросов используйте консоль запросов (в типовых конфигурациях на базе БСП она входит в состав, для остальных есть внешние обработки): она позволяет выполнить текст запроса с реальными параметрами и увидеть результат до встраивания в код.
- 1Выделите оператор в модуле и нажмите Ctrl+F1 — откроется синтакс-помощник с описанием и примерами
- 2Поставьте точку останова и проверьте в отладчике значения до и после выполнения
- 3Для запроса — выполните его в консоли запросов с теми же параметрами
- 4Убедитесь, что результат совпадает с ожиданием, прежде чем переносить код в рабочую базу
Синтакс-помощник (Ctrl+F1 или через меню «Справка») — встроенный справочник по всем операторам, функциям и объектам платформы. Это первый источник, к которому стоит обращаться: описания там точные и соответствуют установленной версии платформы.
Что важно запомнить
Оператор 1С — это команда встроенного языка или языка запросов. В модуле это присваивание, арифметика, сравнения, условия и циклы; в запросе — ВЫБРАТЬ, ГДЕ, СОЕДИНЕНИЕ и другие ключевые слова. Разобраться в любом операторе помогают синтакс-помощник, отладчик и консоль запросов.
Частые вопросы
Чем оператор отличается от функции в 1С?
Оператор — это синтаксическая конструкция языка (Если, Пока, «+», «=»), а функция — именованный блок кода, который вызывается по имени и может возвращать значение. Операторы встроены в синтаксис, функции можно создавать самостоятельно или брать из библиотеки платформы.
Что означает знак «&» в тексте запроса 1С?
Амперсанд обозначает параметр запроса. Значение параметра передаётся через метод УстановитьПараметр объекта Запрос до его выполнения. Так запрос становится универсальным и защищённым от подстановки произвольных строк.
Что делает оператор «Возврат»?
Он досрочно завершает выполнение процедуры или функции. В функции после «Возврат» указывается возвращаемое значение, в процедуре оператор пишется без значения и просто прерывает выполнение.
Можно ли использовать русские и английские варианты операторов одновременно?
Да, встроенный язык 1С поддерживает оба синтаксиса: If/Then вместо Если/Тогда и так далее. Платформа понимает смешанный код, но в одном проекте принято придерживаться одного варианта ради единообразия и читаемости.
Что означает «оператор» в должности «оператор 1С»?
Это не про язык программирования: так называют сотрудника, который вводит первичные документы и данные в программу 1С. К навыкам разработки эта роль отношения не имеет, достаточно уверенной работы с интерфейсом конфигурации.