Небольшой слом шаблона с индексом цикла

Посмотрите на этот код:

Как это ни странно, но он иногда выдавал ошибку:

Я этот код и так вертел и эдак. А причину ошибки найти не мог. Ведь вроде бы все логично, Последний не может превышать Всего. Откуда же нарушение индекса?

И все же я нашел причину ошибки, но это сломало мой шаблон.

Дело в том, что индекс нарушался не сверху, а снизу. Если Последний равен нулю, то мы получали отрицательный индекс в выражении Последний-1.

Поэтому я добавил в код защиту от нуля:

Вот такая элегантная ошибка.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

комментария 2

  1. rzd:

    Из кода видно, что от коллекции требуется наличие двух элементов, но никаких гарантий этому нет.
    Собственно практически автоматически из этого следует, что алгоритм стоит ограничить условием «Всего>1».
    Кстати это условие эквивалентно «Последний>0».

    • Задним числом мы все умны. А вот до меня не доперло сразу. Я почему-то думал только об ограничениях вверх

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *