При отладке запросов надоело каждый раз заполнять в консоли текст и параметры запроса, которые уже прописаны в конфигурации.
Лень родила идею ...
Отдельное спасибо fixin!!! Идея как вытащить параметры из объекта "Запрос", принадлежит именно ему!!!
Файлы
ВНИМАНИЕ:
Файлы из Базы знаний - это исходный код разработки.
Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы.
Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных.
Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
0% комиссии — оплата напрямую исполнителю;
Исполнители любого масштаба — от отдельных специалистов до команд под проект;
Прямой обмен контактами между заказчиком и исполнителем;
Безопасная сделка — при необходимости;
Рейтинги, кейсы и прозрачная система откликов.
Зачем это нужно :
При отладке я вызываю модально форму консоли, вызвав в отладчике Выражение:
ВнешниеОбработки.Создать("E:\1c\Консоль_запросов.epf ").ОткрытьДляОтладки(Запрос)
Туда передаю Объект - Запрос или ПостроительОтчета и заполняю всё необходимое для дальнейшей отладки, что бы не набивать параметры вручную(очень удобно)
В итоге в любом месте отладчика я могу вызвать консоль запросов уже настроенную для работы с запросом. Очень актуально в ЗУП , где движения по регистрам создаются на время выполнения кода.
Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя.
Решение в Реестре отечественного ПО
Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26
Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше.
Далее в публикации:
MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.
Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.
Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5.
Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки. 1.3.11 Доработан механизм контекстной подсказки по метаданным
В крупных внедрениях 1С типовая почти всегда дополнена расширениями, а конфигуратор показывает их раздельно. «Поиск ссылок на объект» в ERP — минуты ожидания, и даже после него неясно: типовое поведение, дополнение из расширения или переопределённый обработчик.
Analyzer 1C — веб-инструмент, который парсит выгрузку (основную плюс все расширения) и собирает единый граф знаний в ArangoDB. Любой межсущностный запрос — за доли секунды.
Внутри:
— Сквозные пометки «Доб.» / «Заимств.» / переопределения во всём UI
— Импакт-анализ через подписки, регламентные задания и переопределения
— Анализ запросов BSL: кто читает и пишет объект — модули, формы, СКД
— Роли: матрица «роль × объект × право», RLS, программные РольДоступна, PRIV
— Конструктор профилей, граф функций, обработчики обновления, XDTO, функциональные опции
— Мгновенный поиск по конфигурации
Разворачивается за минуту через Docker, без интернета. Любая 1С:Предприятие 8.3+.
и в моей будет (если Андрей не возражает).. .. клево мне понравилось .. я добавил еще функционал без открытия => что бы в файл запросов сохранялся запрос и ВСЕ.
Под 8.1 не хватает временных таблиц... точнее строчки
ОбъектЗапрос.МенеджерВременныхТаблиц = ЗапросОтладки.МенеджерВременныхТаблиц;
в процедуре ВыполнитьЗапрос()
(15) Строго говоря не всегда видно. Вот например видишь ты параметр "МойПараметр" и значение у него Неопределено, но это еще не значит, что этот параметр не был извлечен.
Короче в моей консоли я все довел до ума, если интересно посмотри.
Если ТипЗнч(ЗапросОтладки) =Тип("ПостроительОтчета") Тогда
ЗапросОтладки = ЗапросОтладки.ПолучитьЗапрос();
КонецЕсли;
//сохраняем текст запроса .. потом будем использовать
НоваяСтрока = ДеревоЗапросов.Строки.Добавить();
НоваяСтрока.Запрос = ?(Лев(ЗаголовокЗапросаОтладки,1)="$",ЗаголовокЗапросаОтладки,"$"+ЗаголовокЗапросаОтладки);
НоваяСтрока.ТекстЗапроса=Строка(ЗапросОтладки.Текст);
НоваяСтрока.ТекстЗапросаSQL = "";
НоваяСтрока.Язык= "";
//определим параметры
ПараметрыЗапроса = ЗапросОтладки.НайтиПараметры();
НоваяСтрока.ПараметрыЗапроса=мФормаПараметров.Параметры.Скопировать();
Для каждого ПараметрЗапроса Из ПараметрыЗапроса Цикл
ИмяПараметра = ПараметрЗапроса.Имя;
СтрокаПараметров = НоваяСтрока.ПараметрыЗапроса.Добавить();
СтрокаПараметров.ИмяПараметра = ИмяПараметра;
//получаем значение параметра
Попытка
//изменим текст запроса и получим установлнные там параметры
ЗапросОтладки.Текст = "Выбрать &"+ИмяПараметра;
Выборка = ЗапросОтладки.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
СтрокаПараметров.ЗначениеПараметра = Выборка[ИмяПараметра];
КонецЕсли;
Исключение
//Возможно это список параметров ссылок
Для каждого ТипПараметра Из ПараметрЗапроса.ТипЗначения.Типы() Цикл
Попытка
ИмяОбъекта = Метаданные.НайтиПоТипу(ТипПараметра).ПолноеИмя();
ЗапросОтладки.Текст = "Выбрать Ссылка Из "+ИмяОбъекта+" ГДЕ Ссылка В(&"+ ИмяПараметра+")";
РезультатЗапроса = ЗапросОтладки.Выполнить().Выгрузить();
Список=Новый СписокЗначений();
Список.ЗагрузитьЗначения(РезультатЗапроса.ВыгрузитьКолонку("Ссылка"));
СтрокаПараметров.ЗначениеПараметра = Список;
Исключение
КонецПопытки;
КонецЦикла;
КонецПопытки;
КонецЦикла;
//восстановим текст запросачтобы можно было в дальнейшим продолжить отладку без проблемм
ЗапросОтладки.Текст=НоваяСтрока.ТекстЗапроса;
варианты решения проблемы, если параметр типа ВидДвиженияНакопления
- использовать первый попавшийся регистр накопления
- руками прописать имя существующего непустого регистра накопления остатков
- попробовать поискать и извлечь из текста запроса имя регистра накопления
вот пример по первому варианту:
Если ПараметрЗапроса.ТипЗначения = Новый ОписаниеТипов("ВидДвиженияНакопления") Тогда
Попытка
РегНак = Метаданные.РегистрыНакопления[0].Имя;
ЗапросОтладки.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 ВидДвижения ИЗ РегистрНакопления."+РегНак+"ГДЕ ВидДвижения=&"+ИмяПараметра;
РЗ = ЗапросОтладки.Выполнить().Выгрузить();
СтрокаПараметров.ЗначениеПараметра = РЗ[0]["ВидДвижения"];
Продолжить;
Исключение
КонецПопытки;
КонецЕсли;
Андрей, у Вас же это доработка одной из первых консолей еще для 8.0 от DmitrO (Никоноров Дмитрий). А здесь, в тексте, ничего не указали, только в самой обработке.