При внедрении новых механизмов приходится переделывать существующие запросы. Получится ли на выходе одинаковый результат — под вопросом. Для сравнения результатов старого и нового запроса была разработана данная обработка.
Скачать обработку "Сравнение запросов" (1 стартмани)
Обязательные условия:
1) сравниваются только таблицы значений, а не деревья значений — поэтому выражения "Итогов" следует убрать из запросов;
2) сравнение таблиц происходит через внутреннее соединение таблиц (результатов запроса) по полям "для связки", и сравниваются поля "для сравнения".
3) стоит следить за параметрами и текстами запросов — иначе при запуске сравнения (выполнении запросов) выйдет ошибка СУБД.
Для демонстрации обработки сравниваются простые запросы — Срез первых и Срез последних по ценам номенклатуры. Для выделения расхождений созданы кнопки "Выделить расхождения" и "Отбор по расхождениям" — см. рис.
Параметры запросов по факту могут быть разными. Поля для связки и для сравнения должны быть одинаковыми — см. рис.
Обработка тестировалась на платформе 1С:Предприятие 8.3 (8.3.13.1644), на конфигурации Управление торговлей, редакция 10.3 (10.3.47.2).
Обработка универсально подойдет для всех конфигураций на обычных формах.
Скачать обработку "Сравнение запросов" (1 стартмани)
Версия 1.0 — в этой версии нет сохранения текстов запросов, сохранения параметров, сохранения чего-либо (полей для связывания и для сравнения к примеру) в отдельный файл запросов. Параметры запросов всякий раз приходилось заполнять вручную.
Версия 2.1 — получила новое развитие:
1) теперь заполнение параметров запросов вынесено в отдельную процедуру модуля обработки.
Это "+". В первых версиях заполнение параметров находилось в разных местах обработки, и было неудобно программно добавлять новые параметры — приходилось выискивать все места заполнения параметров, чтобы прописать в них дополнительную функциональность (зачем это иногда нужно -подробно описано в комментариях).
2) добавил сохранение и открытие запросов — сохраняются тексты запросов, параметры запросов, поля сравнения и связывания. Работает только в ручном режиме (то есть не в автоматическом) — то есть для сохранения надо нажать кнопку "Сохранить" (Ctrl+S), для открытия (восстановления) нажать кнопку "Открыть файл" (см. рис.)
Режим сохранения и восстановления запросов через кнопки с зеленой стрелкой (данный способ описан выше в публикации) — остается для сохранения преемственности при переходе на новую версию обработки.
3) теперь выходит сообщение "Расхождений не найдено" в случае отсутствия расхождений; по тем полям, по которым расхождения найдены — выходит сообщение об этом. Спасибо комментатору за подсказку.
Версия 2.2 — получила новое развитие:
1) Добавлен раздел сравнения временных таблиц — выбираете какие временные таблицы необходимо сравнить => указываете для них поля связывания и поля сравнения => выполняете запросы ВТ.
Временные таблицы определяются (инициализируются) по кнопке "Настроить запросы и врем. таблицы" с учетом заданных Параметров (кнопка "Параметры").
Скачать обработку "Сравнение запросов" (1 стартмани)
Не забудьте изменить поля связывания и сравнения после выбора временных таблиц для сравнения (см. рис.)
Временные таблицы необязательно должны иметь одинаковые названия. Названия можно сопоставить в таблице временных таблиц из выпадающего списка выбора (см. рис.)
2) Второе дополнение в версии 2.2 — при открытии обработки автоматом подгружаются параметры, запросы, настройки полей связывания и сравнения из сохраненного файла запросов.
ВСЕМ КТО СКАЧАЛ ПЕРВУЮ ВЕРСИЮ (ПОДДЕРЖАЛ ПРОЕКТ) — последующие версии передаются бесплатно по запросу.
Скачать обработку "Сравнение запросов" (1 стартмани)
См. также:
Как эффективно использовать Инфостарт NEW!
Список реализаций + структура подчиненности + реестр документов SALE’1sm
Список заказов поставщикам + структура подчиненности SALE’1sm
Список заказов покупателей + структура подчиненности SALE’1sm
Договоры для 1с-ника ТОП-скачиваний
Сетка расписания (Планировщик) нестанДАрт
Два механизма, которые ускорили работу бухгалтеров в 1С нестанДАрт
Расчет банковских (рабочих) дней нестанДАрт
Шаблоны кода в режиме 1С:Предприятие SALE’1sm
Доработка конфигурации Конвертация Данных
Планирование платежей. Прогнозирование прибылей и убытков
Ввод показателей план-факта БП 3.0 Know-how
Инвентаризация личного опыта Для новичков 1С
Большие запросы: взгляд на проблему нестанДАрт
Технология создания коммерческих разработок Know-how
Андроид-решение для создания заказов в 1С Know-how + нестанДАрт
Печать ценников с одной и двумя ценами 55х40, 100х60, 140х200
Доработки обмена "УТ 10.3 — интернет-магазина Shop-Script"
(0) Сложность в том что для полноценного сравнения результатов нужно реализовывать функции, которые естественны для консоли запросов пакетные запросы, параметры типа ТЗ, ТипЗначения, МоментВремени, Граница, Уникальный идентификатор. Мне кажется данная функциональность должна быть включена консоль запросов тогда это удобно и функционально
моей консоли функция сравнения результатов запросов, но она сравнивает результаты целиков это в основном удобно когда запрос модифицируется или заранее пишем два запроса результаты которых потом сравниваем.
Что то подобное есть в
(2) спасибо за ответ и ссылку.
0) что значит «полноценное сравнение запросов»?
1) представленная мною обработка Сравнение запросов решает конкретную задачу — записей в результатах запросов около 10 тыс — и то, я специально их кол-во ограничил 10 тыс-ю, чтобы по времени было адекватно.
Обработка сразу фильтрует расхождения в 10 тыс. записей — а то, что вы предложили свою обработку — так она не помогает, а только усложнит решение подобной задачи.
Я вот не понял: у вас надо визуально вручную что ли искать расхождения?
2) «передавать в запрос параметр типа ТЗ» — пока не сталкивался с такой задачей.
И считаю,что во всех задачах решение надо упрощать! Можете пример привести, когда это нужно передавать ТЗ в запрос?
Все мои публикации стремятся показать, что в программировании 1с есть место упрощению.
Человек любит придумывать сложности на пустом месте, а простые решения не видит.
К примеру, я предлагаю и давно уже использую такой пример — вместо СпискаЗначений передавать некий Документ, то есть всего один параметр, из которого вытаскивать СЗ = Док.Товары.ВыгрузитьКолонку() — это к примеру для списка товаров. Это лишь инструмент для отладки и разработки. В рабочей базе в рабочем варианте — конечно останется СписокЗначений в том виде, в котором он должен быть (то есть без всяких документов).
3) прежде чем создавать инструмент Сравнения запросов, поискал на ИС — ничего подобного нет.
(3)
0) Ну т.е. возможность сравнить результаты любых запросов, как и писал выше например будет параметр граница, понятно что бывает не часто, но как только столкнетесь инструмент работать не будет.
1) Консоль выполняет 2 запроса и сравнивает результаты визуально через СравнитьФайлы. Можно сравнивать более 10тыс. строк
2) Тут с вами не соглашусь. ПО становится сложнее должно выполнять много функций. Простым оно должно быть только для пользователя. Из практики с каждым годом продукты 1С все сложнее и функциональнее.
Мне надо сравнить запросы из типовой в которых параметр ТЗ.
В контексте публикации понятно что решает конкретную задачу без усложнений, но и польза будет меньше т.к. не закрывает какие-то редкие случаи. На универсальный инструмент разработка не претендует.
3) В типовых консолях от 1С есть подобная функция (Сохранить эталон, Сравнить с эталоном), реализовано чуть иначе чем у вас
Суть моего поста эта функция должна быть в консоли запросов (там полная поддержка запросов)
(5) Тоже согласен.
Реализация ТЗ сложна, временные хранилища (подход подобный «сложный» параметр)
Ни в коем случае ни хотел обидеть. Также вам успехов. 🙂
(3) есть консоль сравнения для управляемых форм:
Я сохраняю результаты запросов в электронные таблицы и сравниваю. Просто и эффективно.
(7) я видел вашу консоль. Только из описания не понятно, что она мне поможет. На первый взгляд очень запутана в настройках, и интерфейс интуитивно не понятен. Это мое личное мнение как первое впечатление. Хочется помочь вам — поэтому даю обратную связь, не желая обидеть или принизить. Возможно у других такие же непонятки- когда видят вашу консоль. Просто, задавать вопросы и ждать ответов не у всех есть время — поэтому не написал вам.
(8) В консолях запросов есть это, только автоматически
(7) совет:
1) сделайте описание структурированным — пункт 1) — 2) -3) и т.д. «что она может»,
2) пункты «что она не может» 1) , 2) 3).
3) Отдельный раздел для программистов-пользователей, которые хотят быстро опробовать ваш механизм — условно как во всех языках программирования как написать «Hello, World!»
4) Отдельный раздел для разработчиков, которые хотят или решать сложные вопросы, или доработать под себя.
5) Примеры решенных задач.
6) Жирным выделить текст или в начале или в конце статьи, что для управляемых форм.
7) вытащите полезную инфу из комментариев, если такая есть.
(11) Функционал довольно большой, подробное описание есть во встроенной справке консоли. Из того описания, что приведено в теме, вполне можно принять решение, нужна ли она.
Я думаю, полезней сделать не подсветку, а просто выводить результаты отличия. Если отличий нет, то просто сообщать об идентичности результатов
(12) ок)
(13) есть кнопка «Отбор по расхождениям» — которая накладывает соответствующий фильтр на записи. Если расхождений нет, то итоговая таблица становится пустой с этим фильтром.
Ваша идея сообщать дополнительно,что расхождений нет — здравая и разумная!
(6) я не против, если вы свою консоль доработаете, взяв отсюда представленный механизм сравнения результатов запросов.
эту консоль ждут свои доработки и расширения…
у вас УФ+широкие возможности, здесь ОФ + конкретная задача.
(16) Спасибо, пока не планирую… мне кажется того что есть достаточно. Пожеланий по его улучшению не получал.
(2)
реализовал сравнение временных таблиц.
предыстория. при тестировании нового запроса стал сравнивать с прежним. Сравнение запросов показало расхождения. Стал анализировать с первой временной таблицы, в итоге на третьей временной таблице проявилось расхождение. Понял, что для локализации расхождений в обработке необходим раздел сравнения временных таблиц. так он и появился.
(18)
Это хорошо
Еще для полноценной поддержки нужно реализовать параметры типа: ТаблицаЗначений, МоментВремени, Граница, УникальныйИдентификатор, Тип. Параметр типа список значений. Сохранение запросов в файл.
(19)
сохранение запросов в файл реализовано в версии 2.1 — без этого сохранения неудобно работать с подобными консолями.
сейчас последняя версия 2.2.
остается только реализовать «новые» типы данных.
сейчас уже можно воспользоваться в параметрах — Использовать Выражение (это из типовой консоли запросов взято) — думаю часть параметров «новых» типов можно через выражение прописать.