Консоль запросов 1С "consquery.ru"
Разработка - Инструментарий разработчика
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
| Наименование | Скачано | Купить файл | По подписке PRO |
|---|---|---|---|
|
consquery83.epf релиз 3.x (бета)
.epf 440,77Kb
145
|
145 | 2 500 руб. Купить | 1 SM Скачать |
|
consquery83.epf релиз 3.x (бета) [обработка + помощь проекту]
.epf 440,77Kb
6
|
6 | 4 200 руб. Купить | 5 SM Скачать |
|
consquery83.epf релиз 3.x (бета) [обработка + помощь проекту]
.epf 440,77Kb
4
|
4 | 6 200 руб. Купить | 10 SM Скачать |
|
consquery82.epf релиз 2.x
.epf 265,13Kb
176
|
176 | 2 500 руб. Купить | 1 SM Скачать |
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Консоль запросов предназначена для формирования и отладки запросов в режиме 1С Предприятия, для выполнения произвольных алгоритмов на языке 1С с возможностью использования в алгоритмах результатов запросов.
Работает в обычном, и управляемом режимах работы, с возможностью хранения запросов и алгоритмов локально и/или в "облаке", имеет функцию автоподстановки (Intellisense), адаптивный интерфейс и многое другое.
Возможен запуск обработки из конфигуратора для отладки запроса с заполненными параметрами.
Версия под 8.3. содержит функционал загрузки данных из произвольных источников через буфера обмена.
Старое название: Дополненная обработка Консоль запросов (обычный + управляемый).
- Обработка предоставляется без каких-либо гарантий.
- Используя обработку, Вы сами несете ответственность за сохранность своих данных.
- Обработка не содержит скрытый код, код обработки открыт.
Для информации: Как отключить сообщение предупреждение при открытии внешних обработок "Рекомендуется обращать внимание на источник, из которого был получен данный файл" можно прочитать здесь: ИТС 7.10.2, ИТС 3.13, lavelin.ru
- автоподстановка при написании запросов (Intellisense)
- вызов из отладки с заполнением параметров запроса (добавлен функционал хранения временных таблиц для управляемых форм).
- адаптивный интерфейс
- выполнение произвольного кода, с возможностью использования результатов запроса (выбор варианта исполнения "На клиенте" или "На сервере" для управляемого режима работы)
- загрузка данных из буфера с возможностью использования загруженных данных в произвольном коде или в разрабатываемых запросах
- формирование из текста запроса кода, для вставки в конфигурацию
- вставка текста запроса из кода конфигуратора
- использование параметров с типом "таблица значений" в качестве временных таблиц (для управляемых форм)
- выполнение запросов во внешних базах (добавлен функционал для управляемых форм)
Функционал только для управляемых форм
- встраивание в качестве дополнительной обработки (функционал дополнительных обработок БСП) (новое)
- печать произвольной коллекции {ТаблицаЗначений|ДеревоЗначений|РезультатЗапроса} в режиме отладки (как вариант замены ВыбратьСтроку() для дерева значений )
- автоматическая типизация значений типов {Дата|Число} при загрузке из буфера обмена
Функционал только для обычных форм (в планах перенос для управляемого режима)
- хранение запросов в "облаке" (на этапе тестирования доступ может быть ограничен; данный функционал на текущий момент реализован для обычных форм)
- подключение к облаку
- сохранение в облако / открытие из облака
- загрузка запросов по ссылке
- добавление ветки в облако
- поиск в запросах и алгоритмах (локально и в облаке)
- групповые действия над результатами запроса:
- проведение документов
- снятие проведения документов
- пометка удаления объектов
- снятие пометки удаления объектов
- быстрое формирование запросов
- все документы
- выбранные документы
- все справочники
- выбранные справочники
- и пр. (добавьте какой функционал Вы еще используете)
- поучаствовать в разработке на github
- скачать с инфостарта
- сообщить об ошибке на email
- выложить ролик на youtube, пост с описанием какого-то функционала обработки
- опубликовать ссылку на обработку
- предложить свой функционал
- создание инфраструктуры для обмена запросами и кодом
- предложите свою идею по развитию.
Последние изменения и планы здесь
Вступайте в нашу телеграмм-группу Инфостарт
консоль запросов 1С отладка запроса выполнение облачная consquery хранение алгоритмов каталог загрузка обмен данных импорт excel буфер обмена
См. также
Разработка Инструментарий разработчика Групповая разработка (Git, хранилище) Разработчик Платные (руб)
Практический курс по работе с AI-агентами для разработчиков 1С уровня middle и senior, а также тимлидов команд: от постановки задач и передачи контекста до создания расширений, интеграций, MCP-инструментов, тестов и проверки готового решения.
50000 руб.
10.09.2026 13223 104 0
Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Разработчик Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)
Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.
24900 руб.
20.08.2024 83157 431 171
Инструментарий разработчика Роли и права Запросы СКД Разработчик Руководитель проекта 1С:Предприятие 8 Платные (руб)
Инструменты для разработчиков 1С 8.3 и 8.5: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.
16500 руб.
02.09.2020 285464 1606 423
Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Разработчик Аналитик Руководитель проекта 1С 8.3 Платные (руб)
Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.
14000 руб.
17.04.2026 16667 63 62
Пакетная печать Печатные формы Инструментарий разработчика Разработчик 1С:Предприятие 8 Платные (руб)
Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26
22570 руб.
06.10.2023 44110 122 54
Инструментарий разработчика Нейросети Платные (руб)
Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.
15250 руб.
25.08.2025 76706 147 41
Разработка Инструментарий разработчика Разработчик Руководитель проекта 1С 8.3 Платные (руб)
Pilot 1C превращает задачу, поставленную обычными словами, в техническое задание, код на встроенном языке и сценарии проверки. Прежде чем что-то предложить, он сверяется с устройством вашей конфигурации через граф Analyzer 1C: существует ли объект, из чего он состоит, кто его вызывает, какие роли дают права. Чего найти не удалось – спрашивает, а не выдумывает. Готовый код проходит более полутора сотен проверок по справочнику языка и стандартам разработки, который приезжает вместе с продуктом. Модель – ваша: любой сервер, совместимый с программным интерфейсом OpenAI, в том числе локальный. Правки в конфигурацию Pilot не вносит – их применяет разработчик.
18300 руб.
11.09.2026 3656 5 0
Инструменты администратора БД Инструментарий разработчика Роли и права Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)
Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.
17000 руб.
10.11.2023 28689 103 46
терь по пунктам :)
1. я все-таки на excel задумывал, можно то конечно можно, но нужно ли
2. что есть запрос? Если это элемент дерева запросов в обработке, то вместе с текстом запроса копируются все его параметры при копировании этого элемента. Т.е все понятно но что конкретно...
3. вот по поводу, того что ты называешь в 3-м пункте я уже объяснял, что не всегда обработка в цикле линейна, и соответственно красивые буквы показывающие какое то время, менее правдивы, чем обычные проценты. Тут может я не прав. Возможно и добавлю.
4. А кто сказал, что нельзя написать произвольный текст. Все что пишется, подставлятся в команду Выполнить(). Т.е. никакой жесткой привязки к результату запроса нет.
"Да, и еще, убей это позорище от программистов 1С с номерами колонок." - мысли читать не умею пока еще. Об чем речь?
А в целом спасибо за внимание к моей обработке :)
1) каким образом реализовано, например, выполнение документов в транзакции?
все доки в одной транзакции? или фиксированное число доков в одной транзакции, т.е. транзакций много ?
2) Пароль, конечно, мешает :(
Соответственно возникает куча глупых вопросов типа п.1 :(
1) Сам понимаешь, если все доки проводятся в одной транзакции, это очень плохо :(
2) Если бы не было пароля, можно было бы добавить автовызов обработки с заполнением нужных параметров и выполнением нужного кода.
Жду более подробную инфу.
2. По поводу автозапуска обработки с параметрами. Такие предложения уже поступали. Хотелось бы уточнение. В каких случаях планируется запускать ее с параметрами. Ведь получится столько параметров, что пользование обработкой потеряет смысл. Приведите пример как данный функционал может облегчить жиздь :)
Есть вариант загрузка из кода программы в обработку с удалением мусора(в виде определения переменных) и заполнением параметров. Это планируется релизовать.
часть процедур и функций перенесена из модуля объекта в модуль формы
26.11.2007 1.13.44
добавлен префикс к процедурам и функциям модуля
10.10.2007 1.13.44
доработка интерфейса
10.10.2007 1.13.43
очередное исправление ошибки при заполнении параметров из буфера обмена
09.08.2007
исправление ошибки при заполнении параметров из буфера обмена
терь по пунктам
1. я все-таки на excel задумывал, можно то конечно можно, но нужно ли
2. что есть запрос? Если это элемент дерева запросов в обработке, то вместе с текстом запроса копируются все его параметры при копировании этого элемента. Т.е все понятно но что конкретно...
3. вот по поводу, того что ты называешь в 3-м пункте я уже объяснял, что не всегда обработка в цикле линейна, и соответственно красивые буквы показывающие какое то время, менее правдивы, чем обычные проценты. Тут может я не прав. Возможно и добавлю.
4. А кто сказал, что нельзя написать произвольный текст. Все что пишется, подставлятся в команду Выполнить(). Т.е. никакой жесткой привязки к результату запроса нет.
"Да, и еще, убей это позорище от программистов 1С с номерами колонок." - мысли читать не умею пока еще. Об чем речь?
А в целом спасибо за внимание к моей обработке
Есть правда нюанс..старая версия *.v8i не содержит информации по версии.
Можно при пустой версии считать что это 8.1 или добавить попытку и пробовать подключать с разными коннекторами..вобщем подумаю еще
Добавление функционала по заполнению обработки "Поиск и замена значений" добавлять не планирую, так как появится завязка на внешний функционал, который прийдется отслеживать.
При желании это может каждый сделать..код открыт
Модуль формы Форма
Если Установить Тогда
Если Версия = "8.2" Тогда
V8COMConnector = Новый COMОбъект("V82.COMConnector");
ИначеЕсли Версия = "8.2" Тогда
V8COMConnector = Новый COMОбъект("V81.COMConnector");
Иначе
V8COMConnector = Новый COMОбъект("V.COMConnector");
КонецЕсли;
ПоказатьЛучше так
Если Установить Тогда
Если Лев(Версия, 3) = "8.2" Тогда
V8COMConnector = Новый COMОбъект("V82.COMConnector");
ИначеЕсли Лев(Версия, 3) = "8.1" Тогда
V8COMConnector = Новый COMОбъект("V81.COMConnector");
Иначе
V8COMConnector = Новый COMОбъект("V.COMConnector");
КонецЕсли;
ПоказатьДля списка баз 8.1 версия платформы при разборе файла со списком баз не устанавливается.
Процедура КоманднаяПанельФормыВыгрузитьТекстЗапроса(Элемент)
ТекстЗапроса = ЭтаФорма.ПолучитьТекстЗапроса(Истина) ;
ПараметрыЗапроса = кзПолучитьПараметрыЗапроса(ТекстЗапроса, True);
Результат = "";
//[begin] Added by Sergey.
//17.02.2012 16:53:42
Результат = "Запрос = Новый Запрос;" + Символы.ПС;
Результат = Результат + "Запрос.Текст = """ + Символы.ПС;
//[end] Added
//Символ(34) - " (кавычки)
//Символ(13) - cr (возврат коретки)
Для СЦ = 1 по СтрЧислоСтрок(ТекстЗапроса) цикл
ТекСтр = СтрЗаменить(СтрПолучитьСтроку(ТекстЗапроса,СЦ), Символ(13), "");
ТекСтр = СтрЗаменить(ТекСтр,Символ(34),Символ(34) + Символ(34));
Если Лев(СокрЛП(ТекСтр),1)<> "|" Тогда
Результат = Результат + "|" + ТекСтр + Символы.ПС;
КонецЕсли;
КонецЦикла;
Результат = Результат + "|"";" + Символы.ПС;
Если ПараметрыЗапроса <> Неопределено Тогда
Для каждого ТекПараметрЗапроса Из кзПолучитьПараметрыЗапроса(ТекстЗапроса) Цикл
СтрокаСПараметром = ЭтаФорма.мФормаПараметров.Параметры.Найти(ТекПараметрЗапроса.Имя, "ИмяПараметра");
Если СтрокаСПараметром = Неопределено Тогда
Сообщить("Не задан параметр """ + ТекПараметрЗапроса.Имя + """");
ИначеЕсли ТипЗнч(СтрокаСПараметром.ЗначениеПараметра) = Тип("СписокЗначений") Тогда
ЗначениеПараметра = "кзСписок" + ТекПараметрЗапроса.Имя;
Результат = Результат + ЗначениеПараметра + " = Новый СписокЗначений;" + Символы.ПС;
Для каждого ТекЗначениеСписка Из СтрокаСПараметром.ЗначениеПараметра Цикл
Результат = Результат + "кзСписок" + ТекПараметрЗапроса.Имя + ".Добавить(" + кзПодставитьПараметр(ТекЗначениеСписка.Значение) + ");" + Символы.ПС;
КонецЦикла;
Иначе
ЗначениеПараметра = кзПодставитьПараметр(СтрокаСПараметром.ЗначениеПараметра);
КонецЕсли;
Результат = Результат + "Запрос.УстановитьПараметр(""" + ТекПараметрЗапроса.Имя + """, " +
?(СтрокаСПараметром = Неопределено, "", ЗначениеПараметра) + ");" + Символы.ПС;
КонецЦикла;
Результат = Результат + Символы.ПС;
Конецесли;
//[begin] Added by Sergey.
//17.02.2012 16:52:18
Если Элемент.Имя = "ВыгрузитьТекстЗапроса" Тогда
Результат = Результат + "Результат = Запрос.Выполнить();" + Символы.ПС;
Результат = Результат + "Выборка = Результат.Выбрать();" + Символы.ПС;
Результат = Результат + "Пока Выборка.Следующий() Цикл" + Символы.ПС;
Результат=Результат + "КонецЦикла;"+Символы.ПС;
ИначеЕсли Элемент.Имя = "ВыгрузитьТекстЗапросаВТЗ" Тогда
Результат = Результат + "Результат = Запрос.Выполнить();" + Символы.ПС;
Результат = Результат + "Выборка = Результат.Выгрузить();" + Символы.ПС;
Результат = Результат + "Для каждого СтрокаТЗ Из Выборка Цикл" + Символы.ПС;
Результат=Результат + "КонецЦикла;"+Символы.ПС;
КонецЕсли;
//[end] Added
Ответ = Вопрос("Скопировать в буфер?", РежимДиалогаВопрос.ДаНетОтмена);
Если Ответ = КодВозвратаДиалога.Да Тогда
кзСкопироватьВБуфер(ПолучитьФорму("Точка"),Результат);
ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда
ТД = Новый ТекстовыйДокумент();
ТД.УстановитьТекст(Результат);
ТД.Показать(,);
КонецЕсли;
КонецПроцедуры Показатьнадо заменить строку в коде:
//серверный вариант
СтрокаСоединения = "Srvr = " + СокрЛП(SQL_Сервер) + ";Ref = """ + СокрЛП(SQL_БазаДанных);
На такую:
СтрокаСоединения = "Srvr = " + СокрЛП(SQL_Сервер) + ";Ref = """ + СокрЛП(SQL_БазаДанных) + """";Процедура КоманднаяПанельФормыВыполнитьПакет(Кнопка)
СпособВыгрузки = 1;
ВыполнитьЗапрос(,,Истина);
ЭлементыФормы.ПанельРезультата.ТекущаяСтраница = ЭлементыФормы.ПанельРезультата.Страницы[0]; //позиционируемся на первую страницу
КонецПроцедурыВо вложении текст модуля формы. Пару фрагментов кода выдрал из той консоли. Все вставки выделены моими комментариями.
Модификация добавляет кнопку "Выполнить пакет" в верхнюю командную панель.
1. В начале модуля формы объявляем переменную:
//Начало изменений shurikvz 09/11/2012
Перем мЯваСкрипт; //Использована идея DimitrO (
//Конец изменений shurikvz 09/11/2012
2. В раздел
////////////////////////////////////////////////////////////
// ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ
добавляем следующий код:
//Начало изменений shurikvz 09/11/2012
Попытка
мЯваСкрипт = Новый COMОбъект("MSScriptControl.ScriptControl");
мЯваСкрипт.Language = "javascript";
Исключение
Сообщить("Не возможно подключить MSScriptControl.ScriptControl");
КонецПопытки;
//Конец изменений shurikvz 09/11/2012
Показать3. В процедуре Процедура ВыполнитьЗапрос(ОбъектЗапрос = Неопределено, ЭлементТаблицаРезультата = Неопределено, ВыполнитьПакет = Ложь) делаем два изменения:
строку
мДатаНачалаВыполнения = ТекущаяДата();меняем на
//Начало изменений shurikvz 09/11/2012
Если мЯваСкрипт = Неопределено Тогда
мДатаНачалаВыполнения = ТекущаяДата();
Иначе
мДатаНачалаВыполнения = мЯваСкрипт.Eval("(new Date()).valueOf()");
КонецЕсли;
//Конец изменений shurikvz 09/11/2012строку
мДатаОкончанияЗапроса = ТекущаяДата();меняем на
//Начало изменений shurikvz 09/11/2012
Если мЯваСкрипт = Неопределено Тогда
мДатаОкончанияЗапроса = ТекущаяДата();
Иначе
мДатаОкончанияЗапроса = мЯваСкрипт.Eval("(new Date()).valueOf()");
КонецЕсли;
//Конец изменений shurikvz 09/11/20124. Функцию Функция кзПреобразоватьСекунды(Секунд) Экспорт модифицируем следующим образом:
Функция кзПреобразоватьСекунды(Секунд) Экспорт
//Начало изменений shurikvz 09/11/2012
Если мЯваСкрипт <> Неопределено Тогда
//Результат приходит в миллисекундах
Секунд = Секунд / 1000;
КонецЕсли;
//Конец изменений shurikvz 09/11/2012
Если Секунд > 0 Тогда
Час = Цел(Секунд / 60 / 60);
Мин = Цел((Секунд % 3600) / 60);
//Начало изменений shurikvz 09/11/2012
Сек = Секунд % 60;
//Конец изменений shurikvz 09/11/2012
Результат = ?(час > 0, строка(час) + " час ", "") + ?(мин > 0, строка(мин) + " мин ", "") + ?(сек > 0, строка(сек) + " сек", "");
Иначе
Результат = "меньше секунды"
КонецЕсли;
Возврат Результат;
КонецФункции
Показать1) Вывел параметры на главную форму. Нет необходимости каждый раз открывать отдельное окно, и всегда они перед глазами.
2) При выборе в качестве значения параметра элемента подчиненного справочника, если в параметрах содержатся потенциальные владельцы - форма выбора открывается с соответствующим отбором. Часто приходится выполнять разные запросы по взаиморасчетам с контрагентами в разрезе договоров - не приходится дважды указывать контрагента.
В описании обработки написано, что для 8.1
ГДЕ?
Я потратил свои баллы, чтобы скачать ее. По скриншотам уважаю ваш труд, написано на уровне, хотел попробовать...
Но поймите меня правильно, если на фантике написано "Конфета", ты ее разворачиваешь, а там бумажка "Извините, это бета-версия конфеты, возможно вы ее не сможете съесть..."
Как мне реагировать?
Один мат приходит на ум по поводу ленивых разработчиков, которые не подумали, о том, что текст на упаковке не соответствует содержанию
Если бы Вы внимательней ознакомились с описанием, то увидели бы ссылки на старые версии обработки
(Обработку под 8.1 релиз 1.14.3 можно скачать здесь)
(Обработку под 8.0 релиз 1.14.01 можно скачать здесь)
...с указанием релизов, на которых остановилась разработка данных версий.
..причем скачали бы их совершенно бесплатно :)
Считаю, обвинения в "ленности" мягко говоря необоснованными :)
Сам скачиваемый файл тоже не просто видимо имеет суффикс "82".
Итого, прийдя по фильтру на страницу обработки Вам доступны все перечисленные в описании версии. Причем некоторые даже без платы.
Где здесь несоответствие "фантика" и "конфеты"?
Были бы Вы были менее эмоциональны и сдержанней, я бы вернул Вам по Вашей же невнимательности потраченные мани моментально,... но в данной ситуации решил этого не делать :)
Или Вы предлагаете по умолчанию для скачивания установить версию 8.1??
Так что внимательней надо быть и берегите свои нервы.
Действия кнопки "Разобрать":
1. Внимание!!! Удаляет все подчиненные ветви в дереве запросов.
2. Создает и добавляет подзапросы в виде ветвей текущего запроса.
3. Копирует все параметры в подчиненную ветвь запроса.
4. Рекурсивно раскладывает до последнего вложенного запроса.
Действие кнопки "Собрать":
1. Заменяет текущие подзапросы запросами из ветвей подчинения первого уровня вложения. Сборка ведется не по именам подзапросов, а позиционно, в том порядке в котором происходила разборка.
2. Внимание!!! Сборка не отслеживает соответствие возвращаемых переменных, при его изменении после разборки.
Практически это выглядит следующим образом:
1. Выкладываем запрос для отладки и корректировки в "Консоль"
2. Указываем все необходимые параметры.
3. Нажимаем кнопку "Разобрать"
4. Находим ветвь с необходимым для отладки подзапросом
5. Вносим необходимые изменения.
6. Поднимаемся на 1 уровень выше, нажимаем "Собрать" и выполняем подзапрос более верхнего уровня.
7. При возникновении ошибок устраняем их и выполняем пункт 6. до тех пор пока не поднимемся до основного запроса.
Мне часто приходится работать со сложными запросами и данный механизм здорово облегчает жизнь.
"...Там это намного удобнее и нагляднее делать....", "являются по крайней мере одним из самых мощных средств отладки запросов на платформе 1С"
Если считаешь (56) нарушением каких то норм, то удали (56). (54) же вообще не тянет на нарушение.
Если пользователя заинтересовала консоль запросов, то ему наверняка будет интересно узнать и о других.
Одно дело, когда некий пользователь зашел на страницу обработки и рассказал что эта вот "так себе", а вот есть там-то супер вещь. Она делает то-то и то-то, не то что эта.
Мнение же автора всегда субъектиное, его творение всегда будет лучше, краше и т.д.
Я не прав?
Т.е. "претензия" только к тем частям фраз, которые я выделил в кавычки в (58)
Конечно сходил я по твоей ссылке, поэтому и уточнил что ты именно имел ввиду.
P.S. Намечается интересная тенденция ссылаться в данной ветки на свои разработки.
А то надоело конфу на УФ запускать в обычном режиме ради запросов или пользоваться другими консолями. Я к вашей привык, она мне родная :))
Типовую консоль под УФ уже добавил, но релиз еще не выкладывал, так как не видел смысла выкладывать голый типовой функционал, к тому же в последнее время не хватало времени, а потом долгожданный отпуск...
Пишите какой функционал из моей консоли Вы хотелось бы видеть на УФ и я буду его переносить в первую очередь. Спасибо.
Резюме: Очень не хватает аналога галочки "Единые параметры для всех запросов" в "оригинальной" консоле запросов г-на Чистова.
Описание: Правлю большой отчёт, в котором колонки "план", "факт" и пр. В запросе большого отчёта все параметры настроены, а при переключении в другие запросы (где, к примеру, я сделал расшифровку по плану или факту) эти же параметры приходится устанавливать заново, что очень не удобно, и пипец как не удобно, когда в виде параметров выступает список каких-либо значений.
Не могли бы Вы добавить в свою разработку вышеописанный механизм?
регулярно пользуюсь, но все время дописываю свой функционал выгрузки результата в ТЧ нового или выбранного документа. Дописанная обработка 207+ приложена.
А можно сие добавить в оригинал?
Планируется ли добавление возможности по использованию конструктора в тонком клиенте для 8.3.5?
По поводу режима под управляемые формы..есть желание уйти в данном случае от типового варианта. Оно реально не удобен. И соответственно уже там использовать возможности новых версий платформы, в том числе и конструктор для тонкого клиента. Но по срокам не готов сказать, когда это случиться.
В принципе код открыт, можете менять сами, при желании выкладывать сюда свой вариант.
ТекстЗапроса1С = стрЗаменить(ТекстЗапроса1С, ";", "");поставит так
ТекстЗапроса1С = стрЗаменить(ТекстЗапроса1С, """;", "");Так не убираются ; разделяющие пакетные запросы. Очень неудобно, если отлаживаешь громаднейший пакетный запрос, потом бегать по тексту и проставлять ;
То есть я добавляю в условие запроса по всем документам
"КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Ссылка) > 0"
И естественно при этом генерация запроса пытается засунуть это в ДЕ, что естественно приводит к некорректному формированию запроса.
Так же проблема с использованием строк. Не знаю как в других конструкциях но в условие точно
[Имя]<>"ПереносДанных"
меняется
на
[Имя]<>"ПЕРЕНОСДАННЫХ"
Что приводит к тому что документы которые хотелось бы отсечь по имени всё равно попадают в запрос
А вообще спасибо Вам Женечка
1. по поводу условия на имеющие ..
вы можете в условии написать
"Истина Сгруппировать по ... Имеющие КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Ссылка) > 0" при этом в запрос подставится текст
"ГДЕ Истина Сгруппировать по ... Имеющие КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Ссылка) > 0" это решит Вашу задачу.
расширять же функционал данного мастера мне кажется не имеет смысла. это усложнит работу с инструментом. хотя ....время покажет
2. соглашусь, что преобразование в верхний регистр текста условия ограничивает использование этого инструмента. Думаю лучше наложить ограничение на использование шаблонных слов только в верхнем регистре("ИМЯ", "СИНОНИМ"), при этом можно будет отказать от перевода в верхний регистр всего текста условия. Внесу эти изменения в следующий релиз.
А то на управляемых формах есть для версий 8.2 и 8.3, а на обычных формах, к сожалению, нет.
Хотел было подключить ПВЗ в обычную консоль запросов, но там многого не хватает, а потом увидел вашу консоль, и вот, написал...
Спасибо за отзыв.
Сам пока не испытывал потребности в данном функционале для данной обработки.
Если у Вас есть желание, Вы можете добавить этот функционал сами в консоль и опубликовать.
Если Ваши доработки будут отвечать моим видениям развития обработки :), то я включу его в свою версию (с Вашего согласия и ссылкой на Вас).
Посмотрите, может надо будет, если нет - не берите в голову: в Форме в процедуре кзПодставитьПараметр добавила код:
// <- <chif13>
ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Параметр)) Тогда
ИмяМетаданного = Параметр.Метаданные().Имя;
Если Параметр.Пустая() Тогда
Результат = "Документы." + ИмяМетаданного + ".ПустаяСсылка()";
Иначе
Результат = "Документы." + ИмяМетаданного + ".НайтиПоНомеру(""" + Параметр.Номер + """)";
КонецЕсли;
ИначеЕсли ТипЗнч(Параметр) = Тип("МоментВремени") Тогда
Результат = "Новый МоментВремени(Дата(""" + Параметр.Дата + """), " + кзПодставитьПараметр(Параметр.Ссылка) + ")";
// <- <chif13>
ПоказатьИ еще. Скаченная здесь обработка 8.2 ну никаким макаром в 8.2 не открывается - ошибка формата потока, зато вот в 8.3 без проблем. А очень бы хотелось иметь формат именно 8.2.
По поводу ошибки потока... такая ошибка случалась для некоторых релизов... какой у Вас релиз, режим совместимости? я проверю, и выложу новый вариант.
А насчет коллективной я бы не стала так делать. Такого могут наворочать, что лучше не надо. Одно дело прислать вариант вам, а Вы решите надо там это или нет, другое дело будут писать все кто на что горазд. Общее - значит ничейное... Ни-ни...
При нажатии на кнопку "Параметры" в некоторых случаях выдает ошибку:
{ВнешняяОбработка.КонсольЗапросов.Форма.ФормаУпр.Форма(333)}: Индекс находится за границами массива
Возврат ПоместитьВоВременноеХранилище(
1С:Предприятие 8.3 (8.3.8.2322)
Розница, редакция 2.2 (2.2.5.27)
Похоже Вы запускаете другую консоль запросов.
В версии 8.2. я базировался на типовой консоле для управляемых форм и соответственно выглядит она по-другому (см скрин).
Специально скачал с инфостарта на случай ошибочной ссылки - нет, ошибки нет, файл как на скрине ниже.
версию для 8.3 - там много нового и интересного :)
В обработке не работает ни один из пунктов работы с буфером обмена ("Операции - Сформировать код с запросом", "Операции - Получить запрос из кода 1С").
В случае получения кода запроса из 1С пишет - "Буфер пуст", в случае сформировать код запросом - что было в буфере раньше.
Посмотрите плз.
По описанному функционалу.. в режиме обычных формы он реализован в виде пункта "получить тип значения" контекстного меню при клике на соответствующей ячейке (правой кнопкой мыши, см вложение.
В управляемых формах он пока не реализован, добавлю :)
Мне важны Ваши замечания, комментарии, предложения.
Cпасибо :)
Автоподстановка срабатывает по комбинации Crt+Пробел.
Можно пример, на котором она не отрабатывает?
"Выбрать* из Справочник"
а потом нажать Ctrl + пробел ничего не происходит.
Нужно было точку поставить, тогда появляется окно с выбором справочников.
Спасибо, разобрался!
Классный инструмент, давно хотел такую вещь с автодополнением подобным SQL Manegement Studio ибо пишу запросы текстом
Евгений, мне кажется логичным было заложить в алгоритм открытия окна со списком документов/справочников и т.п. сразу после выбора типа объекта и ещё алиас пробивать как это делает конструктор запросов.
"ВЫБРАТЬ * ИЗ Справочник.Номенклатура КАК Номенклатура"
На версии 8.3.13 ругается на РезультатЗапроса, хотя в коде прописан новый метод РезультатЗапроса(). Чтобы начало работать пришлось подправить код - добавить <"ЭтотОбъект." + >
Функция РезультатЗапросаНаСервере() Экспорт
Возврат Вычислить("ЭтотОбъект." + СвойстваРеквизитаРезультатЗапроса.ИмяРеквизита);
КонецФункции // РезультатЗапросаНаСервере()
По описанной ошибке.. Хотел обойти данную ошибку, обработав нюансы конкретных релизов, в которых она воспроизводится, но пока не идентифицировал их, быстрее получается в коде прописать "этотобъект.Результатзапроса", чем найти время на исправление. К сожалению.
Но Ваш код имеет место быть. Если в ближайшее время не исправлю, как хотел, то вставлю Ваш код. Спасибо.
на infostart выкладывал в феврале
на github ( 14 марта
готово следующее обновление, где добавлена работа с СКД, исправлены некоторые ошибки и сделаны небольшие другие доработки, но нет времени все это описать.
Попробую в ближайшее время выложить...
Кроме того, нет предложений по доработкам... пишите, предлагайте, буду реализовывать, плюс подключайтесь к разработке на github :)
Там действительно были какие-то нюансы с реализацией дерева, поэтому не сделал такой вариант сразу.
На НГ обещаю вернуться к данному вопросу :)
И можно быстрее найти проблемное место, куда копать дальше. Особенно в ЗуПе... Поэтому я нередко добавляю "ненужную" строку итогов (если ее там изначально нет).
{ВнешняяОбработка.КонсольЗапросов.Форма.Форма.Форма(1493)}: Значение не является значением объектного типа (ClipboardData)
Окно.ClipboardData.SetData("Text", Текст);
Окно = Форма.ЭлементыФормы[НазваниеЭлемента].Документ.parentWindow;
Окно.ClipboardData.SetData("Text", Текст);
так
ПолеHtmlДокумента = Форма.ЭлементыФормы[НазваниеЭлемента];
HtmlДокумент = ПолеHtmlДокумента.Документ;
Окно = HtmlДокумент.parentWindow;
ДанныеБуфераОбмена = Окно.ClipboardData;
ДанныеБуфераОбмена.SetData("Text", Текст);
Попробуйте, я внесу эти изменения в следующий релиз.
2) Ошибка: если переименовать таблицу в конструкторе запросов на закладке "таблицы и поля", то слетают все условия.
1. да, под управляемыми формами такой функции нет.. добавлю в список доработок, спасибо.
2. Для редактирования запроса консоль вызывается платформенный механизм - конструктор. Или я не так понял проблему..Если этот запрос отредактировать в конфигураторе через конструктор запроса поведение будет аналогичным?
2. Конфигуратор фактически работает как бы на "обычных" формах, поэтому там такой ошибки нет.
Запрос для проверки может быть самым любым, самым примитивным, типа:
ВЫБРАТЬ
Номенклатура.Код,
Номенклатура.Наименование
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Ссылка = &Ссылка
Если в конструкторе потом переименовать псевдоним "Номенклатура" на любой другой, например "Номен", то условие полностью удалится. Возможно, это ошибка платформы, причём давно и во всех релизах.
Номенклатура.Код,
Номенклатура.Наименование
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Ссылка = &Ссылка
Попробовал ... Тонкий плиент, управляемые формы, платформа 8.3.15.1700... не воспроизвелось..
А это на разных базах на разных компьютерах воспроизводится?
Текст = "sel ect id fr om loan limit 10";
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("id", Новый ОписаниеТипов("ЧислО",,,Новый КвалификаторыЧисла(10,0)));
ТЗ=ОбращенияКБДСайтаСервер.ВыполнитьЗапросКSQL(Текст, ТЗ, "DRIVER={PostgreSQL Unicode(x64)}; SERVER=196.15.14.2; PORT=5008; DATABASE=base; UID=1c; PWD=pass");передать в параметр?
в инструментах разработчика всё понятно, перед выполнением запроса просто устанавливаем параметр запроса:
мОбъектЗапроса.УстановитьПараметр("ТЗ", ТЗ);тут не понимаю как
ТЗ.Колонки.Добавить("id", Новый ОписаниеТипов("ЧислО",,,Новый КвалификаторыЧисла(10,0)));
Действительно, такой функционал сейчас отсутствует... хотя согласен, он будет удобен .. я добавлю его в следующем релизе.. спасибо
...а пока можно реализовть через другой существующий функционал..а именно
1. Выгрузить таблицу в результат запроса следующим кодом (выполнения произвольного кода - кнопка F5):
Текст = "sel ect id fr om loan limit 10";
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("id", Новый ОписаниеТипов("ЧислО",,,Новый КвалификаторыЧисла(10,0)));
ТЗ=ОбращенияКБДСайтаСервер.ВыполнитьЗапросКSQL(Текст, ТЗ, "DRIVER={PostgreSQL Unicode(x64)}; SERVER=196.15.14.2; PORT=5008; DATABASE=base; UID=1c; PWD=pass");
//---
АдресРезультата = ПоместитьВовременноеХранилище(ТЗ);
лОбработкаОбъект = Новый (ЗначениеИзСтрокиВнутр(ТипОбработка));
лРеквизитыТаблицы = лОбработкаОбъект.гПолучитьМассивРеквизитовДляДобавленияТаблицыНаФорму(УникальныйИдентификатор, АдресРезультата, АдресСпискаСпецПолей, РезультатЗапросаВДерево);
// изменяем структуру реквизитов формы
Попытка
ИзменитьРеквизиты(, лРеквизитыТаблицы.МассивРеквизитовУдаления);
Исключение
КонецПопытки;
// раздельно добавляем и удаляем, потомучто при удалении отсутствующего реквизита происходит исключение
Попытка
ИзменитьРеквизиты(лРеквизитыТаблицы.МассивРеквизитов, );
Исключение
мПоказатьОшибкуНаСервере(ОписаниеОшибки());
КонецПопытки;
лРезультат = ПолучитьТаблицуРезультатаНаСервере(АдресРезультата).Скопировать();
ЗначениеВРеквизитФормы(лРезультат, СвойстваРеквизитаРезультатЗапроса.ИмяРеквизита);
лОбработкаОбъект.гВывестиТаблицуНаФорму(Элементы, АдресРезультата, АдресСпискаСпецПолей, УсловноеОформление, РезультатЗапросаВДерево);
//---
Показать2. Загрузить из результата запроса в параметр
Не совсем понял тогда ......как Вы хотите без кода добавить таблицу в параметр.
Все равно же придется выполнить код по получению таблицы и некий код по добавлению таблицы в параметр...например, как Вы сами приводили пример из другой обработки
мОбъектЗапроса.УстановитьПараметр("ТЗ", ТЗ);Вы можете сами поучавствовать в разработке или добавить ошибки или предложения
Ну е-моё, четверть века прошла, даже 1С уже почти удовлетворительно научилась обрабатывать Ctrl+C Ctrl+V для вставки данных в таблицы, а такую элементарщину, как вставить табличные данные в параметр запроса (или в ВТ сразу) никак не могут.
Все, у меня этот, как его, батхёрт! 4 консоли перепробовал - везде либо невозможно, либо пляски с бубном нужны
"Для каждого СтрокаЗапроса из лРезультатЗапроса Цикл"
/ лРезультатЗапроса = РезультатЗапроса(); /
возникает потому, что код, скорее всего, выполняется на сервере — там эти методы недоступны.
Если так, просто закомментируйте строки, подставленные из общего шаблона, на которые ругается обработка
(ОбработкаПрерыванияПользователя() и Состояние()).
По поводу "Итератор для значения не определен": ошибка означает, что лРезультатЗапроса — не коллекция,
которую можно перебрать в "Для каждого". Посмотрите, что именно возвращает лРезультатЗапроса в вашем случае:
если это объект РезультатЗапроса, перебирать нужно через .Выгрузить() или .Выбрать(), а не напрямую.
По имеющимся данным точнее не скажу. Пришлите в личку полный код, полный текст ошибки и версию обработки —
подскажу детальнее.
Честно говоря, не знаю, что возвращает РезультатЗапроса(), но, по логике, это должна быть какая-то таблица значений?
Если предлагаемые примеры кода содержат такой обход.
На форме, во всяком случае, выглядит как таблица.
Также я не понял, где тут личка, напишу здесь.
Исполняемый код предельно простой:
лРезультатЗапроса = РезультатЗапроса();
Для каждого СтрокаЗапроса из лРезультатЗапроса Цикл
лОбъект = СтрокаЗапроса.Продукция.ПолучитьОбъект();
лОбъект.Комментарий = "завод";
//лОбъект.ОбменДанными.Загрузка = Истина;
//лОбъект.Записать();
КонецЦикла;
ПоказатьСобственно, тут он уже и ругается:
Запрос тоже нехитрый:
ВЫБРАТЬ
СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка.Владелец КАК Продукция,
СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК Материал,
СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка КАК Спецификация
...
Ну не суть, главное, что происходит обычная выборка (вопрос эффективности не стоит). Там я даже оставлял только одно поле, поскольку надо отдельно обрабатывать продукцию, отдельно материалы и отдельно спецификации - везде прописывать тот или иной комментарий.
Разве стоит тут думать, как сделать обход? Я предполагал, что это все уже сделано в недрах и представлено в виде ТЗ. Тогда надо поправить предлагаемые образцы кода.
Благо, конечно, нетрудно загнать запрос в свою обработку и там обработать. Но все же лишние телодвижения и попытки сначала понять, что не так, когда, как обычно, дедлайн через 2 часа, и дело отнюдь не ограничено прописыванием комментариев :)
Версия 3.1.423
Конфиг БП 3.0.204.22 с допиленным в расширении справочником Спецификаций (в частности, добавлен реквизит Комментарий).
Конкретно версию 3.1.423 (если вы про версию самой обработки) я не могу уже проверить.
Можете скачать версию с текущего сайта (я проверил такой ошибки там нет), или актуальную версию на гитхабе (
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 14183
Создание 05.07.06 00:00
Обновление 06.10.21 09:36
Просмотры 64748
Загрузки 331
Рейтинг
128
Комментарии 158
Код открыт Да
Рубрики Инструментарий разработчика
Кому Разработчик
Тип файла Внешняя обработка (ert,epf)
Платформа 1С:Предприятие 8
Конфигурация 1C:Бухгалтерия
Операционная система Не имеет значения
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)