Понедельник, 19.11.2018, 21:11
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Форум » Основной » Проблемные ситуации » При отладке запроса От(Запрос) "портит" сам запрос (От(Запрос) удаляет объект Запрос)
При отладке запроса От(Запрос) "портит" сам запрос
tormozitДата: Понедельник, 05.11.2018, 14:00 | Сообщение # 16
Генералиссимус
Группа: Администраторы
Сообщений: 2147
Репутация: 27
Статус: Оффлайн
Цитата avm ()
сама функция От(Запрос) возвращает "неопределенно"
Это нормально для выполнения в интерактивном предмете/контексте отладки (на клиенте). Так было всегда. В неинтерактивном же создается снимок запроса и возвращается строка-указатель.
 
tormozitДата: Понедельник, 05.11.2018, 14:03 | Сообщение # 17
Генералиссимус
Группа: Администраторы
Сообщений: 2147
Репутация: 27
Статус: Оффлайн
Так получается переменная Запрос у тебя всегда не портилась при вызове От(Запрос)?
 
tormozitДата: Понедельник, 05.11.2018, 14:05 | Сообщение # 18
Генералиссимус
Группа: Администраторы
Сообщений: 2147
Репутация: 27
Статус: Оффлайн
Цитата avm ()
сразу опять нажимаю на рассчитать (не перевыбираю ничего.. просто опять нажимаю "рассчитать") - консоль не вызывается и вроде ничего не происходит
Это стандартное поведение этого окна отладчика.
 
tormozitДата: Понедельник, 05.11.2018, 14:14 | Сообщение # 19
Генералиссимус
Группа: Администраторы
Сообщений: 2147
Репутация: 27
Статус: Оффлайн
Спасибо. Проблему с нежелательным изменением текста в отлаживаемом объекте Запрос после завершения отладки повторил.
 
avmДата: Понедельник, 05.11.2018, 14:52 | Сообщение # 20
Рядовой
Группа: Пользователи
Сообщений: 12
Репутация: 4
Статус: Оффлайн
Классно!

Я думаю это именно из-за того, что "Запрос" передается по ссылке, а не по Значению

Добавлено (05.11.2018, 14:53)
---------------------------------------------
Кстати.. Там наверное еще и проблема "не модификации" временных таблиц запроса. Нет?

 
tormozitДата: Понедельник, 05.11.2018, 15:06 | Сообщение # 21
Генералиссимус
Группа: Администраторы
Сообщений: 2147
Репутация: 27
Статус: Оффлайн
По ссылке или по значению может передаваться переменная при вызове функции. В зависимости от этого эта переменная получит или не получит значение, которое было присвоено соответствующему параметру внутри функции.
Объект же всегда передается по ссылке, т.е. всегда не копируется. Универсального механизма копирования объектов в платформе 1С нет. Это можно делать только явно своим кодом. Поэтому все изменения с переданным в функцию объектом отражаются везде, т.к. один для всех.

Возможное изменение менеджера временных таблиц при синхронной/интерактивной отладке запроса является задуманным, т.к. его копирование может быть очень затратным или неполным. Однако при вызове От() можно установить параметр ОтложеннаяОтладка=Истина. Тогда принудительно будет сделан и сохранен снимок (копия) объекта, включая менеджер временных таблиц, но при извлечении данных из него обрезаются большие временные таблицы (по умолчанию свыше 500000 строк).

В итоге можно сказать, что
- синхронная (интерактивная) отладка запроса является строгой и быстрой, т.к. работает с оригинальным объектом, но она может изменить его менеджер временных таблиц
- асинхронная (отложенная) отладка гарантировано не изменяет оригинальный запрос, но тратит время и место в хранилище на создание полной* копии запроса с учетом ограничения на размер временных таблиц
 
avmДата: Понедельник, 05.11.2018, 15:20 | Сообщение # 22
Рядовой
Группа: Пользователи
Сообщений: 12
Репутация: 4
Статус: Оффлайн
>Объект же всегда передается по ссылке, т.е. всегда не копируется. Универсального механизма копирования объектов в платформе 1С нет. Это можно делать только явно своим кодом. 

Так ведь можно же первым оператором функции От(ЗапросОтладки) сделать

МойЗапросОтладки = ЗапросОтладки;

Тогда все изменения объекта МойЗапросОтладки будут касаться только него

С менеджером временных таблиц - согласен... Ситуация намного сложнее, по большому значению уходит на уровень блокировок СУБД
 
tormozitДата: Понедельник, 05.11.2018, 15:26 | Сообщение # 23
Генералиссимус
Группа: Администраторы
Сообщений: 2147
Репутация: 27
Статус: Оффлайн
Цитата avm ()
МойЗапросОтладки = ЗапросОтладки;
Ошибаешься. Эта операция просто копирует ссылку на объект, а не объект.
 
tormozitДата: Понедельник, 05.11.2018, 21:45 | Сообщение # 24
Генералиссимус
Группа: Администраторы
Сообщений: 2147
Репутация: 27
Статус: Оффлайн
Исправлена в 4.71 проблема изменения текста в отлаживаемом объекте Запрос после завершения отладки.
 
Форум » Основной » Проблемные ситуации » При отладке запроса От(Запрос) "портит" сам запрос (От(Запрос) удаляет объект Запрос)
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: