3.34 Консоль запросов. Временная таблица из МВТ.
|
|
akoshelev5 | Дата: Пятница, 19.06.2015, 14:05 | Сообщение # 1 |
Рядовой
Группа: Проверенные
Сообщений: 9
Репутация: 1
Статус: Оффлайн
| При вызове функции отладки запроса из конфигуратора временная таблица переданного запроса, используемая в тексте запроса (но созданная ранее и помещенная в менеджер временных таблиц), не попадает в список временных таблиц на форме консоли запросов. При этом запрос работает корректно. Проблема только с отсутствием вт на форме обработки.
ИР: 3.34 Платформа 1С: 8.2.19.83
Сообщение отредактировал akoshelev5 - Пятница, 19.06.2015, 14:05 |
|
| |
tormozit | Дата: Пятница, 19.06.2015, 14:07 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 6382
Репутация: 165
Статус: Оффлайн
| Для установления причины нужен текст запроса.
|
|
| |
akoshelev5 | Дата: Понедельник, 22.06.2015, 08:04 | Сообщение # 3 |
Рядовой
Группа: Проверенные
Сообщений: 9
Репутация: 1
Статус: Оффлайн
| Причину нашёл самостоятельно. У меня текст запроса довольно большой ~35000 символов. В обработке КонсольЗапросов в какой-то из последних версий было добавлено условие Код Если СтрДлина(ЭлементыФормы.ТекстЗапроса.ПолучитьТекст()) < 10000 Тогда КоманднаяПанельФормыРежимДереваЗапроса(); КонецЕсли; Из-за этого при отладке моего запроса в консоли запросов временные таблицы не заполняются. Может это ограничение и требуется, но не в моём случае. Если ограничение действительно требуется, то может добавить параметр в функцию Отладить(), в котором можно будет указать длину запроса для данного ограничения.
|
|
| |
tormozit | Дата: Понедельник, 22.06.2015, 09:50 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 6382
Репутация: 165
Статус: Оффлайн
| Очень желательно предоставить пример для воспроизведения проблемы, отвязанный от метаданных. Пороговую длину для эксперимента я сокращу. Вывод, сделанный на основе описанного наблюдения, может быть неверным. Указанный код лишь отключает автоматическое включение режима дерева запроса для очень больших запросов. Оператор в любой момент может сам нажать на кнопку включения режима дерева запроса и, кажется, получить тот же результат. Это выполнялось?
|
|
| |
akoshelev5 | Дата: Понедельник, 22.06.2015, 11:07 | Сообщение # 5 |
Рядовой
Группа: Проверенные
Сообщений: 9
Репутация: 1
Статус: Оффлайн
| При нажатии кнопки включения режима дерева запроса, действительно, заполняется список временных таблиц. Если не включать режим дерева запроса, то список временных таблиц не заполняется. Проверить можно на примере запроса: Код Запрос.Текст = "ВЫБРАТЬ | 1 КАК Поле1 |ПОМЕСТИТЬ ВремТаблица |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВремТаблица.Поле1 |ИЗ | ВремТаблица КАК ВремТаблица"; для эксперимента уменьшить ограничение на длину текста запроса, например, до 10.
|
|
| |
tormozit | Дата: Понедельник, 22.06.2015, 11:33 | Сообщение # 6 |
Генералиссимус
Группа: Администраторы
Сообщений: 6382
Репутация: 165
Статус: Оффлайн
| Цитата При нажатии кнопки включения режима дерева запроса, действительно, заполняется список временных таблиц. Если не включать режим дерева запроса, то список временных таблиц не заполняется. Это проектное поведение. Согласен что взаимосвязь не очевидна. Как бы ты хотел чтобы программа обозначала ее?
|
|
| |
akoshelev5 | Дата: Понедельник, 22.06.2015, 12:02 | Сообщение # 7 |
Рядовой
Группа: Проверенные
Сообщений: 9
Репутация: 1
Статус: Оффлайн
| Дело в том, что я деревом запроса пользуюсь крайне редко, а вот просмотром временных таблиц почти каждый раз. Поэтому если возможно, то, лично мне, было бы удобно, чтобы временные таблицы заполнялись всегда безусловно, а вот дерево запроса пусть строится по ограничению длины запроса как сейчас, либо вообще не включать режим дерева запроса автоматически. PS Понимаю, что сколько пользователей, столько и мнений.
|
|
| |
tormozit | Дата: Понедельник, 22.06.2015, 13:05 | Сообщение # 8 |
Генералиссимус
Группа: Администраторы
Сообщений: 6382
Репутация: 165
Статус: Оффлайн
| Заполнение списка всех использованных временных таблиц выполняется как побочная функция включения дерева запроса. Основные затраты идут именно на это дерево. Поэтому просто найти все временные таблицы в тексте запроса программа не сможет. Без дерева запроса программа может с большой вероятностью обнаружить только созданные в выполненном запросе временные таблицы.
|
|
| |
akoshelev5 | Дата: Понедельник, 22.06.2015, 13:49 | Сообщение # 9 |
Рядовой
Группа: Проверенные
Сообщений: 9
Репутация: 1
Статус: Оффлайн
| Тогда пусть останется как есть.
|
|
| |