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

Перед вами большой-пребольшой запрос, где объединяется несколько таблиц, и полей там много. И многие из них пустые/нулевые, кроме пары-тройки. Как быстро увидеть, какое значение пятый по счёту запрос присваивает 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 не будет опубликован. Обязательные поля помечены *