Вход | Регистрация


Как повесить клиент при отладке или же сложно о простом

Как повесить клиент при отладке или же сложно о простом
Я
   mayet
 
14.08.18 - 21:26
Здравствуйте, сегодня уперся в очень неприятную ситуацию

&НаСервере
Функция ИмпортироватьОбъект(Путь)
        Текст = Новый ЧтениеТекста;
        Текст.Открыть(Путь);
        
        ИмяДокумента = "";
        
        
        ит = 0;
        Стр = " ";
        Пока Стр <> Неопределено Цикл
            Стр = Текст.ПрочитатьСтроку();
            Если ит = 0 тогда
                Если Стр = "#Метаданные:" тогда

                    ИмяКонф = Текст.ПрочитатьСтроку();
                    ВерсияКонф = Текст.ПрочитатьСтроку();
                    Если Метаданные.Имя = ИмяКонф тогда
                        Если Метаданные.Версия = ВерсияКонф Тогда
                            Сообщить("Конфигурация и версия начальной и конечной базы совпадают");
                        Иначе
                            Сообщить("Версии конфигураций начальной и конечной базы не совпадают"
                                + "//"+ ИмяКонф+":"+ВерсияКонф);

                        КонецЕсли;
                    Иначе
                        Сообщить("Конфигурации начальной и конечной базы не совпадают"
                        + "//"+ ИмяКонф+":"+ВерсияКонф);                        

                    КонецЕсли;
                    
                    ИмяДокумента = Текст.ПрочитатьСтроку();
                    Сообщить(ИмяДокумента);
                КонецЕсли;
            КонецЕсли;
            
            Если Стр = "#Реквизиты:" тогда 

                Сообщить("Реквизиты найдены");
                Попытка 
                    НовыйДок = Документы[имяДокумента].СоздатьДокумент();
                    Пока (Стр = Текст.ПрочитатьСтроку()) <> неопределено
                            или Стр <> "#Табличные части:" Цикл

                        Попытка
                            НовыйДок[Лев(Стр, Найти(Стр, "=")-1)] = Прав(Стр, Найти(стр, "=" + 1));    
                        Исключение
                            Сообщить("Ошибка при разборе реквизитов");
                        КонецПопытки;
                    КонецЦикла;
                Исключение
                    Сообщить("Документ в текущей конфигурации не найден");
                    Возврат null;
                КонецПопытки;                    
            КонецЕсли;
            ит = ит + 1;                        
        КонецЦикла;    
        Текст.Закрыть();
        Возврат НовыйДок;
КонецФункции


Эта чудесная и страшная функция полностью подвешивает клиент в котором выполняется. Предположительно все строки из файла находит, в отладочной печати эта функция ничего не выводит, подскажите, где зациклился?
 
 
   Cyberhawk
 
1 - 14.08.18 - 21:33
Остановить отладчик и посмотреть текущую строку не судьба?
   Доминошник
 
2 - 14.08.18 - 21:36
(0) Если "играть в угадайку", я бы задумался об этом условии цикла

                   Пока (Стр = Текст.ПрочитатьСтроку()) <> неопределено
                            или Стр <> "#Табличные части:" Цикл
   H A D G E H O G s
 
3 - 14.08.18 - 21:37
Проблема в 3 местах, они уже могут быть Неопределено
                   ИмяКонф = Текст.ПрочитатьСтроку();
                    ВерсияКонф = Текст.ПрочитатьСтроку();
 ИмяДокумента = Текст.ПрочитатьСтроку();
   H A D G E H O G s
 
4 - 14.08.18 - 21:37
Ну а в целом - проблема в рукопопости.
   tesseract
 
5 - 14.08.18 - 23:15
(4) Там еще и СОКЛП нигде нет и возврат null в центре цикла,  и прочее и прочее.
   mayet
 
6 - 15.08.18 - 14:33
Доминошник, Большое спасибо! Действительно забыл что в условии ни в каком случае нельзя манипулировать переменными
   Вафель
 
7 - 15.08.18 - 14:34
(6) это тебе не ява какая нибудь

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует