У «Практикума» вышел курс «Разработчик 1С», и в прошлый раз мы рассказали, что это за язык программирования и зачем он нужен. Теперь настало время основных конструкций языка.
Основное про 1С:
- Сама 1С — это компания, которая создаёт ПО в России.
- Язык программирования 1С используется в продуктах этой компании, чтобы создавать решения для автоматизации бизнеса: интернет-магазины, бухгалтерию, складской учёт и т. д.
- В 1С можно писать всё на русском, поэтому конструкции будут выглядеть непривычно, но они работают — и это главное.
- Специалисты 1С нужны, чтобы создавать новые и поддерживать старые системы автоматизации бизнеса в России
- Это хардкор, и за это платят.
В 1С после каждой команды ставится точка с запятой, а комментарии обозначаются двумя косыми чертами:
// Привет, это комментарий в 1С
Единственное отличие языка 1С от остальных, привычных нам, — в том, что в нём всё по-русски, а это выглядит необычно и иногда сбивает с толку. Но это вопрос практики: пара недель программирования на 1С, и всё станет привычным.
Переменные в 1С
Для объявления переменной используется команда Перем — она показывает, что дальше будет название новой переменной.
Перем ЖурналКод;
Переменные также можно объявлять не явно, просто присваивая им конкретное значение:
СообщПривет = "Привет, это журнал «Код»"
Присваивание и сравнение в 1С
❗️ Сейчас будет сложно. В языке 1С присваивание и сравнение обозначается одним знаком равенства:
// Это — присваивание
Итог = 10;
// А это — сравнение
Если Отчёт = 15…
Как их различать — зависит от контекста. Если знак находится внутри условного оператора, то это сравнение. Если после переменной и за ним идут какие-то действия — это присваивание. Но можно использовать его внутри одной конструкции — в этом случае первый знак будет присваиванием, второй — сравнением.
Типы данных в 1С
В 1С есть все привычные типы данных: числа, строки и логические переменные. Дробная часть числа отделяется точкой:
// целое число
А = 10
// дробное
Б = 123.456
// строка
В = "строка"
Дата берётся в одинарные кавычки:
ДатаОтчета = '2023.07.25';
Ещё в 1С есть массивы — с ними работают точно так же, как в других языках:
// в массиве сразу 3 элемента
Числа = Новый Массив(3);
// присваиваем значение первому элементу
Числа[0] = 5;
Условный оператор в 1С
Внутрь действий условного оператора можно вкладывать сколько угодно команд — все они окажутся между словами Тогда и Иначе:
Если Прибыль > 20000 Тогда
Результат = "План выполнен";
Иначе
Результат = "План не выполнен";
КонецЕсли;
Точка с запятой ставится только после КонецЕсли
. Если блок Иначе не нужен, тогда вместо него сразу пишется КонецЕсли.
Оператор множественного выбора в 1С
То же самое, что условный оператор, только можно перейти сразу к следующему условию с помощью конструкции ИначеЕсли
:
Если Прибыль > 20000 Тогда
Результат = "План выполнен полностью";
ИначеЕсли Прибыль > 10000 Тогда
Результат = "План выполнен на базовом уровне";
Иначе
Результат = "План не выполнен";
КонецЕсли;
Цикл с неизвестным числом повторений в 1С
В других языках это называется циклом с предусловием: пока условие не выполнится — цикл продолжает работу:
Пока НомерСотрудника <= 10 Цикл
// команды цикла
КонецЦикла;
Цикл с известным числом повторений в 1С
Обычный цикл for, только записанный по-русски. При каждом шаге переменная цикла увеличивается на единицу:
Для НомерСотрудника = 1 По 15 Цикл
// команды цикла
КонецЦикла;
Ещё есть перебор диапазона — там переменная цикла берётся из значений другой переменной:
Для каждого НомерСотрудника Из ТаблицаСотрудников Цикл
// команды цикла
КонецЦикла;
Функции в 1С
Для обозначения функций используется слово Функция
:-) С ними всё как обычно: есть название, а в скобках — параметры. Ещё функция должна что-то возвращать, для этого используется команда Возврат
:
Функция РассчитатьНалог(Сотрудник, ПериодВДнях)
// команды функции
Возврат Налог;
КонецФункции
Процедуры в 1С
Отличие процедур от функций в том, что они не возвращают никаких значений, а просто делают то, что у них внутри. При этом у процедуры тоже могут быть параметры — их пишут в скобках после имени:
Процедура ЗавестиТоварНаСклад (Товар)
// команды процедуры
КонецПроцедуры
Объекты в 1С
Формально в языке 1С нет ООП с его классами, объектами и методами. Но понятие объекта всё равно есть — это когда мы создаём что-то новое на основе уже готовых типов данных или переменных:
Итог = Новый Отчёт();
Также можно использовать объекты из встроенных справочников — это здорово упрощает разработку:
Справочники.Номенклатура.СоздатьЭлемент();
Документы.Накладная.НайтиПоНомеру();