tormozit / RDT1C

Подсистема "Инструменты разработчика" для платформы 1С 8
http://devtool1c.ucoz.ru
91 stars 9 forks source link

Консоль запросов. Сохранить объект для отладки с менеджером временных таблиц не сохраняет временные таблицы. #485

Closed PerlAmutor closed 1 year ago

PerlAmutor commented 1 year ago

https://github.com/tormozit/RDT1C/assets/87958986/5dd096ef-48ba-416e-a4be-43721062196e

Информация для технической поддержки Платформа: 8.3.20.1996 Режим БД: файловый Конфигурация. Название: 1С:ERP Управление предприятием 2 (2.5.13.34) Конфигурация. Основной режим запуска: Управляемое приложение Конфигурация. Вариант встроенного языка: Русский Конфигурация. Режим управления блокировкой данных: Управляемый Конфигурация. Режим совместимости: Версия8_3_17 Конфигурация. Режим использования синхронных вызовов: Использовать Конфигурация. Версия БСП: 301 Инструменты разработчика. Версия: Портативный 6.83.2p Инструменты разработчика. Инструмент: Консоль запросов Инструменты разработчика. Перехват клавиатурного ввода: Да Инструменты разработчика. Объекты на сервере: Да Инструменты разработчика. Серверный модуль: Да Расширения. Понижайка () Клиент. Приложение: Обычное приложение 64б Клиент. Проверка модальных вызовов: Нет Клиент. Язык интерфейса конфигурации: ru Клиент. Язык интерфейса системы: ru Клиент. Отладка разрешена: Нет Клиент. Постоянный кэш метаданных: Да Клиент. ОС: Майкрософт Windows 10 Pro 64-разрядная Русский Клиент. ОС от имени администратора: Нет Клиент. ОС выполнение BAT: Да Клиент. ОС Текущая кодовая страница: 866

Воспроизведение проблемы

  1. В Консоли Запросов выполнил запрос помещающий данные во временную таблицу
  2. Вызвал команду " \ Командная панель \ Сохранить объект "
  3. Скопировал возвращенный текст
  4. Вызвал инструмент "Отладить отложенный объект"
  5. В восстановленном запросе отсутствуют временные таблицы. В файле .deb тоже нет никакого намека на их присутствие.
  6. Запрос для воспроизведения:
ВЫБРАТЬ ПЕРВЫЕ 10
    Т.Ссылка
ПОМЕСТИТЬ ВтДокументы
ИЗ
    Документ.АвансовыйОтчет КАК Т
;
ВЫБРАТЬ
    *
ИЗ
    ВтДокументы КАК Т

Пробовал на всех версиях ИР вплоть до версии Ир6.60p. Нигде не работает.

tormozit commented 1 year ago

Так сделано умышленно. В снимок запроса сохраняются только входящие временные таблицы, т.е. те которые необходимы для выполнения запроса. В твоем примере таких нет. А выходящие временные таблицы можно получить путем выполнения запроса. Такой подход в частности позволяет сократить размер снимка, который иногда может и без того быть очень большим.

[Обновлено 13.07.2023] Тут я предоставил устаревшую информацию и потому некорректную. На самом деле функцией ОтЛкс() на платформе 8.3.8+ в снимок сохраняются все временные таблицы менеджера.

PerlAmutor commented 1 year ago

Так сделано умышленно. В снимок запроса сохраняются только входящие временные таблицы, т.е. те которые необходимы для выполнения запроса. В твоем примере таких нет. А выходящие временные таблицы можно получить путем выполнения запроса.

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

Тут ситуация следующая. Есть регламентное задание, которое периодически забирает из регистра заданий данные, а потом удаляет. Обнаружилось, что в задания попадают некие данные, которые сильно влияют на длительность выполнения запроса в регламентном задании. Т.к. регистр заданий постоянно содержит различные данные, то и мой запрос помещает во временную таблицу каждый раз разные данные. Я такие данные отловил и хотел сохранить в снимок, но ИР не дал мне этого сделать, да еще и чистанул их из временной таблицы. В последствии я хотел использовать этот снимок для оптимизации запроса, но пришлось потратить еще день, чтобы снова эти данные выловить, т.к. ИР оказал мне медвежью услугу из-за задуманного поведения...

tormozit commented 1 year ago

Если нужно таблицу значений сохранить, то используй команду "Сохранить в файл" формы "Таблица значений". Про очистку временных таблиц от тебя есть другая заявка. Подсказку кнопки заменю на более точную.

PerlAmutor commented 1 year ago

Но тут странная ситуация получается. Если у тебя есть входящие временные таблицы, значит у тебя уже есть .deb файл и его можно переиспользовать. И выходит, что для Консоли Запросов нет альтернативы типа функции иробщий.ОтЛкс().

tormozit commented 1 year ago

Консоль запросов снимок запроса делает ровно тем же алгоритмом - вызывает функцию ОтЛкс(). Можешь проверить это установкой туда точки останова. Поэтому непонятно использование термина "альтернатива".

PerlAmutor commented 1 year ago

Дело то не в этом, а в различном поведении. У меня получается нет возможности сохранить из консоли запросов все временные таблицы. А чтобы это сделать надо переходить в консоль кода и оттуда уже делать снимок вызывая ОтЛкс() непосредственно.

Хотя бы галочку сделай для этого, чтобы можно было выбирать сохранять все временные таблицы или только из внешнего файла. Пусть даже будет выключена по умолчанию, я не настаиваю.

tormozit commented 1 year ago

Ошибку воспроизвел https://www.hostedredmine.com/issues/966321

tormozit commented 1 year ago

Исправил предоставленную мной здесь выше некорректную информацию в сообщении https://github.com/tormozit/RDT1C/issues/485#issuecomment-1631886345

tormozit commented 1 year ago

Исправлено в 6.84