Перейти к содержанию
Educora
Начальный16 мин4 / 14

Встроенный язык: синтаксис, переменные и типы

Изучи грамматику языка 1С, примитивные типы (`Число`, `Строка`, `Дата`, `Булево`, `Неопределено`), операторы, строковые функции и функции работы с датами.

Проверь себя
В этом уроке ты узнаешь
  • Соблюдать правила синтаксиса языка 1С
  • Использовать примитивные типы, литералы и операторы
  • Обрабатывать строки и даты стандартными функциями

Русские ключевые слова поначалу могут показаться непривычными, но грамматика языка 1С похожа на Pascal и Basic и очень проста. Освоив несколько правил, ты сможешь читать код любой типовой конфигурации. В этом уроке разберём «азбуку» языка: переменные, типы, операторы, строки и даты.

Правила синтаксиса

  • Язык не различает регистр букв: Сумма, сумма и СУММА — одна и та же переменная.
  • Каждый оператор заканчивается ;; блоки закрываются не скобками, а ключевыми словами: КонецЕсли, КонецЦикла, КонецПроцедуры.
  • Комментарий начинается с // и продолжается до конца строки.
  • Имя состоит из букв, цифр и _ и не начинается с цифры; допустимы кириллица и латиница.
  • Строковый литерал записывается в двойных кавычках; кавычка внутри удваивается, а каждая новая строка многострочного литерала начинается с |.

Переменные и примитивные типы

1С — язык с динамической типизацией: переменная создаётся при первом присваивании и получает тип от значения. Переменные уровня модуля объявляются через Перем, а внутри процедур обычно просто присваивают значение. Тип значения возвращает функция ТипЗнч().

ТипПо-английскиПример литерала
ЧислоNumber42, 2.5, -7
СтрокаString"Bakı"
ДатаDate'20260927', '20260927153000'
БулевоBooleanИстина / Ложь (True / False)
НеопределеноUndefinedНеопределено
NULLNullNULL — пустое значение в результатах запроса
Дата всегда хранит и время; пустая дата — '00010101'. В коде дробная часть пишется через точку: 2.5.
1C
Количество = 12;             // Число
Цена = 2.5;                  // Число с дробной частью
Название = "Чай ""Гранулированный"""; // кавычки внутри удваиваются
ДатаПродажи = '20260927';    // Дата
Оплачено = Ложь;             // Булево
Скидка = Неопределено;

Если ТипЗнч(Цена) = Тип("Число") Тогда
    Сообщить("Цена - число");
КонецЕсли;
Сообщить(Название);
Ожидаемый результат
Цена - число
Чай "Гранулированный"
Переменные появляются при присваивании. Тип("Число") превращает имя типа в объект типа.

Операторы

Арифметические операторы: + - * / и остаток от деления %. Строки соединяются через +; число, прибавленное к строке, автоматически превращается в строку. Сравнение: = <> < > <= >=. Логические операторы: И, ИЛИ, НЕ. Внимание: = — это и присваивание, и сравнение, смысл определяется контекстом.

1C
А = 17;
Б = 5;
Сообщить(А + Б);
Сообщить(А * Б);
Сообщить(А % Б);        // остаток от деления
Сообщить(Цел(А / Б));   // целая часть
Сообщить("Salam, " + "Aysel" + "!");
Сообщить("Возраст: " + 15);
Ожидаемый результат
22
85
2
3
Salam, Aysel!
Возраст: 15

Строки и даты

ФункцияЧто делает
СтрДлина(С)длина строки
СокрЛП(С)удаляет пробелы в начале и в конце
ВРег(С) / НРег(С)переводит в верхний / нижний регистр
Лев(С, N) / Прав(С, N) / Сред(С, Нач, N)N символов слева / справа / из середины
СтрНайти(С, Подстрока)позиция подстроки (с 1), 0 если не найдена
СтрЗаменить(С, Что, НаЧто)заменяет все вхождения
СтрРазделить(С, ",")разбивает строку в массив
СтрШаблон("%1 - %2", А, Б)подставляет значения вместо %1, %2
1C
Текст = СокрЛП("  Educora 1C  ");
Сообщить(СтрДлина(Текст));
Сообщить(ВРег(Текст));
Сообщить(Лев(Текст, 7));
Сообщить(СтрНайти(Текст, "1C"));
Сообщить(СтрЗаменить(Текст, " ", "_"));
Сообщить(СтрШаблон("%1: %2 уроков", Текст, 14));
Ожидаемый результат
10
EDUCORA 1C
Educora
9
Educora_1C
Educora 1C: 14 уроков

С датами работать тоже просто. Прибавить к дате число — значит прибавить секунды (сутки = 86400 секунд), и разность двух дат тоже выражается в секундах. Функции НачалоМесяца, КонецМесяца, НачалоДня, ДобавитьМесяц упрощают работу с периодами, а Формат() выводит даты и числа в нужном виде.

1C
Д = '20260927';
Сообщить(Формат(Д, "ДФ=dd.MM.yyyy"));
Сообщить(Формат(НачалоМесяца(Д), "ДФ=dd.MM.yyyy"));
Сообщить(Формат(КонецМесяца(Д), "ДФ=dd.MM.yyyy"));
Сообщить(Формат(ДобавитьМесяц(Д, 5), "ДФ=dd.MM.yyyy"));
Сообщить(Формат(Д + 86400 * 7, "ДФ=dd.MM.yyyy"));
Сообщить(('20261231' - Д) / 86400);   // дней до конца года
Сообщить(Формат(Год(Д), "ЧГ=0"));
Ожидаемый результат
27.09.2026
01.09.2026
30.09.2026
27.02.2027
04.10.2026
95
2026

Главное

  • Язык не различает регистр, операторы заканчиваются ;, блоки закрываются ключевыми словами.
  • Примитивные типы: Число, Строка, Дата, Булево, Неопределено, NULL.
  • Литерал даты: 'ГГГГММДД'; прибавление числа к дате добавляет секунды.
  • % — остаток от деления, Цел() — целая часть.
  • Для вывода чисел и дат используй Формат(), например "ЧГ=0", "ДФ=dd.MM.yyyy".

Проверь себя

Вопросов: 10. Каждый правильный ответ приносит XP.

1 / 10
Что выведет Сообщить(17 % 5);?