Каждый разработчик в экосистеме 1С рано или поздно сталкивается с ситуацией «не верь глазам своим». Вы пишете доработку, размещаете её в ожидаемой процедуре, например, в ОбработкаПроведения, но код не срабатывает или вызывает ошибки. Оказывается, что логика, которая должна была быть там, «переехала» в ПередЗаписью или другое событие, хотя имя процедуры осталось прежним. Давайте разберем, как действовать в таких ситуациях и как минимизировать риски в будущем.
Когда название процедуры вводит в заблуждение, не пытайтесь угадать логику по заголовку. Единственный надежный инструмент — это отладчик. Если доработка не работает, выполните следующие действия:
Вычислить выражение, чтобы увидеть, какие ссылки и данные на самом деле доступны в текущем контексте исполнения.Часто путаница возникает из-за того, что разработчики меняют место выполнения логики, не переименовывая методы. Рассмотрим пример типичной ошибки:
// Ожидалось выполнение в ОбработкаПроведения
Процедура ЗаказНаПеремещениеОбработкаПроведения(Отказ, Режим)
// Код не работает, так как ссылка на объект еще не записана
// или событие перемещено в ПередЗаписью
КонецПроцедуры
Если вы нашли такую «мину замедленного действия», не спешите оставлять всё как есть. Проанализируйте ситуацию: была ли логика перенесена осознанно или это следствие хаотичного копирования кода. Если метод называется ЗаказНаПеремещениеОбработкаПроведения, а выполняется в ПередЗаписью, это грубое нарушение чистоты кода, которое запутает других разработчиков в будущем.
Не экономьте буквы! Если вы вынуждены работать с legacy-кодом, приведите его в порядок, чтобы избежать повторных затрат времени. Рекомендуем придерживаться следующего алгоритма:
Чтобы не попадать в ловушки «замыленного взгляда», используйте коллективные практики:
Помните: если вы видите код, который вызывает вопрос «какой мудак это писал?», а через секунду понимаете, что это ваш код годичной давности — вы растете как профессионал. Важно не только найти решение проблемы здесь и сейчас, но и оставить систему в таком состоянии, чтобы следующий разработчик (или вы сами через полгода) не потратил два часа на отладку элементарной логической ошибки.
Работая сообща и придерживаясь стандартов именования, мы значительно сокращаем количество «костылей» и делаем поддержку конфигураций более предсказуемой и быстрой.