infostart-hub / toolkit

Infostart Toolkit
https://infostart.ru/marketplace/toolkit/
74 stars 7 forks source link

При выполнении кода с ошибкой в консоли выдаются ошибки исполнения самого инструмента и нельзя узнать, что именно не так в твоем же коде #320

Closed artbear closed 3 years ago

artbear commented 3 years ago

Описание ошибки При выполнении кода с ошибкой в консоли выдаются ошибки исполнения самого инструмента и нельзя узнать, что именно не так в твоем же коде (

Т.е. для более-менее сложного кода, который выдает исключение, выдаются странные модальные исключения со строками из Тулкита.

image

Окружение:

Infostart Toolkit 1.8.7

Платформа: 8.3.18.1483 (Linux x86-64) Режим БД: клиент-серверный

Конфигурация: 1С:Комплексная автоматизация 2 (2.4.13.170) Основной режим запуска: Управляемое приложение Режим совместимости: Версия8_3_14 Версия БСП: 3.1.3.470

Клиент: ОС: Windows x86 (Microsoft Windows 10 version 10.0 (Build 14393)) Язык: ru Режим запуска: Управляемое приложение

artbear commented 3 years ago

Проверить можно, если допустить синтакс-ошибку в коде - например, использовать переменную, которую не задавали. Сообщить(МояПеременная);

artbear commented 3 years ago

Проблема в том, что в метод 1 приезжает НачальныйИндекс, который больше длины строки, а СтрНайти падает на этом ( а вычисляется он выше, в методе ПодготовкаКодаИсполнения(Код), см. 2

1

Функция РазборПрочитатьДоСимвола(Строка, Символ, НачальныйИндекс = Неопределено, Направление = Неопределено, СмещатьИндекс = Истина) Экспорт

    Если Направление = Неопределено Тогда
        Индекс = СтрНайти(Строка, Символ, , НачальныйИндекс); // тут ошибка

2

        НомерСимвола = 1;
        ИТК_Строки.РазборПрочитатьНезначимые(СтрокаКода, НомерСимвола);
        Идентификатор = ИТК_Строки.РазборПрочитатьИдентификатор(СтрокаКода, НомерСимвола);

        Если ПустаяСтрока(Идентификатор) Тогда
            Продолжить;
        КонецЕсли;

        ИТК_Строки.РазборПрочитатьНезначимые(СтрокаКода, НомерСимвола);
        СледующийСимвол = ИТК_Строки.РазборПрочитатьСимвол(СтрокаКода, НомерСимвола, Ложь);
        ВыражениеВозврата = ИТК_Строки.РазборПрочитатьДоСимвола(СтрокаКода, ";", НомерСимвола);
artbear commented 3 years ago

@Evg-lylyk посмотри, возможно, быстро исправишь

artbear commented 3 years ago

Падает на строке кода Попытка

artbear commented 3 years ago

Да, падает на простом коде

Попытка
Исключение
КонецПопытки;
artbear commented 3 years ago

@Evg-lylyk помогла вставка кода в блок 2

ИТК_Строки.РазборПрочитатьНезначимые(СтрокаКода, НомерСимвола);
СледующийСимвол = ИТК_Строки.РазборПрочитатьСимвол(СтрокаКода, НомерСимвола, Ложь);

Если НомерСимвола > СтрДлина(СтрокаКода) Тогда // мой код
    НомерСимвола = СтрДлина(СтрокаКода);
КонецЕсли;

ВыражениеВозврата = ИТК_Строки.РазборПрочитатьДоСимвола(СтрокаКода, ";", НомерСимвола);
Evg-lylyk commented 3 years ago

Спасибо за информацию, поправил 1.8.8, 1.9