Мы используем файлы cookie для технической работы сайта (чтобы всё открывалось, загружалось и работало стабильно) и для аналитики (чтобы понимать, что вам интересно, и делать предложения полезнее).
РАБОТАЕМ ПО ВСЕЙ РОССИИ
Представьте ситуацию: в магазине час пик, очередь нервничает, касса не бьет чеки, а сканер отказывается считывать Data Matrix код. Или бухгалтерия в панике: закрытие месяца, а 1С выдает загадочное «Поле объекта не обнаружено». Знакомо? В этот момент вы или ваш системный администратор превращаетесь в детектива.
Чтобы найти причину сбоя, недостаточно просто смотреть на сообщение об ошибке. Нужно заглянуть «под капот» работающей программы. Для этого и существует режим отладки 1С.
В этой статье специалисты (мы занимаемся автоматизацией бизнеса и знаем цену каждой минуте простоя) расскажут, как включить отладку (даже на сервере!), как пользоваться точками остановы и что делать, если ошибка прячется в фоновых заданиях.
По сути, отладка — это рентген для кода. В обычном режиме программа выполняет тысячи операций в секунду, и вы видите только результат (или ошибку). В режиме отладки вы можете:
Это критически важно не только для программистов, но и для внедренцев, которые настраивают торговое оборудование, интеграцию с Честным Знаком или обмен данными.
Если у вас файловый вариант работы (база лежит в папке на компьютере или в сети), всё просто.
F5).
Иногда нужно запустить базу сразу в режиме отладки без входа в конфигуратор. Для этого в окне списка баз нажмите "Изменить", перейдите на последнюю вкладку и в поле "Дополнительные параметры запуска" пропишите: /debug
Важно: Если вы отлаживаете работу сканера штрихкодов или кассы, убедитесь, что запускаете клиент под теми же правами, под которыми работает оборудование. Часто проблема кроется именно в правах доступа Windows.
Здесь спотыкаются 90% новичков. Вы ставите точку останова, запускаете 1С, проводите документ... и ничего не происходит. Код пролетел мимо.
Почему? Потому что код выполняется на сервере 1С, а сервер по умолчанию работает без режима отладки (для экономии ресурсов). Чтобы его "поймать", нужно перенастроить службу сервера.
Вам потребуется доступ к серверу (RDP) и права локального администратора.
services.msc), найдите Агент сервера 1С:Предприятия 8.3 (обычно 1C:Enterprise 8.3 Server Agent) и остановите её.Win + R, введите regedit.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (Имя службы может отличаться в зависимости от версии платформы, ищите похожее).ImagePath. Он выглядит примерно так: "C:\Program Files\1cv8\8.3.xx.xxxx\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 ... -debug в строку запуска. Правильный вид: ...ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug. Внимание! Ключ -debug ставится после закрывающей кавычки пути к exe-файлу и пробела.
Если ваш сервер 1С крутится на Linux (Debian/Ubuntu/CentOS), правка реестра не поможет. Нужно править конфигурационный файл демона (обычно в /etc/systemd/system/ или в /etc/sysconfig/ в зависимости от дистрибутива). Вам нужно найти строку запуска и добавить туда тот же флаг -debug, после чего перезагрузить службу (systemctl restart srv1cv83).
Не верьте на слово. Проверьте.
tcp портов 1560-1591).Итак, мы подключились. Как теперь найти ошибку в коде?
Ставите курсор на строку кода, где подозреваете ошибку, и жмете F9. Появится красная точка. Когда программа дойдет до этого места, она замрет.
СуммаДокумента = 0. Отладчик остановится, только если сумма равна нулю. Это спасает, когда ошибка возникает на 1001-м товаре в цикле.Нет времени разбираться самому?
Оставьте заявку и наш специалист ответит на все вопросы
Когда программа остановлена, выделите любую переменную и нажмите Shift+F9. Вы увидите её текущее значение. В окне Табло можно писать произвольные формулы. Например, проверить, что вернет функция ПолучитьЦену(Товар, Дата), прямо в процессе отладки, не меняя код.
Это «нить Ариадны». Окно показывает цепочку: какая процедура вызвала текущую процедуру. Очень полезно, чтобы понять, откуда мы вообще пришли в этот модуль — из кнопки на форме или из общего модуля при проведении.
В простых случаях (УНФ, Розница, Бухгалтерия) вышеописанного хватает. Но в крупных системах (ERP, КА) или при работе со сложным оборудованием есть нюансы.
Многие процессы (обмен с сайтом, загрузка почты, расчет себестоимости) идут в фоне. Обычная точка останова там не сработает, потому что фоновое задание запускается в отдельном сеансе. Решение:
Сложность с кассами и сканерами в том, что события от драйвера (ВнешнееСобытие) приходят асинхронно. Лайфхак: Если сканер не работает, первым делом проверьте не код 1С, а сам драйвер. Часто в 1С есть кнопка «Тест устройства» в настройках подключаемого оборудования. Если там тест не проходит — отладчик не поможет, проблема в «железе», портах (COM/USB) или драйверах.
Режим отладки — это нагрузка. Сервер начинает писать больше логов, процессы синхронизируются, сетевой трафик растет.
-debug может просадить скорость работы на 10-20%.Не оставляйте «боевой» сервер в режиме отладки на года, если в этом нет острой необходимости.
Отладка 1С — это мощнейший инструмент, который позволяет понять логику работы программы, найти «узкое горлышко» в производительности или причину некорректных данных.
/debug.-debug в ImagePath.