Шеф Петрович учит дегустировать код
🐛 ЧТО ТАКОЕ ОТЛАДКА?
"Марковка! Отладка — это как искать червяка в яблоке. Ты знаешь, что где-то внутри что-то не так, но не видишь где."
Без отладки:
Кусаешь яблоко → "Ой, червяк!" → Выплевываешь → Не знаешь, есть ли ещё.
С отладкой:
Режешь яблоко ножом → Смотришь каждый кусочек → Находишь всех червяков → Вырезаешь.
🛠️ 5 ИНСТРУМЕНТОВ ДЕГУСТАТОРА КОДА
1. ТОЧКИ ОСТАНОВА (Breakpoints) — "СТОП! ЗДЕСЬ ПРОВЕРИМ"
plaintext
КАК: Кликни слева от номера строки → появится красная точка
ЧТО ДЕЛАЕТ: Программа остановится на этой строке ДО её выполнения
ПРИМЕР:
10: Сумма = Цена * Количество
11: НДС = Сумма * 0.2 ← ТОЧКА ОСТАНОВА ЗДЕСЬ
12: Итог = Сумма + НДС
Программа выполнит строку 10, остановится на 11, ждёт твоей команды.
Совет шефа: "Ставь точки там, где что-то может пойти не так. Как стоп-кран в поезде — перед мостом, а не после."
2. ШАГ С ЗАХОДОМ (F11) — "ЗАЙДИ В КАЖДУЮ КОМНАТУ"
plaintext
ЧТО ДЕЛАЕТ: Заходит внутрь каждой процедуры
ПРИМЕР:
Вызовешь: РассчитатьСумму() → F11 → попадёшь ВНУТРЬ этой процедуры
Увидишь, как она работает построчно.
Аналогия: "Это как зайти на кухню и посмотреть, как повар готовит каждое блюдо, а не просто получить готовое."
3. ШАГ С ОБХОДОМ (F10) — "ПРОЙДИ МИМО"
plaintext
ЧТО ДЕЛАЕТ: Выполняет процедуру целиком, не заходя внутрь
ПРИМЕР:
Вызовешь: РассчитатьСумму() → F10 → получишь результат
Не увидишь, КАК она считала.
Аналогия: "Получил готовый торт. Не смотришь, как пекли — только пробуешь результат."
4. ОКНО ВЫРАЖЕНИЙ — "ПРОБА НА ВКУС"
plaintext
ЧТО ДЕЛАЕТ: Позволяет проверить любое выражение на лету
КАК ИСПОЛЬЗОВАТЬ:
1. Остановились на точке останова
2. В окне выражений пишем: Цена * Количество
3. Нажимаем Enter → видим результат
4. Или: ТипЗнч(Сумма) → увидим тип переменной
Совет шефа: "Это как пробовать соус пальцем в процессе готовки. Не ждёшь, пока всё блюдо будет готово."
5. СТЕК ВЫЗОВОВ — "КТО И ЗАЧЕМ ЗВАЛ НА КУХНЮ"
plaintext
ПОКАЗЫВАЕТ цепочку вызовов:
1. Форма.КнопкаНажатие() ← мы здесь
2. Модуль.РассчитатьЗаказ()
3. ОбщийМодуль.ОбщиеРасчеты()
4. ВнешняяОбработка.Расчёт()
Видишь: кто кого вызывал и в каком порядке.
Аналогия: "Повар → су-шеф → помощник повара → посудомойка. Видишь всю цепочку, кто что делал."
🎯 3 СЦЕНАРИЯ ОТЛАДКИ НА ПРАКТИКЕ
Сценарий 1: "Почему сумма нулевая?"
plaintext
ШАГИ:
1. Ставим точку останова на строку: Итог = Сумма + НДС
2. Запускаем программу
3. Она останавливается
4. Смотрим в окне переменных:
- Сумма = 0 (должно быть 1000)
- НДС = 0
5. Идём выше: ставим точку на Сумма = Цена * Количество
6. Смотрим:
- Цена = 100 ✓
- Количество = 0 ✗ (вот ошибка!)
7. Ищем, почему Количество = 0
Сценарий 2: "Цикл вечный"
plaintext
ПРОБЛЕМА: Программа зависает
ШАГИ:
1. Прерываем выполнение (Ctrl+Break)
2. Смотрим стек вызовов
3. Видим, что застряли в цикле:
Для Счётчик = 1 По 1000000 Цикл
// много кода
КонецЦикла
4. Ставим точку внутри цикла
5. Видим, что Счётчик не меняется
6. Находим: забыли Счётчик = Счётчик + 1
Сценарий 3: "Не та процедура"
plaintext
ПРОБЛЕМА: Вызывается не та функция
ШАГИ:
1. Ставим точку на вызов процедуры
2. F11 заходим внутрь
3. Видим, что попали не в РассчитатьСумму(), а в РассчитатьСуммуСтарая()
4. Ищем, где перепутали вызов
⚠️ 5 ОШИБОК НОВИЧКОВ ПРИ ОТЛАДКЕ
Ошибка 1: "Слишком много точек"
plaintext
НЕПРАВИЛЬНО: По точке на каждой строке
ПРАВИЛЬНО: Только на ключевых местах:
- После сложных вычислений
- Перед вызовами внешних процедур
- В начале и конце циклов
- В условиях (If)
Ошибка 2: "Забывают снимать точки"
plaintext
ПРОБЛЕМА: Программа останавливается в продакшене!
РЕШЕНИЕ:
1. Всегда чисти точки перед сохранением
2. Или используй Условные точки останова
Ошибка 3: "Не смотрят переменные"
plaintext
НЕПРАВИЛЬНО: "Код не работает" → начинают менять наугад
ПРАВИЛЬНО:
1. Остановились
2. Посмотрели ВСЕ переменные
3. Увидели, что в одной не то значение
4. Нашли, почему
Ошибка 4: "Отлаживают на рабочих данных"
plaintext
ОПАСНО: Можете сломать реальные данные
БЕЗОПАСНО:
1. Создайте тестового контрагента "Тест Тестович"
2. Работайте с ним
3. После отладки удалите
Ошибка 5: "Не ведут записи"
plaintext
ПЛОХО: Нашли ошибку → исправили → забыли что исправляли
ХОРОШО:
1. Записывайте: "15:30 - Найдено: Количество = 0"
2. Записывайте: "15:32 - Исправлено: добавил проверку"
3. В конце: список всех исправлений
🎓 ТРЕНИРОВОЧНЫЕ УПРАЖНЕНИЯ
Упражнение 1: "Найди пропавшую соль"
plaintext
// Код не считает правильно:
Сумма = Цена * Количество;
НДС = Сумма * 0.2;
Итог = Сумма; // Должно быть: Сумма + НДС
ЗАДАНИЕ:
1. Поставь точки на каждой строке
2. Пройди пошагово (F10)
3. Следи за значениями в окне переменных
4. Найди, где ошибка
Упражнение 2: "Бесконечный суп"
plaintext
// Цикл никогда не заканчивается:
Счетчик = 1;
Пока Счетчик < 10 Цикл
Сообщить("Шаг " + Счетчик);
// Забыли: Счетчик = Счетчик + 1;
КонецЦикла;
ЗАДАНИЕ:
1. Запусти отладку
2. Когда зависнет - Ctrl+Break
3. Посмотри стек вызовов
4. Найди проблему
🏁 ЗАКЛЮЧЕНИЕ ОТ ШЕФА:
"Марковка, запомни главное про отладку:
ОТЛАДКА — ЭТО НЕ ПРО ТО, ЧТО КОД НЕ РАБОТАЕТ, А ПРО ТО, ПОЧЕМУ ОН РАБОТАЕТ ИМЕННО ТАК!
Каждый баг — это урок. Каждая ошибка — это знание.
Начни с простого:
- День 1-3: Только точки останова и просмотр переменных
- День 4-7: Шаг с заходом (F11) в свои процедуры
- День 8-14: Шаг с обходом (F10) в чужие процедуры
- День 15+: Стек вызовов и условные точки
И никогда не говори 'не работает'. Говори:
- 'Работает, но не так как ожидалось'
- 'Останавливается здесь'
- 'Возвращает это, а должно то'
Отладка — это как готовка:
- Сначала рецепт (планируешь)
- Потом приготовление (пишешь код)
- Потом дегустация (отладка)
- Потом подача (релиз)
Удачи! И помни: даже у лучших поваров иногда пригорает!" 🔍👨🍳