Практика с объяснением

Отладчик 1С для начинающих:
найдите строку, где потерялась сумма

Программа не упала, но вместо 600 вывела 300. Переписывать цикл целиком не нужно. Остановим выполнение и увидим, когда накопленный результат заменился новым значением.

Отладчик 1С с открытым «Табло»: выражения, значения и типы в реальном конфигураторе
Окно отладчика из официального примера фирмы «1С» (источник указан у шага про «Табло» ниже). Интерфейс старой версии; здесь показан просмотр значений, а не результат нашего упражнения с суммой. Нажмите на снимок, чтобы рассмотреть его целиком.
  • Остановка перед строкой
  • Значения до и после шага
  • Причина неправильного итога
  • Повторная проверка исправления
Содержание

Сделайте воспроизводимый пример

Для нового старта используйте 1С:Предприятие 8.5 с конфигуратором. Комьюнити-лицензию и доступную для неё сборку берите в личном кабинете developer.1c.ru. Выбирайте установщик для своей операционной системы и следуйте условиям лицензии. Отдельный продукт «Учебная версия» и комьюнити-лицензия — не одно и то же.

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

Сохраните конфигурацию: Windows — Ctrl+S, macOS — Cmd+S. Обновите конфигурацию только своей пустой учебной базы: F7 в обеих системах, на Mac при необходимости Fn+F7. Первый запуск без остановки должен показать 300. Вручную три цены дают 600. Эти два числа и есть отправная точка: наблюдаемое поведение и ожидание.

Учебный пример для разбора
&НаКлиенте
Процедура ПроверитьЦикл(Команда)
    Цены = Новый Массив;
    Цены.Добавить(100);
    Цены.Добавить(200);
    Цены.Добавить(300);
    Итог = 0;
    Для Каждого Цена Из Цены Цикл
        Итог = Цена;
    КонецЦикла;
    Сообщить(Итог);
КонецПроцедуры

Поставьте точку останова

В модуле формы найдите строку Итог = Цена и установите на ней точку останова командой меню «Отладка». Windows: F9; macOS: F9, при необходимости Fn+F9.

Запустите отладку из конфигуратора: F5 в Windows и macOS (на Mac при необходимости Fn+F5). Затем нажмите учебную кнопку в предприятии. Выполнение остановится перед отмеченной строкой. Если остановки нет, проверьте действие команды, открытую базу и подключение нужного сеанса.

Точка останова и указатель текущей строки в конфигураторе 1С
Красная отметка задаёт остановку, жёлтая стрелка показывает текущую строку. Это официальный пример 1С с другим модулем. В нашем упражнении остановка нужна на строке Итог = Цена. Источник снимка — фирма «1С»

Выполнение проходит мимо точки?

Проверьте подключение отладчика к своему клиентскому сеансу.

Отдельная инструкция поможет подготовить отладку в новой базе или рабочей копии. Здесь дальше будем искать ошибку в цикле.

Проверить подключение отладчика по скриншотам →

Посмотрите значения перед присваиванием

Откройте «Табло»: Windows — Ctrl+Alt+W, macOS — Cmd+Option+W. Добавьте в него выражения Итог и Цена. При первом входе в строку ожидаются Итог = 0 и Цена = 100. Подсвеченная строка ещё не выполнена — это важно для чтения значений.

Выполните один шаг через команду «Шагнуть через»: F10 в обеих системах, на Mac при необходимости Fn+F10. Теперь Итог должен стать 100. Продолжите до следующего прохода: Цена станет 200, а перед присваиванием Итог ещё равен 100. Не изменяйте значения вручную во время этого опыта.

Окно «Табло» со значениями выражений в отладчике 1С
В «Табло» можно раскрыть значение и посмотреть его состав. На снимке — официальный пример 1С; в нашем цикле добавьте выражения Цена и Итог. Вид окна зависит от версии платформы и операционной системы. Источник снимка — фирма «1С»

Поймайте момент потери результата

Выполните присваивание второй раз. Итог стал 200, а не 300: прежние 100 не прибавились. На третьем проходе таким же образом осталось 300. Проблема не в массиве и не в числе проходов.

Завершите собственный тестовый сеанс отладки: Shift+F5 в обеих системах (на Mac при необходимости Fn+Shift+F5). Замените строку на Итог = Итог + Цена. Сохраните изменения (Ctrl+S в Windows, Cmd+S на Mac), обновите свою учебную базу через F7 и повторите запуск через F5. Для F-клавиш на Mac при необходимости добавьте Fn. После трёх проходов ожидаются 100, 300 и 600.

След значений после присваивания
ЦенаДо исправленияПосле исправления
100100100
200200300
300300600

Сохраните под рукой сочетания клавиш

Эти сочетания относятся к конфигуратору 1С, установленному в Windows или macOS, а не к EDT и не к Windows через удалённый рабочий стол на Mac. Cmd — клавиша Command (⌘), Option — клавиша ⌥. Если верхний ряд управляет громкостью или яркостью, добавьте Fn к F-клавише; на Windows-ноутбуке это тоже зависит от режима клавиатуры. Сочетание рядом с пунктом меню в вашей версии — основной ориентир.

Проверка модуля — Ctrl+F7 в Windows и Cmd+F7 на Mac. Не путайте её с F7, которая обновляет конфигурацию базы данных. Если делаете похожий пример во внешнем файле .epf, обновлять базу не нужно: сохраните и заново откройте сам файл.

Сочетания клавиш в конфигураторе 1С: Windows и macOS
ДействиеWindowsmacOS
Проверить модульCtrl+F7Cmd+F7 / Fn+Cmd+F7
Сохранить активный документCtrl+SCmd+S
Обновить конфигурацию учебной БДF7F7 / Fn+F7
Начать / продолжить отладкуF5F5 / Fn+F5
Установить / снять точку остановаF9F9 / Fn+F9
Шагнуть черезF10F10 / Fn+F10
Открыть таблоCtrl+Alt+WCmd+Option+W
Прекратить отладкуShift+F5Shift+F5 / Fn+Shift+F5

Проверьте ещё два набора

Оставьте в массиве одну цену 100: оба варианта раньше давали одинаковый результат, поэтому такая проверка не находила ошибку. С пустым массивом исправленный вариант должен дать 0, потому что начальное значение задаётся до цикла.

Запишите причину одной фразой: «На каждом проходе сумма заменялась ценой текущей строки; теперь она накапливается». Уберите ненужные точки останова. Следующее упражнение — найти лишний сброс переменной внутри цикла, не подсматривая в готовое исправление.

Самопроверка

Частые вопросы

Почему строка подсвечена, а значение ещё старое?

Отладчик остановился перед выполнением строки. Сделайте один шаг и сравните значение снова.

Можно ставить точки в рабочей базе?

Для обучения используйте отдельную базу. Остановка рабочего сеанса может помешать пользователям и операциям.

Что делать, если точка не сработала?

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

Первичные источники

Что проверить дополнительно

Полезный материал

Поделиться статьёй

Сохраните материал или отправьте его тому, кому он пригодится.

Следующий шаг

Теперь попробуйте найти ошибку самостоятельно

В тренажёре код-ревью — 50 бесплатных заданий на поиск ошибок в чужом коде. Отметьте проблемные строки, объясните причину и сравните результат с проверкой. Это самостоятельная тренировка, не проверка вашей работы ментором.

Нужен бесплатный вход. AI-раздел и практика с проверкой ментором имеют отдельные условия доступа. В «1С код» действуют лимиты попыток и восстановление жизней.
Открыть тренажёр код-ревью →