Пятница, 29.03.2024, 10:05
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Основной » Проблемные ситуации » Отладка в консоли СКД при ошибке в запросе
Отладка в консоли СКД при ошибке в запросе
1cykuДата: Вторник, 20.02.2018, 09:25 | Сообщение # 1
Сержант
Группа: Проверенные
Сообщений: 22
Репутация: 11
Статус: Оффлайн
Платформа: 8.2.19.116
Инструменты разработчика: Портативные 4.40p
Не очень продвинутая СКД в 8.2 может генерировать кривой запрос, который не может быть исполнен. При включенной отладке в консоли кода СКД невозможно получить текст запроса, так как вывод текста запроса производится после успешного исполнения запроса


Код
{ВнешняяОбработка.ирОбщий.МодульОбъекта(3356)}: Ошибка при вызове метода контекста (Выполнить)
    Результат = Запрос.Выполнить();
по причине:
{(191, 2)}: Операция не разрешена в предложении "СГРУППИРОВАТЬ"
<<?>>ПРЕДСТАВЛЕНИЕССЫЛКИ(ВЫБОР


Исходная функция

Код
Функция ВыполнитьЗамеритьЗапросЛкс(Запрос, ЛиОтладка = Ложь, Заголовок = "") Экспорт

    Если ЛиОтладка Тогда
        ВремяНачала = ПолучитьТекущееВремяВМиллисекундахЛкс();
    КонецЕсли;
    Результат = Запрос.Выполнить();
    Если ЛиОтладка Тогда
        Текст = Новый ТекстовыйДокумент;
        Текст.УстановитьТекст(Запрос.Текст);
        Текст.Показать(Заголовок + " - " + Строка(ПолучитьТекущееВремяВМиллисекундахЛкс() - ВремяНачала) + " мс");
    КонецЕсли;
    Возврат Результат;

КонецФункции // ВыполнитьЗамеритьЗапросЛкс()

Предложение по исправлению

Код
Функция ВыполнитьЗамеритьЗапросЛкс(Запрос, ЛиОтладка = Ложь, Заголовок = "") Экспорт

    Если ЛиОтладка Тогда
        ВремяНачала = ПолучитьТекущееВремяВМиллисекундахЛкс();
        Текст = Новый ТекстовыйДокумент;
        Текст.УстановитьТекст(Запрос.Текст);
    КонецЕсли;
    Попытка
        Результат = Запрос.Выполнить();    
        Если ЛиОтладка Тогда
            Текст.Показать(Заголовок + " - " + Строка(ПолучитьТекущееВремяВМиллисекундахЛкс() - ВремяНачала) + " мс");
        КонецЕсли;
    Исключение
        Если ЛиОтладка Тогда
            Текст.Показать(Заголовок);
        КонецЕсли;
        ВызватьИсключение;
    КонецПопытки;
    
    Возврат Результат;

КонецФункции // ВыполнитьЗамеритьЗапросЛкс()
Прикрепления: 6435655.png (3.6 Kb)
 
tormozitДата: Среда, 21.02.2018, 00:22 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 6108
Репутация: 153
Статус: Оффлайн
Цитата 1cyku ()
При включенной отладке в консоли кода СКД

Не вполне понял, о каком именно инструменте идет речь. Прошу указать точное название.
Подозреваю, что речь идет об инструмент "Консоль компоновки данных" и кнопке-переключателе "Замер времени" (режим отладки). Если так, то этот способ не является основным для анализа текстов запросов макета компоновки. Основным способом является кнопка "Открыть запросы макета компоновки в консоли запросов" (в описании консоли http://devtool1c.ucoz.ru/index/konsol_komponovki_dannykh/0-20 есть видеоролик https://www.youtube.com/watch?v=0LKGaFo9tXw про него)
Давно хочу закомментировать упомянутый тобой код. Прошу сообщить мне, если обнаружишь у него какие то преимущества по сравнению с основным способом.
 
Форум » Основной » Проблемные ситуации » Отладка в консоли СКД при ошибке в запросе
  • Страница 1 из 1
  • 1
Поиск: