Четверг, 16.05.2024, 20:30
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Основной » Проблемные ситуации » Консоль запросов с удалением временных таблиц
Консоль запросов с удалением временных таблиц
nickstonaliДата: Вторник, 19.12.2023, 15:08 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 32
Репутация: 20
Статус: Оффлайн
если в запросе будет удаление временных таблиц то после выполнения запроса
ТаблицаРезультатаПакета заполняется не верными значениями.

4,6,7 это удаление временных таблиц, и по идее 0 должен был быть там, а вот 1,2,3, не должны быть с 0, при этом не факт что в 5 верные данные

Пока, что нашел не верно заполняется в ирКонсольЗапросов в прощедуре ЗагрузитьРезультатПакета стр 2311
Код
Для Каждого ЭлементРезультатаПакета Из мРезультатПакета Цикл
         СтрокаТаблицыРезультата = ТаблицаРезультатаПакета.Добавить();
         СтрокаТаблицыРезультата.Индекс = Индекс;
         Если МассивСоздаваемыхВременныхТаблиц.Количество() > Индекс Тогда
            СтрокаТаблицыРезультата.Имя = МассивСоздаваемыхВременныхТаблиц[Индекс];
         КонецЕсли;
         Если ЗначениеЗаполнено(СтрокаТаблицыРезультата.Имя) Тогда
            СтрокаВременнойТаблицы = ВременныеТаблицы.Найти(НРег(СтрокаТаблицыРезультата.Имя), "НИмя");
            Если СтрокаВременнойТаблицы <> Неопределено Тогда
               СтрокаТаблицыРезультата.КоличествоСтрок = СтрокаВременнойТаблицы.РазмерРезультата;
            КонецЕсли;
         Иначе
            СтрокаТаблицыРезультата.КоличествоСтрок = РазмерРезультатаЗапроса(ЭлементРезультатаПакета);
         КонецЕсли;
         Индекс = Индекс + 1;
      КонецЦикла;


в переменной ВременныеТаблицы находится всего 2 таблицы, по факту из скрина их 5

По ходу во временных таблицах, только те что не были уничтожены в запросе

в процедуре выполнитьзапрос стр 2098

Код
Если РежимВременнойТаблицы <> Истина Тогда
         Если ирКэш.ДоступныТаблицыМенеджераВременныхТаблицЛкс() Тогда
            Для Каждого ВременнаяТаблица Из мОбъектЗапроса.МенеджерВременныхТаблиц.Таблицы Цикл
               ДобавитьОписаниеВременнойТаблицы(ВременнаяТаблица.ПолноеИмя);
            КонецЦикла;
         Иначе
            Для Каждого ЭлементСписка Из СоздаваемыеВременныеТаблицы Цикл
               Если ЗначениеЗаполнено(ЭлементСписка.Представление) Тогда
                  ДобавитьОписаниеВременнойТаблицы(ЭлементСписка.Представление);
               КонецЕсли;
            КонецЦикла;
         КонецЕсли;
      КонецЕсли;

вот тут две ветки первая идет по временным которые останутся в запросе, а вот вторая идет по тем что в принципе были в запросе те в СоздаваемыеВременныеТаблицы, лежит то что нужно. И видимо по данной переменной и надо заполнять количество строк.
Прикрепления: 0717259.png (10.9 Kb)


Сообщение отредактировал nickstonali - Вторник, 19.12.2023, 15:42
 
tormozitДата: Вторник, 19.12.2023, 16:32 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 6201
Репутация: 159
Статус: Оффлайн
Для уничтоженной временной таблицы после выполнения запроса неоткуда взять количество строк. Поэтому так и будет отображаться 0. Используй команду "Выполнить все запросы", чтобы получать корректные размеры всех запросов пакета в такой ситуации. Или удали из пакета запросы уничтожения таблиц.

Некорректный подсчет размера результата запроса УНИЧТОЖИТЬ подтверждаю https://www.hostedredmine.com/issues/977206
 
nickstonaliДата: Вторник, 19.12.2023, 17:16 | Сообщение # 3
Сержант
Группа: Пользователи
Сообщений: 32
Репутация: 20
Статус: Оффлайн
С Удалением "удаления" я пробовал, работает.
Тут вопрос не в том откуда взять количество строк для удаленных, тут проблема в том что есть список результатов и есть список таблиц (временных) и при выводе происходить поиск индекса куда выводить по списку временных, но там всего 2 строки (в моем случае) поэтому индексы находятся не верно и не верно заполняется таблица - те по сути кол-во строк не в те строки пишется.

Но правильный список с индексами есть, это СоздаваемыеВременныеТаблицы, если таблицу заполнять по индексам из этого списка то будет все правильно.
 
tormozitДата: Вторник, 19.12.2023, 18:17 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 6201
Репутация: 159
Статус: Оффлайн
Согласен. Про "неоткуда" я поторопился. Сделаю извлечение размеров уничтоженных временных таблиц в этой колонке.
 
tormozitДата: Понедельник, 25.12.2023, 00:14 | Сообщение # 5
Генералиссимус
Группа: Администраторы
Сообщений: 6201
Репутация: 159
Статус: Оффлайн
Исправлено в 7.06
 
Форум » Основной » Проблемные ситуации » Консоль запросов с удалением временных таблиц
  • Страница 1 из 1
  • 1
Поиск: