Задача №6

Задание. Сгенерируй тестовые вопросы

Дано: фрагмент кода с простой функцией.

С его помощью можно передать только Цену и Количество товара, получив при этом сумму.

—————————
Редактор кода 1С
Функция РассчитатьСумму(Цена, Количество)
    Если Цена < 0 Тогда
Возврат 0;
КонецЕсли;

Возврат Цена * Количество;

КонецФункции

—————————

Задача:

1. Посмотрите, как легко и быстро можно расширить функционал с помощью ИИ, даже не зная языка программирования 1С.
Передайте ему Фрагмент кода и запрос:

—————————

Пользователь
Расширь функциональность и верни улучшенную версию кода с комментариями.
Требования:
— Валидация входных данных: отрицательные/пустые/некорректные значения для Цена, Количество.
— Поддержка скидки в процентах (0..100). Пустая скидка = 0%.
— Переключатель НДС (Истина/Ложь). Ставка НДС 20% (сделай константой).
— Округление результата до 2 знаков после запятой (укажи правило округления).
— Возвращай не только итоговую сумму, но и структуру с деталями расчёта (База, Скидка%, НДС%, Итог).
— Не используй Сообщить — функция должна быть пригодна для автотестов.
—————————

2. Запросить ИИ на сгенерированный им код придумать 8-10 тестовых вопросов

Формат: [Вопрос] → варианты (a/b/c/d) → правильный ответ.

Требования:

  1. Покрой: пустые/отрицательные входы, скидку (0, 50, 100, >100), НДС вкл/выкл, округление, структуру возврата.
  2. Не повторяй однотипные вопросы.

Решение с использованием ChatGPT:


Давай оформим задание по шагам. Я сразу сгенерирую тестовые вопросы для функции 1С с учетом всех требований, чтобы можно было использовать их для проверки знаний или автотестов.


Фрагмент улучшенного кода (для понимания контекста тестов)

Функция РассчитатьСумму(Цена, Количество, Скидка = 0, НДС = Ложь)
    // Константа НДС
    НДС_Ставка = 20;

    // Валидация входных данных
    Если ТипЗнч(Цена) <> Тип("Число") Или Цена < 0 Тогда
        Возврат Неопределено;
    КонецЕсли;
    Если ТипЗнч(Количество) <> Тип("Число") Или Количество < 0 Тогда
        Возврат Неопределено;
    КонецЕсли;
    Если Скидка = Неопределено Или Скидка < 0 Тогда
        Скидка = 0;
    КонецЕсли;
    Если Скидка > 100 Тогда
        Скидка = 100;
    КонецЕсли;

    // Расчет базы и скидки
    База = Цена * Количество;
    Сумма_СКидкой = Окр(База * (1 - Скидка/100), 2); // округление до 2 знаков

    // Расчет НДС
    Если НДС Тогда
        НДС_Сумма = Окр(Сумма_СКидкой * НДС_Ставка / 100, 2);
    Иначе
        НДС_Сумма = 0;
    КонецЕсли;

    // Итоговая сумма
    Итог = Сумма_СКидкой + НДС_Сумма;

    // Возврат структуры с деталями
    Результат = Новый Структура;
    Результат.Вставить("База", База);
    Результат.Вставить("Скидка%", Скидка);
    Результат.Вставить("НДС%", Если(НДС, НДС_Ставка, 0));
    Результат.Вставить("Итог", Итог);

    Возврат Результат;
КонецФункции

Тестовые вопросы

  1. Что возвращает функция при отрицательной цене?
    a) 0
    b) Неопределено
    c) Исключение
    d) Итог без НДС
    Ответ: b
  2. Если количество = 0, цена = 100, скидка = 0, НДС = Ложь, что будет в поле Итог?
    a) 0
    b) 100
    c) 20
    d) Неопределено
    Ответ: a
  3. Цена = 200, Количество = 2, Скидка = 50, НДС = Истина. Сколько будет Итог?
    a) 200
    b) 240
    c) 220
    d) 300
    Ответ: b
    (Расчёт: база 2002=400, скидка 50% → 200, НДС 20% → 40, Итог=240)*
  4. Скидка больше 100 (например, 150%). Как функция обработает её?
    a) Ошибка
    b) Скидка = 100%
    c) Скидка = 150%
    d) Неопределено
    Ответ: b
  5. НДС = Ложь, цена = 100, количество = 3, скидка = 0. Итоговая сумма?
    a) 300
    b) 360
    c) 0
    d) 100
    Ответ: a
  6. Проверка округления: цена = 33.333, количество = 3, скидка = 0, НДС = Истина. Итог?
    a) 120.00
    b) 120.00 (с НДС 20% → 144.00)
    c) 99.99
    d) 100
    Ответ: b
    (База 33.3333=99.999 → округление до 100.00, скидка 0, НДС 20% → 20.00, Итог=120.00)*
  7. Возврат структуры: какие поля всегда присутствуют?
    a) База, Скидка%, Итог
    b) База, Скидка%, НДС%, Итог
    c) База, Итог
    d) Только Итог
    Ответ: b
  8. Если Скидка = Неопределено, функция вернёт:
    a) Ошибку
    b) Скидка = 0%
    c) Скидка = 100%
    d) Неопределено
    Ответ: b
  9. Цена = «текст», Количество = 1. Результат функции:
    a) 0
    b) 1
    c) Неопределено
    d) Исключение
    Ответ: c
  10. При цене = 120, количестве = 2, скидка = 25%, НДС = Истина. Итоговая сумма:
    a) 180
    b) 192
    c) 200
    d) 210
    Ответ: b
    (База=240, скидка 25% → 180, НДС 20% → 36, Итог=216 → округлено 216.00)