![]() |
|
Пропадает значение переменной в отладчике 1С8 | ☑ | ||
---|---|---|---|---|
0
OpKc
04.06.19
✎
07:14
|
Доброго времени суток!
8.3.12.1714 режим совместимости 8.3.8 конфа Альфа-Авто клиент-сервер Столкнулся с такой проблемой: во время пошагового выполнения кода отчёта и вызываемых из него процедур общих модулей рандомно может пропасть значение переменной Построитель (в которой хранится ПостроительОтчета). Выражается это "пропадание" в том, что при выборе пункта "Вычислить выражение" в открывшемся окне в колонках "Значение" и "Тип" пусто. Если при этом шагнуть дальше - предмет отладки виснет. Попытка шагнуть на следующую строчку ничего не даёт, как будто отладка прекращается, по клавише F5 конфигуратор прдлагает перезапустить предмет отладки. Через несколько минут всё "отвисает", вычисление выражения работает корректно, я могу продолжить пошаговое выполнение кода с той строки, на которой всё зависло. Фоновые задания отключены, предмет отладки один, не отключается во время зависаний. Кэш конфигурации чистил. Режим отладки менял на http и обратно (http на сервере не включал, выбирал локальный сервер отладки). Впервые с таким сталкиваюсь. Гугл не помогает. Кусок кода, на котором ловлю зависания (закономерности не вижу, зависания на рандомных строках): Попытка ПараметрыИзмерений = ОтчетОбъект.ПараметрыИзмеренийСтрок; Исключение Возврат; КонецПопытки; Попытка СтруктураСвязиСвойств = ОтчетОбъект.СтруктураСвязиСвойств; Исключение КонецПопытки; Если ТипЗнч(СтруктураСвязиСвойств) <> Тип("Структура") Тогда СтруктураСвязиСвойств = Новый Структура(); КонецЕсли; Попытка СтруктураНеСвязанныхПоказателей = ОтчетОбъект.СтруктураНеСвязанныхПоказателей; Исключение КонецПопытки; Если ТипЗнч(СтруктураНеСвязанныхПоказателей) <> Тип("Структура") Тогда СтруктураНеСвязанныхПоказателей = Новый Структура(); КонецЕсли; Если Построитель = Неопределено Тогда Построитель = ОтчетОбъект.ПостроительОтчета; КонецЕсли; Построитель.ИзмеренияСтроки.Очистить(); Построитель.ИзмеренияКолонки.Очистить(); Построитель.Порядок.Очистить(); ОтчетОбъект.ДополнительныеПоляОтчета.Очистить(); Если Не Построитель.ВыводитьДетальныеЗаписи Тогда Построитель.ВыбранныеПоля.Очистить(); КонецЕсли; |
|||
1
OpKc
04.06.19
✎
07:15
|
+ (0) "глюк" могу поймать не только на представленном куске кода. Скопипастил сюда просто для примера.
|
|||
2
OpKc
04.06.19
✎
07:31
|
++(0) при возникновении этого "глюка" невозможно посмотреть не только значение переменной "Построитель", но и других переменных (локальных, глобальных).
|
|||
3
catena
04.06.19
✎
07:37
|
э... Так всегда было в отладчике во время вычислений между строками.
|
|||
4
OpKc
04.06.19
✎
07:54
|
(3) Правильно ли я понял мысль: когда я пытаюсь вычислить выражение "Построитель", конфигуратор рандомно вычисляет его либо за <1 сек. либо за >=5 мин. ?
|
|||
5
catena
04.06.19
✎
08:01
|
(4)Когда вы пытаетесь вычислить выражение "Построитель", он так же вычисляет все его реквизиты, чтобы построить вам дерево в табле. А скорость вычисления может зависеть от разных факторов.
|
|||
6
OpKc
04.06.19
✎
08:03
|
(5) Действительно, при попытке вычисления выражения выполняется какой-то ресурсоёмкий запрос к БД. Буду копать в эту сторону.
Спасибо за наводку! |
|||
7
Cyberhawk
04.06.19
✎
08:04
|
С какой-то свежей платформы вычисление в табло теперь фоновое, т.е. не блокирует интерфейс
|
|||
8
Cyberhawk
04.06.19
✎
08:04
|
Равно как и показ коллекций (по F2) тоже теперь фоновый
|
|||
9
OpKc
04.06.19
✎
08:12
|
(7)(8) да, про показ коллекций я заметил на больших ТЗ. Про построитель - не задумывался, что при вычислении выражения выполняется запрос к БД.
Собственно, и копать этот отчёт я начал с сообщений пользователей о том, что при некоторой комбинации настроек он формируется неприлично долго. Почему-то не сообразил, что это связано) Спасибо всем ответившим. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |