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