Анализ больших объединений в запросах

Перед вами большой-пребольшой запрос, где объединяется несколько таблиц, и полей там много. И многие из них пустые/нулевые, кроме пары-тройки. Как быстро увидеть, какое значение пятый по счёту запрос присваивает 20-му по порядку полю? Данная обработка представляет объединение в виде таблицы, и позволяет увидеть это быстро и просто, а не тыркать пальцем по ноликам, считая энное поле в выборке. Обычный и управляемый интерфейсы.

Понадобилось мне разобрать один весьма немаленький запрос, возвращавший выборку в 40 полей. Почему он был таков — вопрос к автору, а мне довелось исследовать результаты его работы. И вот чтобы понять происхождение некоего поля, стал я запрос копать. И в этом объединении несколько раз сбивался, считая нолики по порядку, т.к. нужное мне значение должно было быть нулевым не во всех участниках объединения. Когда озверение достигло максимума, я написал эту обработку.

Как применять: с помощью конструктора запроса или ещё как получить текст объединения, вставить в текстовое поле и нажать волшебную кнопку. Запрос будет разложен по полям в виде таблицы. В ячейках будут поля, в колонках — запросы. сам текст запросов будет в подвале. При двойном щелчке по ячейке открывается многострочный просмотр.

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

Надеюсь, эта простая штуковина кому-нибудь пригодится. Думал её доработать до полноценного показа, «откуда есть пошло это значение», но руки не дошли, выкладываю так.

8 Comments

  1. Armando

    Если пользуетесь ИР, то в консоле запросов можно построить дерево запроса и тыкнуть в нужнуый запрос объединения. Псевдонимы полей будут вида Поле1, Поле2, Поле3… что тоже позвоит решить эту задачу.

    Reply
  2. Yashazz

    (1) Не знал. Ну, я ёж-птица-гордая, фактически свои ИР себе делаю) Значит, потребность и правда была не у меня одного)

    Reply
  3. tormozit

    А если пересобрать текст запроса конструктором запроса ИР, то у каждой части объединения появятся псевдонимы полей. Но надо понимать, что они могут и запутать в некоторых случаях, если после ручного изменения порядка полей в тексте не пересобрать запрос снова. И кстати, конструктор запроса ИР не требует родных метаданных, т.е. может перестраивать запросы с использованием чужих метаданных, но конечно с некоторыми ограничениями.

    Reply
  4. Yashazz

    Да, приписка синонимов полезная штука, с ними эта проблема не существует.

    Сергей, кстати, а в ИР как делали — через схему запроса, или парсили текст своими силами? Насколько знаю, ИР появился до этой фичи платформы.

    Reply
  5. tormozit

    (4) Кажется ответ напрашивается сам собой при «конструктор запроса ИР не требует родных метаданных». Действительно, конструктор запроса ИР появился задолго до схемы запроса в платформе и благодаря собственной гибридной грамматике поддерживает не только язык запросов 1С, но и большинство существующих диалектов TSQL (полезно для ADO запросов). Он работает и на 1С 8.2.13+. Он позволяет менять диалект и вариант английский/русский для диалекта 1С на входе и выходе конструктора. Также он сохраняет комментарии в отличие от штатных конструкторов и схемы запроса. Сама грамматика давно публикуется на основном сайте подсистемы. Сначала она использовалась только для режима «дерево запроса» в консоли запросов.

    Reply
  6. Yashazz

    Уважаемые коллеги. Как совершенно верно заметила моя жена, я триумфально изобрёл велосипед. Все эти возможности есть в стандартном конструкторе запроса на закладке «Объединения/Псевдонимы». Так что полезность этой публикации разве только в том, чтобы запустить под УФ, или если нет под рукой консолей запросов, или посмотреть, как работают со схемами запроса средствами встроенного языка. Увы мне.

    Reply
  7. CratosX

    (6)

    запустить под УФ

    вышли в свет ИР Портативный Расширение, с каждым релизом всё юзабельнее и юзабельнее.

    Reply
  8. tormozit

    (7)

    ИР Портативный Расширение

    Уточню. ИР бывает либо Портативный либо Расширение. Это — разные варианты.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *