Автор: Преподаватель

  • Функции и процедуры в 1С. Эпизод 1.

    Функции и процедуры в 1С. Эпизод 1.


    Пример: Как используется Функции и процедуры в 1С


    Пример 01.

    Функция КвадратЧисла(А)
        Возврат А * А;
    КонецФункции
    
    Сообщить(КвадратЧисла(5)); 
    

    Пример 02.

    Функция МеньшееИзДвух(А, B)
        Если А < B Тогда
            Возврат А;
        Иначе
            Возврат B;
        КонецЕсли;
    КонецФункции
    
    Сообщить(МеньшееИзДвух(7, 12)); 
    

    Пример 03.

    Процедура Приветствие(Имя)
        Сообщить("Привет, " + Имя + "!");
    КонецПроцедуры
    
    Приветствие("Андрей"); 
    

    Пример 04.

    Функция Четное(А)
        Возврат (А % 2 = 0);
    КонецФункции
    
    Сообщить(Четное(10)); // Истина
    Сообщить(Четное(7));  // Ложь
    

    Пример 05.

    Процедура ВывестиЧисла(ДоСколько)
        Для Шаг = 1 По ДоСколько Цикл
            Сообщить(Шаг);
        КонецЦикла;
    КонецПроцедуры
    
    ВывестиЧисла(5); // 1 2 3 4 5
    

    Зачем нужны функции и процедуры?

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

    Решение простое: запихнуть формулу в отдельный блок с именем и вызывать его по необходимости.
    Таким блоком и является функция.


    Пример без функции

    Пусть мы хотим вычислить произведение суммы и разности двух чисел:

    А = 0;
    ВвестиЧисло(А);
    
    B = 0;
    ВвестиЧисло(B);
    
    Результат = (А + B) * (А - B);
    ОткрытьЗначение(Результат);
    

    Всё работает, но что если этот расчёт нужен в нескольких местах программы? Каждый раз придётся копировать одну и ту же строчку (А + B) * (А - B).


    Решение: функция

    Функция позволяет «спрятать» вычисление за коротким именем:

    Функция ПроизведениеСуммыИРазности(А, B)
        Результат = (А + B) * (А - B);
        Возврат Результат;
    КонецФункции
    

    Теперь, когда нужно посчитать, достаточно написать:

    X = ПроизведениеСуммыИРазности(5, 2);
    Сообщить(X);
    

    👉 Код становится чище и удобнее.


    Как устроена функция в 1С

    1. Функция Имя(параметры) — начало.
    2. Внутри — команды, которые выполняются при вызове.
    3. Возврат — обязательная часть, возвращает результат.
    4. КонецФункции — завершение.

    Процедуры

    Процедура похожа на функцию, но не возвращает результат. Она просто выполняет действия.

    Процедура Привет()
        Сообщить("Привет, программист!");
    КонецПроцедуры
    

    Вызов:

    Привет();
    

    Где хранить функции и процедуры?

    Чтобы код был организован, в 1С их обычно пишут в общих модулях.
    Так их можно использовать в разных местах программы.


    Домашка 💡

    1. Напиши функцию МеньшееИзДвух(А, B), которая возвращает меньшее число. Сообщить(МеньшееИзДвух(7, 12)); // 7
    2. Сделай процедуру Приветствие(Имя), которая выводит сообщение «Привет, [Имя]». Приветствие("Андрей"); // Привет, Андрей
    3. Напиши функцию, которая принимает число и возвращает его квадрат.

    Итоги

    • Функция возвращает результат.
    • Процедура выполняет действие, но ничего не возвращает.
    • Всё это помогает писать аккуратный, переиспользуемый код.
  • Комбинирование простых конструкций в 1С

    Комбинирование простых конструкций в 1С


    Пример: Как используется Комбинирование простых конструкций в 1С


    Пример 01.

    Шаг = 1;
    Пока Шаг <= 5 Цикл
        Сообщить(Шаг);
        Шаг = Шаг + 1;
    КонецЦикла;

    Пример 02.

    Число = 2;
    Пока Число <= 20 Цикл
        Сообщить(Число);
        Число = Число + 2;
    КонецЦикла;
    

    Пример 03.

    Счёт = 10;
    Пока Счёт > 0 Цикл
        Сообщить(Счёт);
        Счёт = Счёт - 1;
    КонецЦикла;
    

    Пример 04.

    Число = 1;
    Результат = 1;
    
    Пока Число <= 5 Цикл
        Результат = Результат * Число;
        Число = Число + 1;
    КонецЦикла;
    
    Сообщить("Факториал 5 = " + Результат);
    

    Пример 05.

    X = 1;
    Пока X <> 7 Цикл
        Сообщить("Ищу число: " + X);
        X = X + 1;
    КонецЦикла;
    
    Сообщить("Нашёл число 7!");
    

    Комбинирование простых конструкций в 1С

    Зачем это нужно?

    До этого мы учились использовать простые кирпичики языка 1С:

    • переменные,
    • условные команды,
    • циклы «Для» и «Пока».

    Но реальные программы — это не один цикл и не одно «Если». Обычно приходится комбинировать всё сразу. Сегодня разберём, как из простых деталей собирать более сложные конструкции.


    Вложенные циклы — сила в повторении

    Допустим, у нас есть два простых цикла:

    Для А = 1 По 2 Цикл
        Сообщить(А);
    КонецЦикла;
    
    Для B = 1 По 3 Цикл
        Сообщить(B);
    КонецЦикла;
    

    Отдельно они выводят числа от 1 до 2 и от 1 до 3. А теперь соединим их:

    Для А = 1 По 2 Цикл
        Для B = 1 По 3 Цикл
            Сообщить("A=" + А + "; B=" + B);
        КонецЦикла;
    КонецЦикла;
    

    Что произойдёт?

    • При A = 1 внутренний цикл пройдёт B от 1 до 3.
    • При A = 2 история повторится.

    Итого: 2 * 3 = 6 комбинаций.


    1. — «Тройное комбо»

    Сделай тройной цикл:

    • X от 1 до 10,
    • Y от 10 до 20,
    • Z от 20 до 30.

    Пусть программа выводит все тройки. Проверь, что количество строк равно 10 * 11 * 11 = 1210.


    Циклы + условия = поиск решений

    Пример: найдём все пары чисел от 1 до 9, сумма которых равна 10.

    Для X = 1 По 9 Цикл
        Для Y = 1 По 9 Цикл
            Если X + Y = 10 Тогда
                Сообщить(X + " + " + Y + " = 10");
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
    

    💡 Тут вложенность помогает «перебирать варианты», а условие отбирает подходящие.


    2 .— «Охота за числами»

    1. Найди все комбинации двух чисел от 1 до 30, произведение которых равно 30.
    2. Добавь проверку: если числа одинаковые, выводи текст «квадратное решение».

    3. — «Таблица друзей»

    Представь, что у тебя есть список из трёх имён: Аня, Борис, Вика.
    Сделай программу, которая выводит все возможные пары друзей (Аня-Борис, Борис-Вика и т.д.), но не дублирует зеркальные варианты (Борис-Аня).


    Итоги

    • Вложенные циклы позволяют перебирать комбинации.
    • Добавив условие, можно фильтровать результаты.
    • Такие конструкции — основа для реальных задач: поиск вариантов, подбор данных, проверка условий.
  • Циклы в 1С. Эпизод 2

    Циклы в 1С. Эпизод 2


    Пример: Как используется Циклы в 1С


    Пример 01.

    Шаг = 1;
    Пока Шаг <= 5 Цикл
        Сообщить(Шаг);
        Шаг = Шаг + 1;
    КонецЦикла;

    Пример 02.

    Число = 2;
    Пока Число <= 20 Цикл
        Сообщить(Число);
        Число = Число + 2;
    КонецЦикла;

    Пример 03.

    Счёт = 10;
    Пока Счёт > 0 Цикл
        Сообщить(Счёт);
        Счёт = Счёт - 1;
    КонецЦикла;

    Пример 04.

    Число = 1;
    Результат = 1;
    
    Пока Число <= 5 Цикл
        Результат = Результат * Число;
        Число = Число + 1;
    КонецЦикла;
    
    Сообщить("Факториал 5 = " + Результат);

    Пример 05.

    X = 1;
    Пока X <> 7 Цикл
        Сообщить("Ищу число: " + X);
        X = X + 1;
    КонецЦикла;
    
    Сообщить("Нашёл число 7!");

    Немного напомним

    В прошлый раз мы познакомились с циклом Для — он идеально подходит, когда заранее известно, сколько раз нужно повторить действие.
    Но в жизни не всегда всё так предсказуемо, правда? Иногда мы выполняем что-то «пока не произойдёт событие».

    Именно для этого в 1С есть второй цикл — Пока.


    Как работает цикл «Пока»

    Общая форма записи:

    Пока <Условие> Цикл
        // команды, которые повторяются
    КонецЦикла;
    
    • Всё, что внутри блока, выполняется до тех пор, пока условие остаётся Истина.
    • Как только условие стало Ложь — выполнение цикла прекращается.

    1. Числа от 1 до 10

    Шаг = 1;
    Пока Шаг <= 10 Цикл
        Сообщить(Шаг);
        Шаг = Шаг + 1;
    КонецЦикла;
    

    Компьютер будет проверять: «Шаг ≤ 10?»

    • Если да — выводим число и увеличиваем Шаг.
    • Если нет — цикл останавливается.

    2. Числа от 10 до 100

    Попробуй сам изменить предыдущую программу так, чтобы она печатала числа от 10 до 100.
    Подсказка: начальное значение переменной и условие сравнения — вот ключевые моменты.


    Важный момент — бесконечные циклы

    Что будет, если условие никогда не станет ложным?

    Пока Истина Цикл
        Сообщить("Привет!");
    КонецЦикла;
    

    Или так:

    Пока 1 = 1 Цикл
        Сообщить("Привет!");
    КонецЦикла;
    

    Такой код уйдёт в бесконечный цикл: программа будет печатать «Привет!» без конца и не остановится сама.
    Поэтому с такими конструкциями нужно быть осторожным.


    3. Цикл, который не запустится

    Если условие сразу ложно — тело цикла не выполняется ни разу:

    Пока Ложь Цикл
        Сообщить("Прощай!");
    КонецЦикла;
    

    В этом случае на экран не выведется ничего.


    Задание 1

    Напиши программу, которая считает от 10 до 1 с помощью цикла Пока.
    Программа должна занимать ровно 5 строк.


    Домашнее задание

    Перепиши таблицу умножения на число 7 (как в прошлой части), но теперь используй цикл Пока.
    Код должен быть компактным, а результат — тем же самым.


    Итог

    Вот так «Цикл Пока» превращается в инструмент, который работает до тех пор, пока тебе это нужно. Удобно, когда результат нельзя заранее предсказать.


  • Циклы в 1С. Эпизод 1

    Циклы в 1С. Эпизод 1


    Пример: Как используется Циклы в 1С


    Пример 01.

    Для Шаг = 1 По 20 Цикл
        Сообщить(Шаг);
    КонецЦикла;

    Пример 02.

    Для Шаг = 1 По 15 Цикл
        Если (Шаг % 2 = 1) Тогда
            Сообщить(Шаг);
        КонецЕсли;
    КонецЦикла;

    Пример 03.

    Для Шаг = 1 По 10 Цикл
        Сообщить("3 * " + Шаг + " = " + (3 * Шаг));
    КонецЦикла;

    Пример 04.

    Для Шаг = 1 По 10 Цикл
        Если (Шаг = 5) Тогда
            Сообщить("ПЯТЬ!");
        Иначе
            Сообщить(Шаг);
        КонецЕсли;
    КонецЦикла;

    Пример 05.

    Для Шаг = 1 По 10 Цикл
        Сообщить("Квадрат " + Шаг + " = " + (Шаг * Шаг));
    КонецЦикла;

    Что такое цикл?

    Цикл — это команда, которая говорит компьютеру:
    «Повтори несколько действий много раз, пока я не скажу “стоп”!».

    Без цикла нам пришлось бы писать одинаковые строчки кода вручную.
    Представь: тебе нужно вывести числа от 1 до 10.
    Без цикла это выглядело бы так:

    Сообщить(1);
    Сообщить(2);
    Сообщить(3);
    Сообщить(4);
    Сообщить(5);
    Сообщить(6);
    Сообщить(7);
    Сообщить(8);
    Сообщить(9);
    Сообщить(10);
    

    Уже устал? 😅 А если бы нужно было вывести до 1000?
    Вот тут и приходят на помощь циклы.


    Виды циклов в 1С

    В 1С всего два основных цикла:

    1. Для … По … Цикл — когда мы заранее знаем, сколько раз повторить.
    2. Пока … Цикл — когда повторяем до тех пор, пока выполняется условие.

    Сегодня начнём с первого.


    Цикл «Для»

    Шаблон очень простой:

    Для Переменная = Начало По Конец Цикл
        // тут твои команды
    КонецЦикла;
    
    • Переменная — счётчик (ты придумываешь имя сам, например Шаг).
    • Начало и Конец — диапазон чисел.
    • Всё, что написано внутри (тело цикла), будет выполняться на каждом шаге.

    Вывод чисел от 1 до 10

    Для Шаг = 1 По 10 Цикл
        Сообщить(Шаг);
    КонецЦикла;
    

    ✨ Красота: всего 3 строчки вместо 10.


    Обратный отсчёт (от 10 до 1)

    Для Шаг = 10 По 1 Цикл
        Сообщить(Шаг);
    КонецЦикла;
    

    👉 Важно: цикл в 1С работает только от меньшего числа к большему.
    Поэтому этот пример не сработает.
    Хочешь обратный отсчёт? Нужно хитрить:

    Для Шаг = 1 По 10 Цикл
        Сообщить(11 - Шаг);
    КонецЦикла;
    

    Таблица умножения на 7

    Вспомним школьную задачу: таблица умножения.
    Раньше мы писали 10 строчек, а теперь…

    Для Шаг = 1 По 10 Цикл
        Сообщить("7 * " + Шаг + " = " + (7 * Шаг));
    КонецЦикла;
    

    И всё! 🎉


    Мини-тест (попробуй сам)

    1. Сколько раз выполнится тело цикла?
    Для Шаг = 1 По 1 Цикл
        Сообщить("Привет!");
    КонецЦикла;
    
    1. Напиши цикл, который выводит только чётные числа от 2 до 20.
    2. А сможешь ли ты вывести числа от 100 до 90?

    Домашка 🚀

    1. Напиши программу, которая выводит все числа от 1 до 50, но вместо чисел, кратных 5, пишет слово «Бинго!».
    2. Переделай таблицу умножения для числа 9 (аналогично примеру с 7).
  • условная
команда в 1С

    условная команда в 1С


    Пример: Как используется условные команды в 1С


    Пример 01.

    Число = 10;
    
    Если Число > 5 Тогда
        Сообщить("Число больше пяти");
    Иначе
        Сообщить("Число меньше или равно пяти");
    КонецЕсли;

    Пример 02.

    Имя = "Иван";
    
    Если Имя = "Иван" Тогда
        Сообщить("Привет, Иван!");
    Иначе
        Сообщить("Это не Иван");
    КонецЕсли;

    Пример 03.

    Возраст = 18;
    
    Если Возраст >= 18 Тогда
        Сообщить("Совершеннолетний");
    Иначе
        Сообщить("Несовершеннолетний");
    КонецЕсли;

    Пример 04.

    Оценка = 4;
    
    Если Оценка = 5 Тогда
        Сообщить("Отлично");
    ИначеЕсли Оценка = 4 Тогда
        Сообщить("Хорошо");
    ИначеЕсли Оценка = 3 Тогда
        Сообщить("Удовлетворительно");
    Иначе
        Сообщить("Плохо");
    КонецЕсли;
    

    Пример 05.

    Возраст = 20;
    Город = "Москва";
    
    Если (Возраст >= 18) И (Город = "Москва") Тогда
        Сообщить("Доступ разрешён");
    Иначе
        Сообщить("Доступ запрещён");
    КонецЕсли;

    Условные команды в 1С нужны для того, чтобы программа могла выбирать разные действия в зависимости от ситуации. Если условие выполняется — программа делает одно, если нет — другое. Это делает программу «умной», а не однообразной.

    В 1С такие команды называются:

    • Если — для проверки условия,
    • ИначеЕсли — для дополнительных вариантов,
    • Иначе — для действий, если ни одно условие не подошло.

    Быстрый старт: синтаксис

    // Базовая форма
    
    Если <ЛогическоеВыражение> Тогда
    
    <Команды>
    
    КонецЕсли;
    
    // Расширенная форма
    
    Если <Условие1> Тогда
    
    <Команды1>
    
    ИначеЕсли <Условие2> Тогда
    
    <Команды2>
    
    Иначе
    
    <Команды3>
    
    КонецЕсли;

    Заметь: условие — это всегда выражение, которое возвращает Истина/Ложь.


    Мини‑пример: быстрая валидация ввода

    Возраст = 0;
    
    ВвестиЧисло(Возраст);
    
    Если (Возраст < 0) Тогда
    
    ОткрытьЗначение("Возраст не может быть отрицательным");
    
    ИначеЕсли (Возраст < 18) Тогда
    
    ОткрытьЗначение("Доступ ограничен (до 18)");
    
    Иначе
    
    ОткрытьЗначение("Добро пожаловать!");
    
    КонецЕсли;

    Диапазоны и составные условия (И/ИЛИ/НЕ)

    X = 0; ВвестиЧисло(X);
    
    Если (X >= 10) И (X <= 20) Тогда
    
    ОткрытьЗначение("X в диапазоне [10..20]");
    
    ИначеЕсли ( (X < 0) ИЛИ (X > 100) ) Тогда
    
    ОткрытьЗначение("X вне допустимых границ");
    
    Иначе
    
    ОткрытьЗначение("Обычное значение");
    
    КонецЕсли;

    Даты и условия по времени

    Заказ = ДатаВремя(2025, 9, 15, 16, 30, 0);
    
    Дедлайн = ДатаВремя(2025, 9, 20, 23, 59, 59);
    
    Если (Заказ <= Дедлайн) Тогда
    
    ОткрытьЗначение("Заказ принят вовремя");
    
    Иначе
    
    ОткрытьЗначение("Заказ просрочен");
    
    КонецЕсли;

    Строки: проверка непустого значения

    Имя = "";
    
    ВвестиСтроку(Имя);
    
    Если (СтрДлина(Имя) = 0) Тогда
    
    ОткрытьЗначение("Введите имя");
    
    ИначеЕсли (СтрДлина(Имя) < 3) Тогда
    
    ОткрытьЗначение("Слишком короткое имя");
    
    Иначе
    
    ОткрытьЗначение("Привет, " + Имя);
    
    КонецЕсли;

    Паттерны для чистого кода

    A. Ранний выход из веток (минимум вложенности)

    Чек = 5200;
    
    Если (Чек < 0) Тогда
    
    ОткрытьЗначение("Ошибка суммы");
    
    ИначеЕсли (Чек < 5000) Тогда
    
    ОткрытьЗначение("Скидка не применяется");
    
    Иначе
    
    ОткрытьЗначение("Применена скидка 10%");
    
    КонецЕсли;

    B. Разносим сложное условие на логические флаги

    Возраст = 21; ЕстьПаспорт = Истина;
    
    ВозрастOK = (Возраст >= 18);
    
    ДокументыOK = ЕстьПаспорт;
    
    Если (ВозрастOK И ДокументыOK) Тогда
    
    ОткрытьЗначение("Доступ разрешён");
    
    Иначе
    
    ОткрытьЗначение("Доступ запрещён");
    
    КонецЕсли;

    «Подводные камни»

    • Нет скобок — нет однозначности. Явно группируй условия.
    • Строки/числа/даты: не смешивай без необходимости, используй Число(), ДатаВремя().
    • Дублирующиеся ветки. Если код в двух ветках одинаков — упростить логику.
    • Длинные условия. Вводи промежуточные переменные-флаги (см. выше).

    Практика (интереснее стандартного)

    Задание 1. Вводится три числа A, B, C. Вывести:

    • «Возрастают», если A < B < C;
    • «Убывают», если A > B > C;
    • Иначе — «Смешанный порядок».
    A = 0; B = 0; C = 0;
    
    ВвестиЧисло(A); ВвестиЧисло(B); ВвестиЧисло(C);
    
    Если (A < B) И (B < C) Тогда
    
    ОткрытьЗначение("Возрастают");
    
    ИначеЕсли (A > B) И (B > C) Тогда
    
    ОткрытьЗначение("Убывают");
    
    Иначе
    
    ОткрытьЗначение("Смешанный порядок");
    
    КонецЕсли;

    Задание 2. Вводятся два числа. Если оба положительные — вывести их сумму, иначе — произведение.

    A = 0; B = 0;
    
    ВвестиЧисло(A); ВвестиЧисло(B);
    
    Если (A > 0) И (B > 0) Тогда
    
    ОткрытьЗначение(A + B);
    
    Иначе
    
    ОткрытьЗначение(A * B);
    
    КонецЕсли;

    Задание 3. Пользователь вводит дату рождения. Вывести «Совершеннолетний», если сегодня ему ≥ 18 лет.

    Рождение = ДатаВремя(2008, 1, 1); // замените на ввод
    
    Граница = ДобавитьКДате(Рождение, Год, 18);
    
    Если (ТекущаяДата() >= Граница) Тогда
    
    ОткрытьЗначение("Совершеннолетний");
    
    Иначе
    
    ОткрытьЗначение("Нет");
    
    КонецЕсли;

    Итог

    • Условная команда — фундамент принятия решений.
    • Комбинируй с логикой И/ИЛИ/НЕ, всегда ставь скобки.
    • Разбивай сложные проверки на флаги — так код чище и устойчивее.
  • Сложные логические выражения в 1С

    Сложные логические выражения в 1С


    Пример: Как используется Сложные логические выражения в 1С


    Пример 01.

    X = 7;
    Сообщить( (X >= 5) И (X <= 10) И (X % 2 <> 0) );
    // Истина (7 между 5 и 10, и нечётное)

    Пример 02.

    Имя = "Саша";
    Сообщить( ((Имя = "Саша") ИЛИ (Имя = "Маша")) И (СтрДлина(Имя) > 3) );
    // Истина

    Пример 03.

    ДатаЗаказа = '2025-09-15';
    Дедлайн = '2025-09-20';
    КлиентVIP = Ложь;
    
    Сообщить( (ДатаЗаказа <= Дедлайн) И (НЕ КлиентVIP) );
    // Истина

    Пример 04.

    Возраст = 17;
    Город = "Москва";
    
    Сообщить( (Возраст >= 18) ИЛИ (Город = "Москва") );
    // Истина (возраст не подошёл, но город "Москва")

    Пример 05.

    Баланс = 150;
    VIP = Ложь;
    
    Сообщить( (Баланс > 100) И (НЕ VIP) );
    // Истина

    Сложные логические выражения — это такие проверки, где соединяются сразу несколько условий.
    Например: одно условие проверяет возраст, другое — город, а третье — статус клиента.
    С помощью И, ИЛИ и НЕ мы объединяем их в одно выражение, и программа выдаёт итог: Истина или Ложь.
    Это нужно, когда одной проверки недостаточно и важно учесть сразу несколько факторов.


    Шпаргалка

    • И — истинно, если обе части истинны.
    • ИЛИ — истинно, если хотя бы одна часть истинна.
    • НЕ — переворачивает результат.
    • Приоритет: НЕ > И > ИЛИ. В реальном коде ставь скобки.

    Быстрые примеры (запусти в 1С)

    Сообщить( (2 < 3) И (10 = 10) );          // Истина
    Сообщить( (2 < 3) И (10 <> 10) );         // Ложь
    Сообщить( (2 < 3) ИЛИ (10 = 5) );         // Истина
    Сообщить( НЕ (2 < 3) );                   // Ложь
    
    // С датами
    A = ДатаВремя(2024, 1, 1);
    B = ДатаВремя(2024, 6, 1);
    Сообщить( (A < B) И (Год(A) = 2024) );    // Истина
    

    Паттерны из практики

    // 1) Число в диапазоне [10..20]
    X = 15;
    ВДиапазоне = (X >= 10) И (X <= 20);
    ОткрытьЗначение(ВДиапазоне);              // Истина
    
    // 2) Строка валидна: не пустая И длина ≥ 3
    Имя = "Павел";
    ВалидноИмя = (СтрДлина(Имя) > 0) И (СтрДлина(Имя) >= 3);
    ОткрытьЗначение(ВалидноИмя);              // Истина
    
    // 3) Обработка заказа: успел по сроку ИЛИ клиент VIP
    ДатаЗаказа = ДатаВремя(2025, 9, 1);
    Дедлайн    = ДатаВремя(2025, 9, 10);
    КлиентVIP  = Истина;
    МожноОбработать = (ДатаЗаказа <= Дедлайн) ИЛИ КлиентVIP;
    ОткрытьЗначение(МожноОбработать);         // Истина
    
    // 4) Де Морган (проверка эквивалентности)
    A = Истина; B = Ложь;
    Лево  = НЕ (A И B);
    Право = (НЕ A) ИЛИ (НЕ B);
    Сообщить(Лево = Право);                   // Истина
    

    Частые ошибки

    • Забытые скобки → двусмысленный код. Всегда группируй: (A) ИЛИ (B И (НЕ C)).
    • Смешивание типов (строка/число/дата). Делай явные преобразования: Число(), ДатаВремя().
    • «Ручные» даты строками для вычислений — избегай, работай через ДатаВремя().

    Самопроверка (с ответами)

    Сообщить( (1 = 1) И (2 = 2) );                           // Истина
    Сообщить( НЕ (10 > 5) );                                 // Ложь
    Сообщить( ("Солнце" = "Луна") ИЛИ ("Юпитер" = "Юпитер") ); // Истина
    Сообщить( НЕ ("Солнце" = "Луна") );                      // Истина
    Сообщить( (10 <> 5) ИЛИ (5 = 5) );                       // Истина
    Сообщить( (Истина) ИЛИ (Ложь) );                         // Истина
    Сообщить( НЕ (Истина) );                                 // Ложь
    Сообщить( (Ложь) И (Истина) );                           // Ложь
    Сообщить( (Ложь) ИЛИ (Истина) );                         // Истина
    

    Итог

    Сложные логические выражения помогают проверять сразу несколько условий и принимать более «умные» решения в программе.
    Главное помнить: И — все условия верны, ИЛИ — хотя бы одно, НЕ — меняет результат.
    Скобки нужны для ясности. Это основа любой реальной логики в 1С.

  • Простые логические выражения 1С

    Простые логические выражения 1С


    Пример: Как используется Простые логические выражения в 1С


    Пример 01.

    А = 5;
    Б = 3;
    Сообщить(А > Б);   // Истина

    Пример 02.

    Текст1 = "Привет";
    Текст2 = "Мир";
    Сообщить(Текст1 = Текст2); // Ложь

    Пример 03.

    X = 10;
    Сообщить(X = 10); // Истина

    Пример 04.

    Y = 7;
    Сообщить(Y <> 5); // Истина

    Пример 05.

    Сегодня = ТекущаяДата();
    Сообщить(Сегодня > '2025-01-01'); // Истина или Ложь (зависит от текущей даты)

    Простые логические выражения — это проверки в программе, которые дают только два результата: Истина (да) или Ложь (нет). Они нужны, чтобы компьютер мог решать, что делать дальше: выполнять команду, переходить в цикл или пропускать действие. Это фундамент для всех условий и решений в коде.


    Операции сравнения в 1С

    ОперацияОбозначениеПримерРезультат
    Равно=1 = 1Истина
    Не равно<>4 <> 5Истина
    Больше>10 > 2Истина
    Меньше<3 < 1Ложь
    Больше или равно>=5 >= 5Истина
    Меньше или равно<=2 <= 3Истина

    Сравнивать можно числа, строки, даты и др. типы.


    Быстрые примеры:

    Сообщить(1 = 2); // Ложь
    
    Сообщить(1 = 1); // Истина
    
    Сообщить("Земля" <> "Луна"); // Истина
    
    Сообщить('18610101' <> '18610101'); // Ложь
    
    Сообщить(100 > 50); // Истина
    
    Сообщить(10 < 0); // Ложь
    
    Сообщить(123 < 321); // Истина
    
    Сообщить(123 <= 123); // Истина
    
    Сообщить('20140101' > '20120101'); // Истина
    
    Сообщить(2 * (10 + 10) > 50); // Ложь (40 > 50 → Ложь)

    Для дат удобнее использовать конструктор ДатаВремя(Год,Месяц,День):

    Сообщить(ДатаВремя(2014,1,1) > ДатаВремя(2012,1,1)); // Истина


    Как компьютер «думает» (пошагово)

    Пример: Сообщить(2 * (10 + 10) > 50);

    1. Считает скобки: (10 + 10) = 20.
    2. Умножает: 2 * 20 = 40.
    3. Сравнивает: 40 > 50Ложь.
    4. Печатает логический результат (в интерфейсе это будет «Нет/Да»).

    Частые ошибки новичков

    • Смешивание строк и чисел: "3" > 2 сравнивает строку и число — избегай, приводи типы: Число("3") > 2.
    • Формат дат: не склеивай строки руками, для вычислений используй ДатаВремя().
    • Забытые скобки: 2 + 2 * 2 > 5 не то же самое, что (2 + 2) * 2 > 5.
    • Пробелы не влияют на результат, но делают код читабельнее.

    Мини‑тест (самопроверка)

    Определи результат (Истина/Ложь) и проверь через Сообщить(...):

    1. "Венера" = "Юпитер"
    2. "Венера" <> "Юпитер"
    3. 123 = 321
    4. 123 < 321
    5. 123 <= 321
    6. 123 <= 123
    7. ДатаВремя(2000,1,1) <> ДатаВремя(2014,1,1)
    8. ДатаВремя(2000,1,1) = ДатаВремя(2000,1,1)
    9. ДатаВремя(2014,1,1) > ДатаВремя(2012,1,1)
    10. 25 + 25 = 50
    11. 2 * (10 + 10) > 50
    12. "Юрий" + " " + "Гагарин" = "Юрий Гагарин"

    Ответы: 1) Ложь, 2) Истина, 3) Ложь, 4) Истина, 5) Истина, 6) Истина, 7) Истина, 8) Истина, 9) Истина, 10) Истина, 11) Ложь, 12) Истина.


    Логический тип в переменных

    // Логический результат можно записывать в переменные

    Возраст = 18;

    Совершеннолетний = (Возраст >= 18);

    ОткрытьЗначение(Совершеннолетний); // Истина


    Практика

    Задание А. Спроси у пользователя два числа и выведи Истина, если первое не меньше второго.

    A = 0; B = 0;

    ВвестиЧисло(A); ВвестиЧисло(B);

    ОткрытьЗначение( A >= B );

    Задание Б. Дата рождения + проверка совершеннолетия (18 лет).

    Рождение = ДатаВремя(2008, 9, 11); // подставь свои значения

    Граница = ДобавитьКДате(Рождение, Год, 18);

    ОткрытьЗначение( ТекущаяДата() >= Граница );

    Задание В. Проверка имени пользователя (строка не пустая и длина ≥ 3).

    Имя = «»;

    ВвестиСтроку(Имя);

    ОткрытьЗначение( (СтрДлина(Имя) >= 3) );


    Итог

    • Логические выражения отвечают на вопрос «верно?».
    • Результат всегда Истина или Ложь.
    • Ставь скобки и приводи типы явно — ошибок будет меньше.

    Готов двигаться дальше к составным условиям Если ... Тогда ... Иначе и комбинированию условий?

  • переменные в 1С

    переменные в 1С


    Пример: Как используется переменные в 1С


    Пример 01.

    А = 10;
    Б = 5;
    Сумма = А + Б;
    Сообщить(Сумма);// 15

    Пример 02.

    Имя = "Иван";
    Фамилия = "Петров";
    ПолноеИмя = Имя + " " + Фамилия;
    Сообщить(ПолноеИмя); // Иван Петров
    

    Пример 03.

    Сегодня = ТекущаяДата();
    Сообщить("Сегодня: " + Формат(Сегодня, "ДФ=dd.MM.yyyy"));

    Пример 04.

    Число = 8;
    Проверка = Число > 5;
    Сообщить(Проверка); // Истина

    Пример 05.

    Счетчик = 1;
    Сообщить(Счетчик); // 1
    
    Счетчик = Счетчик + 1;
    Сообщить(Счетчик); // 2

    Зачем переменные?

    Представь, что у тебя есть коробка. Ты можешь положить в неё яблоко и подписать коробку словом «Яблоко». Теперь каждый раз, когда тебе нужно взять яблоко, ты просто обращаешься к коробке по её имени. В 1С та же логика: имя переменной = ярлык для данных.


    Правила переменной

    1. В имени можно использовать буквы , цифры и знак подчёркивания.
    2. Имя не может начинаться с цифры.
    3. Пробелы и кавычки в имени запрещены.
    4. Чем понятнее имя — тем лучше.

    ❌ Плохо: 7ЦветовРадуги, Гора"Эверест", Рассвет в космосе ✅ Хорошо: КоличествоПланет, СемьЦветовРадуги, Цветов_Радуги_7


    Как это выглядит в коде

    // Создаём переменную и даём ей значение
    
    КоличествоПланет = 8;
    
    // Используем её в команде
    
    Сообщить(КоличествоПланет);
    
    // Код стал понятнее
    
    Сравни:
    
    Сообщить(8);
    
    Сообщить(КоличествоПланет);
    
    Второй вариант длиннее, но сразу ясно, что это за 8.

    Мини-тренировка «Имя или не имя»

    • ПервыйКосмонавт → ✅ допустимо
    • _НазваниеНашейПланеты → ✅ допустимо
    • 7ЦветовРадуги → ❌ начинается с цифры
    • Рассвет_в космосе → ❌ пробел
    • Северный<полюс> → ❌ недопустимый символ

    Работаем с пользователем

    До этого мы сами задавали переменные. Но что если данные должен ввести пользователь?

    // Инициализация (обязательно!)
    
    ЧислоА = 0;
    
    ЧислоБ = 0;
    
    // Ввод от пользователя
    
    ВвестиЧисло(ЧислоА);
    
    ВвестиЧисло(ЧислоБ);
    
    // Считаем сумму
    
    СуммаЧисел = ЧислоА + ЧислоБ;
    
    // Выводим красиво
    
    ОткрытьЗначение(СуммаЧисел);
    
    Теперь программа ждёт ввода и работает с реальными числами.

    Домашнее задание (чуть веселее)

    Напиши программу, которая:

    1. Просит у пользователя радиус круга (переменная Радиус).
    2. Считает длину окружности по формуле 2 * Пи * Радиус, где Пи = 3.14.
    3. Выводит результат с помощью ОткрытьЗначение.

    Подсказка:

    Радиус = 0;

    ВвестиЧисло(Радиус);

    ДлинаОкружности = 2 * 3.14 * Радиус;

    ОткрытьЗначение(ДлинаОкружности);


    Главное, что стоит запомнить

    • Имена переменных делают код читаемым.
    • Пишите код для других людей, а не только для компьютера.
    • Хорошо подобранные имена экономят часы при поддержке и доработке программы.
  • типы данных в 1С

    типы данных в 1С

    Пример: Как используется типы данных в 1С


    Пример 01.

    //1) Число
    Число = 10;           
    Сообщить(Число);
    

    Пример 02.

    //2) Строка
    Строка1 = "Привет";  
    Сообщить(Строка1);

    Пример 03.

    //3) Дата
    МояДата = '2025-09-13';      
    Сообщить(МояДата);

    Что такое типы данных?

    Тип данных — это «форма» значения. Благодаря типу программа понимает, как хранить и как обрабатывать значение . Если это число — можно складывать и вычитать. Если это строка — это текст, его можно склеивать или считать длину. Если это дата — можно узнать день, месяц, сравнить с другой датой.

    В 1С базовые типы, с которыми ты будешь работать с самого старта:

    1) Строка

    Текст в двойных кавычках.

    Сообщить("Привет, мир!");
    
    Сообщить("Сколько тебе лет?");
    
    Сообщить("как тебя зовут?,");

    Операции:

    • Склеивание (конкатенация): "А" + "Б""АБ"
    • Преобразование числа в строку: Строка(42)"42"
    • Форматирование: Формат(Число, "ЧГ=15.2") — выведет число с нужной точностью

    Частые ошибки:

    • Забытые кавычки: Сообщить(Привет); — это будет ошибка, нужно "Привет".

    2) Число

    Целые и дробные (разделитель — точка в коде).
    
    Сообщить(2 + 2); // 4
    
    Сообщить(9 / 3); // 3
    
    Сообщить(3 * 3); // 9
    
    Сообщить(100 - 50); // 50
    
    Сообщить(3.14 * 2); // 6.28

    Операции:

    • Сложение, вычитание, умножение, деление
    • Скобки для приоритета: (2 + 2) * (9 / 3)

    Преобразования:

    • Число("15")15
    • Строка(15)"15"

    Частые ошибки:

    • Пытаемся «склеить» число со строкой без преобразования: "Сумма: " + 100 — корректнее "Сумма: " + Строка(100).

    3) Дата

    Момент времени (год, месяц, день и при необходимости — час, минута, секунда).

    // Создание даты
    
    Сообщить(ДатаВремя(1961, 4, 12));
    
    // Прибавим 2 дня
    
    Сообщить(ДобавитьКДате(ДатаВремя(1961,4,12), День, 2));
    
    // Разница между датами в секундах/днях
    
    Сообщить(РазностьДат(ДатаВремя(1961,4,12), ДатаВремя(1961,4,10), Секунда));
    
    Сообщить(РазностьДат(ДатаВремя(1961,4,12), ДатаВремя(1961,4,10), День));
    
    // Красиво выведем дату
    
    Сообщить(Формат(ДатаВремя(1980,7,20), "ДФ=dd.MM.yyyy")); // 20.07.1980

    Частые ошибки:

    • Ломается логика из‑за неявных преобразований. Безопаснее работать через ДатаВремя() и явные функции ДобавитьКДате(), РазностьДат().

    Как тип влияет на операции

    • "3" + "4""34" (строки — склеиваются)
    • 3 + 47 (числа — складываются)
    • "3 * 4 = " + Строка(3 * 4)"3 * 4 = 12" (смешиваем типы корректно)
    • ДобавитьКДате(ДатаВремя(2025,9,1), День, 1)2025‑09‑02

    Паттерны, полезные с первого дня

    // 1) Готовим данные → печатаем человекочитаемо
    
    Итог = 3 * 7;
    
    Сообщить("Ответ: " + Строка(Итог));
    
    // 2) Дата + формат → понятный вывод
    
    Начало = ДатаВремя(2024, 12, 31, 23, 59, 0);
    
    Финиш = ДобавитьКДате(Начало, Минута, 2);
    
    Сообщить("Старт: " + Формат(Начало, "ДФ=dd.MM.yyyy HH:mm:ss"));
    
    Сообщить("Финиш: " + Формат(Финиш, "ДФ=dd.MM.yyyy HH:mm:ss"));
    
    // 3) Аккуратно смешиваем типы
    
    Имя = "Алексей";
    
    Возраст = 28;
    
    Сообщить("Профиль: " + Имя + ", возраст " + Строка(Возраст));
    
    // 4) Разница дат для дедлайнов
    
    Дедлайн = ДатаВремя(2025, 10, 1);
    
    ОсталосьДней = РазностьДат(Дедлайн, ТекущаяДата(), День);
    
    Сообщить("Осталось дней: " + Строка(ОсталосьДней));
    
    // 5) Конвертация строки в число перед вычислением
    
    Ввод = "000123.50";
    
    Сумма = Число(Ввод);
    
    Сообщить(Сумма * 2); // 247.00

    задачи

    A. Создай и выведи три переменные:

    строку —  с твоим именем,
    
    число — любимое двузначное,
    
    дату — сегодня.
    
    Подсказка:
    
    Имя = "Павел";
    
    ЧислоДня = 42;
    
    Сегодня = ДатаВремя(2025, 9, 11); // подставь актуальную дату
    
    Сообщить(Имя);
    
    Сообщить(ЧислоДня);
    
    Сообщить(Сегодня);

    B. Дата‑арифметика: к дате рождения прибавь 10 000 дней — что получится?

    Рождение = ДатаВремя(1990, 5, 20);
    
    Юбилей = ДобавитьКДате(Рождение, День, 10000);
    
    Сообщить(Формат(Юбилей, "ДФ=dd.MM.yyyy"));
    
    C. Смешанные типы: корректно выведи "3 * 4 = 12" одной строкой кода.
    
    Сообщить("3 * 4 = " + Строка(3 * 4));
    
    D. Мини‑тест (угадай вывод):
    
    Сообщить("7" + "5"); // ?
    
    Сообщить(7 + 5); // ?
    
    Сообщить(Число("7") + 5); // ?
    
    Сообщить(Формат(ДатаВремя(2024,2,29), "ДФ=dd.MM.yyyy")); // ?
    
    Ответы:
    
    75
    
    12
    
    12
    
    29.02.2024

    Частые «подводные камни» и как их обойти

    • Строки vs числа. Всегда приводи типы явно: Строка(), Число().
    • Формат даты. Для вывода человеку — только через Формат(..., "ДФ=...").
    • Приоритет операций. Ставь скобки там, где смешиваешь строки и арифметику.
    • Неявные преобразования. В учебных задачах они могут «сработать», но в реальных проектах делай преобразования явно.

    Итог

    • Типы данных управляют тем, что можно делать со значениями.
    • Строка — текст и форматирование; Число — вычисления; Дата — работа со временем и интервалами.
    • Освоив конвертацию и форматирование, ты избежишь 80% типичных ошибок новичков.
  • первые шаги в 1С

    первые шаги в 1С


    Привет, друг 👋

    Это твой первый урок по языку программирования 1С
    Желаю тебе удачи в изучении — у тебя всё получится!

    Сегодня мы разберём первую команду: Сообщить.
    Она выводит текст или значение на экран. С её помощью мы начнём учиться писать самые простые программы.


    Задание №1. Вывести 4 строки (по одной в строку)

    Сделай так, чтобы программа при запуске показала это четверостишие:

    Снег ложится тихо-тихо,
    Тянет свет из фонаря;
    Шёпот ветра вдаль уходит,
    Ночь глядит из-за двора.
    

    Подсказка ( один из вариантов ):

    Сообщить("Снег ложится тихо-тихо,");
    Сообщить("Тянет свет из фонаря;");
    Сообщить("Шёпот ветра вдаль уходит,");
    Сообщить("Ночь глядит из-за двора.");
    

    Задание №2. Нумерация строк

    Выведи те же строки, но с номерами:

    [1] ...
    [2] ...
    [3] ...
    [4] ...
    

    Подсказка:

    Сообщить("[1] Снег ложится тихо-тихо,");
    Сообщить("[2] Тянет свет из фонаря;");
    Сообщить("[3] Шёпот ветра вдаль уходит,");
    Сообщить("[4] Ночь глядит из-за двора.");
    

    Задание №3. Одна команда — много строк

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

    Подсказка:

    Текст = "Снег ложится тихо-тихо," + Символы.ПС
          + "Тянет свет из фонаря;" + Символы.ПС
          + "Шёпот ветра вдаль уходит," + Символы.ПС
          + "Ночь глядит из-за двора.";
    Сообщить(Текст);
    

    Задание №4. Вставь дату/время в текст

    После каждой строки добавь текущую дату/время в скобках, например:

    Снег ложится тихо-тихо, (дата/время)
    ...
    

    Подсказка:

    Сообщить("Снег ложится тихо-тихо, (" + Формат(ТекущаяДата(), "") + ")");
    

    Первые наблюдения о языке (на примере Сообщить)

    1. Код делится на команды. Сейчас используем одну — Сообщить.
    2. Каждая команда заканчивается точкой с запятой ;.
    3. У команды есть параметр — выражение в круглых скобках. В наших примерах это строка в двойных кавычках.
    4. Программа выполняет команды последовательно — сверху вниз.
    5. Внутри параметра можно склеивать текст оператором +, вставлять значения переменных, дату/время и т.д.
    6. Перевод строки в тексте — это Символы.ПС.
    7. Комментарии начинаются с // и игнорируются при выполнении.

    «Коверкаем» программу (и всё равно тот же результат)

    Придумай 6 разных способов вывести те же 4 строки.

    Идеи:

    • Добавь комментарии в конце строк (// ...).
    • Разнеси одну команду Сообщить(...) на несколько строк редактора.
    • Используй переменные: Стр1="..."; Стр2="..."; Стр3="..."; Стр4="..."; Сообщить(Стр1); Сообщить(Стр2); Сообщить(Стр3); Сообщить(Стр4);
    • Заведи массив и выведи в цикле Для Каждого.
    • Сформируй одну большую строку с Символы.ПС и выведи одной командой.
    • Применяй СтрШаблон("%1 %2", "[1]", Текст) для красивого форматирования.

    Проверь себя

    Дан фрагмент:

    Сообщить("Сумрак сел на крыши домом,");
    Сообщить("Теплый свет прогонит тьму;");
    Сообщить("Шаг за шагом ночь знакома,");
    Сообщить("Тихо двинется к окну.");
    

    Вопросы:

    1. Сколько здесь команд?
    2. Каков параметр третьей команды?
    3. Можно ли всё записать в одну команду с Символы.ПС?
    4. Как добавить к каждой строке её номер в квадратных скобках?
    5. Как вывести только вторую и четвертую строки?

    Итоги

    • Мы познакомились с командой Сообщить — первой и самой простой командой во встроенном языке 1С.
    • На её примере разобрали, как программа состоит из последовательных команд, каждая из которых оканчивается точкой с запятой.
    • Потренировались работать с текстом: выводить строки по отдельности, нумеровать их, собирать в одну строку с помощью Символы.ПС, а также добавлять дату и время.
    • Убедились, что текст можно хранить в переменных, массивах и форматировать с помощью СтрШаблон.
    • Попробовали «исказить» программу и убедились, что при разных способах записи результат может оставаться одинаковым.