vanessa-opensource / add

Разработка с управляемым качеством на 1С
Mozilla Public License 2.0
330 stars 183 forks source link

Исправление ошибки, когда переменная ИгнорируемыйМассивТекстовИсключений не заполнена #1094

Closed ovcharenko-di closed 1 year ago

ovcharenko-di commented 1 year ago

В L440 условие ИЛИ, поэтому когда переменная ИгнорируемыйМассивТекстовИсключений не заполнена (по умолчанию - Неопределено) то функция МассивСодержит() валится с ошибкой "Итератор для значения не определен".

@vanessa-opensource/Collaborators - просьба прокомментировать и проверить

ovcharenko-di commented 1 year ago

@artbear , кстати, вот что странно: в моем файле настроек ПропускаемыеИсключения указаны, но переменная ИгнорируемыйМассивТекстовИсключений все равно Неопределено

все воспроизводится на SNAPSHOT

artbear commented 1 year ago

@ovcharenko-di странный у тебя ишуз вижу условие

ИЛИ Не МассивСодержит(ИгнорируемыйМассивТекстовИсключений, Ошибка) Тогда

читаю твой текст

когда переменная ИгнорируемыйМассивТекстовИсключений не заполнена (по умолчанию - Неопределено) то функция МассивСодержит() валится с ошибкой "Итератор для значения не определен".

мысленно подставляю Неопределено в указанное условие и получаю срабатывание на 1м по порядку условии - Если Не ЗначениеЗаполнено(ИгнорируемыйМассивТекстовИсключений) т.е. все верно

1С-ка обрабатывает условия по порядку - слева направо и никогда не обрабатывает сначала правые условия!

ovcharenko-di commented 1 year ago

@artbear ты прав, я неверно интерпретировал код.

Но факт в том, что ошибка тут возникает, и именно такая, именно на этой строке (пруф ниже). Значит, туда передается непустое значение, для которого итератор не определен. В этом PR я добавил проверку на то, что передаваемое значение - это именно массив. Не очень изящное решение, но должно решить проблему.

image

artbear commented 1 year ago

@ovcharenko-di Спасибо!