5. Технология разработки
#63

Готовишься к экзамену?

Полнофункциональный тренажер @bot_1cnik_bot с полноценным обучением, режимом экзамена и подробной статистикой.

Перейти в бота

Для чего в отладчике 1С используют «точку останова с условием», когда нужно разобраться, почему документ «Ведомость в кассу» заполняется не так, как ожидалось?

Она нужна, чтобы останавливать выполнение только на строках с операторами ветвления (ЕСЛИ/ИНАЧЕ).
Неправильно: условная точка останова может стоять на любой строке кода, а не только на условных операторах; она контролирует, сработает ли останов при выполнении конкретной строки.
Она останавливает выполнение на выбранной строке, но только если заданное логическое выражение (условие останова) вычислилось как Истина.
Правильно: смысл условной точки останова - сработать только при истинном значении условия, что удобно, например, когда нужно поймать конкретного сотрудника, документ или ситуацию при автозаполнении ведомости.
Она срабатывает только тогда, когда условие вернуло Ложь.
Неправильно: стандартная логика - останов при истинности условия; «останавливать при Ложь» не является базовым назначением условной точки останова.
Она срабатывает только если при вычислении условия обязательно возникает ошибка.
Неправильно: по назначению условная точка останова используется для останова при Истине; варианты «останавливать из-за ошибки условия» могут встречаться как дополнительное поведение/параметры в некоторых отладчиках, но это не основная цель и не то, что описывает суть условной точки останова.

Пояснение

Расширенная подсказка (как применять условную точку останова для поиска причин проблем с автозаполнением «Ведомости в кассу»): 1) Зачем это нужно При нажатии «Заполнить» в ведомости выполняется код, который подбирает строки по данным «к выплате» и настройкам выплаты сотрудника. Если в цикле обрабатываются десятки/сотни сотрудников, обычная точка останова будет тормозить на каждой итерации. Условная точка останова позволяет остановиться только в «нужном» случае. 2) Типовые сценарии условий (примеры логики) - Остановиться, когда обрабатывается конкретный сотрудник: например, когда текущий сотрудник = Иванов. - Остановиться, если сумма к выплате стала 0 или отрицательная. - Остановиться, если место выплаты сотрудника не «Касса» (частая причина, почему сотрудник не попадает в кассовую ведомость). - Остановиться, если вид выплаты/дохода не совпадает с параметрами ведомости. 3) Практический кейс «сотрудник не попадает в ведомость» Шаги проверки обычно такие: - Убедиться, что есть начисление и сформированы суммы «к выплате». - Проверить «место/способ выплаты» сотрудника (касса vs банк/счет). - Проверить наличие задолженности сотрудника перед организацией или уже оформленных выплат (из-за этого остаток к выплате может быть нулевым). Используйте условную точку останова в участке, где формируется список строк ведомости, и задайте условие на «проблемного» сотрудника - так вы быстро увидите, на каком именно шаге он отфильтровывается. 4) Почему условие - именно логическое выражение Отладчик останавливается только когда выражение истинно. Это позволяет: - не останавливаться на каждой итерации цикла; - ловить редкие ситуации (например, когда срабатывает необычное правило отбора); - точечно анализировать значения переменных именно в момент, когда формируется строка ведомости. 5) Быстрые ориентиры по причинам «не заполняется/не тот состав» На практике чаще всего мешают: - не сформированы суммы «к выплате»; - неверный тип ведомости относительно способа выплаты; - несоответствие параметров ведомости (вид выплаты/дохода, организация, дата); - нулевой остаток к выплате из-за удержаний/задолженности/уже проведенных выплат. Эти проверки удобно «поймать» условием точки останова: останавливайте отладку только когда выполняется нужное сочетание признаков.