Полностью переработанная консоль отчетов. Именно такая, какой она должна была быть с самого начала. Без оверхеда. Без лишних серверных вызовов. Без лишних «РеквизитФормыВЗначение».
Проверена корректная работа в Веб-интерфейсе.
Производительность
Все просмотренные мною консоли запросов на управляемых формах страдают теми или иными недостатками в плане производительности. Большинство выводят «дедовским» методом через «Присоединить» области, попутно еще и вычисляя ширину колонок, другие через «Построитель отчета». Все это накладывает свой отпечаток на скорость работы.
Данная обработка не страдает подобными недостатками. Выигрыш по скорости уже видно невооруженным глазом на выводе более 100 элементов. При выводе более 1000 элементов скорость в некоторых существующих консолях отстает не порядки.
Подсветка синтаксиса
1С убрали подсветку синтаксиса в управляемых формах. Тем, кто вырос на обычных формах она была как нечто само собой разумеющееся. Для тех кто привык к хорошему, могу обрадовать – пусть и не полнофункциональная, но подсветка реализована в данной разработке. Подсветка работает через форматированный документ. Как следствие – чтобы обновилась подсветка того, что вы ввели необходимо убрать фокус с области редактирования. Следует отметить, что на больших запросах в несколько экранов форматированный документ начинает тормозить, поэтому предусмотрена кнопка отключения подсветки.
Обработка результата
Консоль в большей степени – универсальный инструмент и, нередко, нужна для быстрой обработки справочников или документов по отбору. Для этого предусмотрена возможность выполнения произвольного кода над результатом запроса. Созданы простые шаблоны для справочника/документа/регистра/ Все делается буквально в пару кликов В обработке результата можно использовать параметры текущего запроса. Можно даже добавить свой произвольный параметр и использовать его для обработки результата.
Выбор типа параметра
Вместе с подсветкой синтаксиса был убран человеческий выбор типа. Что ж, пришлось переписать. Теперь тип можно снова выбирать как в прежние времена и даже лучше.
Корректная работа с параметрами типа «Таблица значений», «Граница», «Момент времени». Многие существующие консоли страдают теми или иными проблемами с этими параметрами.
Интерфейс
Вся консоль – одна закладка. Не нужно никуда переключаться. Если не нужен список запросов – просто отожмите кнопку «Запросы», то же и для панелей «Параметры» и «Запрос».
Можно просматривать результаты промежуточных временных таблиц в один клик не засоряя интерфейс как это сделано в ИТС-подобный обработках.
Теперь можно открыть результат запроса сразу в Excel без вывода в какие-то промежуточные окна (не работает в Веб-интерфейсе).
Можно сортировать колонки результата в один клик. Не нужно переделывать запрос. Удобно, например если нужно найти одинаковые или пустые строки.
Текст для конфигуратора
Нормальный, человеческий текст запроса для вставки в конфигуратор. Который просто – работает! Переносятся все параметры запроса, и вы получите точно такой же результат, как в консоли.
UPD:
Добавлена версия для платформы 8.3.5 и ниже (без поддержки асинхронных вызовов). Спасибо тов. dj_serega
Удобно, красиво.
Еще бы добавить минимальный вариант обработки результатов запроса (пометить на удаление, перепровести, очистить поле какое нить) и вообще супер.
(и маленький недочет — Конструктор запросов открывается на заднем плане в неактивном окне)
(1) moolex, Обработку планирую добавить. Как и выбор параметров в виде произвольных выражений и еще по мелочам.
Проблема возврата фокуса в основное окно возникает на поле форматированного документа в режиме Такси или «Формы в закладках». Если отключить раскраску то все нормально. Это поведение платформы и я пока не знаю как побороть без отключения видимости. Надо подумать будет. Опять костыль какой-то городить придется 🙁
(1) moolex, В общем прилепил костыль в новой версии — будет доступна когда модераторы одобрят.
В принципе можно самому поправить:
Показать
А как у неё с модальными окнами? Асинхронностью ?
А то так скачаешь консоль то в тонком клиенте не работает , то работает только в типовых, то нет возможности анализа временных таблиц, то потом закрыть не можешь потому что модальные диалоги запрещены.
У вас с этим как? Работает на любой конфе(типовой, нетиповой, без БСП) ?
(4) TODD22,
Все работает как в модальном так и в немодальном режиме. Как с отключенным, так и с включенным использованием синхронных вызовов. Работает даже в веб клиенте.
Единственное могут быть проблемы на версиях ниже 8.3.3 где функций подобных «ПоказатьВопрос» вообще не было.
Никаких типовых модулей не используется, можно запускать в любой конфе.
При ручном изменении текста запроса (не в конструкторе) ничего не меняется. Меняется только видимый текст запроса, что очень не хорошо. Очень часто в запросе надо подправлять одно-два поля, вызывать для этого конструктор не хочется совсем
(6) JohnyDeath, Это я тестировал и залил с закомментированным кодом 🙁 Файл перезалил.
Если вручную, то — надо просто раскомментировать код в процедуре «ТекстЗапросаПриИзменении(Элемент)».
Заодно поправил баг с параметрами — нужно в процедуре «ЗаполнитьПараметрыКлиент» заменить «ОбновитьОтображение» на «УстановитьТекущиеПараметры»:
Показать
Все эти правки учтены в обработке (не знаю, одобряют ли его модераторы или сразу файл обновляется).
(7) Обновилось, теперь все хорошо. Приятная консоль и кнопочки с временными таблицами тоже понравились
За раскраску кода/текста запросов — огромный респект сразу! Остальное — потестим.
Не думали над тем, чтобы повесить раскраску кода на обработчик ожидания?
(10) 1С_Мастер, плохая идея, ИМХО. Нужно как-то получать событие «Документ изменен» на JavaScript и передавать его в 1С (например, имитировать переход по ссылке и обрабатывать этот переход).
Ну а в идеале — форматировать непосредственно с помощью JS.
(0), не работает в тонком клиенте ((( Платформа 8.3.6.2076. Скриншот с описанием ошибок прикрепляю.
(0), заменил конструкцию ЭтотОбъект на Объект, форма открылась. Но при попытке вызвать конструктор запроса опять ошибка: «Не найден экспортируемый метод: ПриЗакрытииКонструктораЗапроса» ((( Это только у меня эта обработка работать не хочет?
(0), а ну вот разобрался. В конструкторах оповещений, второй параметр был указан как ЭтотОбъект, заменил его на ЭтаФорма и всё корректно, вроде бы отработалось. Может, различия в версиях платформ-клиентов?
Только вот подсветка синтаксиса, всё же как-то странно работает. В форматированном документе обработки кода пытаюсь вставить знак табуляции в строку. А он (документ) вставляет табуляцию в начало каждой строки кода…. И подсветка работает только при нажатии кнопки «Обновить подсветку синтаксиса», что не очень-то и удобно ((. Так и должно быть?
А список запросов в виде дерева выводится?
(12) premier, у вас на конфе какой режим совместимости стоит?
(10) 1С_Мастер, можно подумать. Только придется запоминать позицию курсора, потом заново восстанавливать и все мигать будет при этом.
http://its.1c.ru/db/metod8dev#content:5293:hdoc . В принципе можно и везде поставить «ЭтаФорма», только не уверен что это правильно будет с точки зрения 8.3 и дальнейших версий платформы.(14) premier, Это поведение форматированного документа. Тут я ничего не могу поделать 🙁 То же и с подсветкой — у поля нет события «при нажатии кнопки», а событие «при изменении» возникает только при переходе фокуса на другой элемент формы.
(11) я с js не силен. Думал воткнут, но пока не смогу полноценный раскрасник сделать на js.
(12) premier, у тебя режим совместимости включен. Можно почитать тут:
(15) V_V_V, Нет. Была у меня консоль с деревом. Ни разу за много лет не использовал. Бесполезный функционал, только запутывает.
(16) (17) режим совместимости установлен — не использовать. Платформа 8.3 тоже не такая уж древняя, так что свойство ЭтотОбъект должно быть в принципе доступно для чтения.
В общем-непонятная какая-то ситуация.
С форматированным документом тоже ситуация печальная (((.
(0) Вот в чём дело-то оказалось:
ЭтотОбъект (ThisObject)
Использование:
Только чтение.
Описание:
Тип: ОбработкаОбъект.
Содержит данный объект обработки. Свойство предназначено для получения объекта в модуле объекта или модуле формы.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
А я обработку под тонким клиентом запускал. Вот она и не взлетела.
(19) premier, вы не то свойство смотрите. помимо ЭтотОбъект в модуле обработки есть еще ЭтотОбъект в модуле формы.
УправляемаяФорма (ManagedForm)
ЭтотОбъект (ThisObject)
Использование:
Только чтение.
Описание:
Тип: УправляемаяФорма.
Содержит данную форму. Может быть использовано в модуле формы для получения данной формы и передачи ее в качестве параметра в другие формы, глобальные процедуры и функции и т.д.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент.
(20) nixel, что-то видимо проглядел в справке, но тем не менее, ошибки на скриншоте явно указывают на то, что проблема в обращении к этому реквизиту. На досуге мат.часть подучу ))
(21) premier, если с «ЭтаФорма» работает, то это точно проблема в совместимости, потому что по ссылке из (17) написано:
Перевод конфигураций на платформе «1С:Предприятие 8.2» на платформу «1С:Предприятие 8.3» без режима совместимости с версией 8.2
Новое свойство ЭтотОбъект в управляемых формах и общих модулях.
Таблица 1. Переименования методов и свойств в версии 8.3:
Что переименовано — Старое наименование — Новое наименование
Свойство управляемой формы — ЭтаФорма (ThisForm) — ЭтотОбъект (ThisObject)
(17) Да я тоже не силен в JS — тут поиск в интернете помогает.
Как я понял, основная проблема: в том, что событие «onchange» («ПриИзменении») — имеется только у поля ввода, многострочного поля ввода и поля списка выбора, а внутри этих полей раскраска HTML не работает. Предлагают такую идею: сделать два слоя один под другим, на нижнем слое расположить многострочное поле ввода (textarea), а на верхнем — отрисовывать раскрашенное содержимое этого поля ввода. При этом, пользователь будет видеть верхний слой, а текст вводить в нижний (не видимый ему). Тут ещё нужно позаботиться о грамотной передаче фокуса и отрисовке курсора… В общем, задачка сложная, но вроде как — решаемая.
Спасибо огромное, консоль шикарна:)
Много еще конфигураций с режимом совместимости 8.2, может в формах проверять не совместимость текущей конфигурации и использовать в зависимости от этого «ЭтаФорма» или «ЭтотОбъект»? Вроде ничего сложного.
(26) DnsRzv, вероятно это из-за ТЧ в запросе.
(26) DnsRzv, Не надо выводить табличные части в результат.
В моей практике не разу такого не потребовалось. Если вы выводите в результат табличную часть, то что-то делаете не так. Как вы планируете анализировать такой результат?
В моей практике не разу такого не потребовалось. Если вы выводите в результат табличную часть, то что-то делаете не так. Как вы планируете анализировать такой результат?
Подобные заявления отнюдь не делают разработчику чести. Лучше подумать, как решить эту проблему.
(29) boln, может сначала ответить на вопрос?
(28)
Однако я не видел ни одну консоль, которая бы от этого падала. Вы лидируете.
(31) nixel, не охота заморачиваться тем, что никогда не используется
(32)
Используется в типовых. Взять хотя бы конфигурацию ЗУП 3.0 — поиск по комбинации .( дает представительный результат.
(32) у вас не используется, у других используется.
Т.е. вы согласны, что вы делаете мега крутой и универсальный инструмент, который не может прожевать самый простой запрос из первых глав Радченко?
(33) boln, вопрос был — «как вы планируете анализировать такой результат», а не «где используется». Вы будете просматривать 500сторк результата с 6 колонками типа «таблица значений»? Вы в каждую строку и колонку будете кликать? Какой практический смысл выводить таблицы значений к колонках?
(35)
Практический смысл в том что в консоли не только анализируют и кликают по колонкам но ещё и пишут запросы и иногда довольно большие. Может человеку не надо анализировать сами значения. Он их потом программно обработает когда запрос в конфигуратор выгрузит.
(35)
А Вы сначала хотя бы для одной такой колонки задачу решите 🙂
(37) boln, сделать то, сами не знаете для чего?
Поддерживаю boln.
Надо б сделать так, чтоб не падало и нормально проглатывало. Пусть в колонках будет какое-нибудь псевдо-значение <ТаблицаЗначений>, но как минимум выполнится такой запрос должен.
Я тоже в типовых и не очень встречал такое не раз. И не важно что потом с результатом такого запроса происходит. Я, как разработчик, хочу доработать его в режиме предприятия и без лишних телодвижений по убиранию и обратной вставке таких вот полей-Таблиц.
(35) спросил для удобства анализа документа у которого в форме не выведены все табличные части. А было бы удобно, вот например в другой консоли:
Двойным щелчком по ячейке в колонке сотрудники открывается расшифровка:
(40) DnsRzv, в чем удобство? 500 раз кликать по ячейкам? В чем тут удобство?
(41) да причем тут удобство.
Ваша консоль запросов, не может выполнить элементарный запрос.
Это баг, а не «не надо так делать».
В конце концов
тоже упадет с ошибкой.
(44)
Еще раз: выборка табличных частей как полей широко используется в типовых конфигурациях. Так что это совсем не «академический интерес».
(44)
что значит «академический интерес»?
Как разработчик, я хочу быть уверенным, что когда я напишу в консоли запросов «Выбрать * Из Документ.РеализацияТоваровИУслуг», я не словлю необъяснимую ошибку.
Плюс, как сказал boln, отсутствие возможности отлаживать типовые запросы без лишних движений еще сильнее уменьшает полезность консоли.
Ей богу, проще форкнуть, пофиксить самому и перевыложить.
Хватит ныть, запилил я вам таблицы значений. Можно тестить.
(47)
Вот, теперь респект!
Только для уточнения: это поле в результате запроса имеет тип не ТаблицаЗначений, а РезультатЗапроса.
(47) Спасибо, заработало.
Не могли бы Вы ещё и под такой запрос подправить консоль, для пущей универсальности:
ВЫБРАТЬ
НачальнаяШтатнаяРасстановка.МоментВремени
ИЗ
Документ.НачальнаяШтатнаяРасстановка КАК НачальнаяШтатнаяРасстановка
Вылетает с ошибкой:
{Форма.Форма.Форма(1392)}: Ошибка при вызове метода контекста (ИзменитьРеквизиты)
ИзменитьРеквизиты(МассивНовыхРеквизитов, МассивУдаляемыхРеквизитов);
по причине:
Недопустимый тип реквизита. Имя: «МоментВремени»
Как консоль работает с внешним источником данных?
Закладка «Построитель» так и не появилась. Текст запроса почему то пропадает, при открытии конструктора запроса. Что-то здесь не доработано.
(50) NoRazum, так же как и с обычными таблицами.
(51) gigapevt, а кто обещал что она появится? Ее нет в стандартном конструкторе запросов. По поводу исчезновения текста — можно подробнее? Ошибку выдает какую-то?
(51) gigapevt,
Закладка Построитель имеется только в обычном Конструкторе запроса, который работает в толстом клиенте. Автор использует Конструктор запроса для тонкого клиента, в котором закладки Построитель нет.
Если кто хочет закладку «Построитель» — выколупайте стандартный конструктор запросов отсюда:http://infostart.ru/public/369487/ и добавьте закладку :))
(54)
Не выйдет! 🙂
Он опирается на объект СхемаЗапроса (QuerySchema), а там не предусмотрена работа с конструкциями препроцессора языка запросов («в фигурных скобках»).
(55) boln, всегда можно свой велосипед изобрести 🙂
(56) ну, это кому охота.
На форуме из-за этого к 1С серьезные предъявы идут: чел хочет через Схему запроса добавить в запрос расширения для Построителя и СКД, а нельзя.
(49) DnsRzv, Поправил
(58) Спасибо! Работает!
(28)
В моей практике не разу такого не потребовалось. Если вы выводите в результат табличную часть, то что-то делаете не так. Как вы планируете анализировать такой результат?
Я иногда использую такую конструкцию.
Даже пример могу дать 🙂
В обработке результата пишу:
В результате (Как мне кажется) данные выгружаются запросом в память, и не нужно дергать ИБ при получении данных ТЧ.
upd: дальше видел что сделали. Ок 🙂 Спасибо. Ща буду тестить 🙂
С виду понравилась. Скачал и на тебе 🙁 На 8.3.5.1248 не работает.
<<?>>НачатьПолучениеФайлов(ОписаниеОповещенияПолученияФайлов, ПолучаемыеФайлы, Объект.ИмяФайла, Ложь); (Проверка: Тонкий клиент)
{Форма.Форма.Форма(907,2)}: Процедура или функция с указанным именем не определена (НачатьПодключениеРасширенияРаботыСФайлами)
<<?>>НачатьПодключениеРасширенияРаботыСФайлами(Оповещение); (Проверка: Тонкий клиент)
{Форма.Форма.Форма(1028,2)}: Процедура или функция с указанным именем не определена (НачатьПомещениеФайлов)
<<?>>НачатьПомещениеФайлов(Оповещение,,Диалог,Истина, УникальныйИдентификатор); (Проверка: Толстый клиент (обычное приложение))
Нужно переписать под «ПолучитьФайлы», «ПодключитьРасширениеРаботыСФайлами» и «ПоместитьФайлы» соответственно.
Дорабатывать имеете желание или прислать доработанный вариант?
Приложил скрин свойств конфы.
Для себя переписал, работает. Пока работает шустренько. Будем дальше «тыкать» =)
1. Нет выбора списков параметра 🙁
(62) dj_serega, можно нажать в параметрах на крестик (очистить) и выбрать тип «Список значений», дальше уже можно указывать любые значения в этом списке. Да, конечно, можно доработать чтобы автоматом список типизировался. Но пока нет времени на это.
Сильно тормозит на больших запросах, приходится раскраску отключать 🙁
Скачал. Запустил(УФ, Толстый клиент). Не запустилась. Выдала следующие ошибки:
Показать
+Вопрос по вкладке связи:
http://wlinks.ru/uploads/2016/03/i407byfhh7.png
http://wlinks.ru/uploads/2016/03/i408b3lhb1.png
У меня одного она такая?
Нельзя как то сделать так:
______
Сможете ли Вы это исправить? Придется ли перекачивать обработку снова и тратить $M, или же Вы можете прислать её на mail ?
(65) LordPhoenix, вы бы хоть версию платформы указали
(65) LordPhoenix, добавил версию для платформы 8.3.5 и ниже. (файл «Консоль запросов (до 8.3.6)») (спасибо тов. dj_serega).
По поводу вкладки связи, то этого никак не поменять — это типовой конструктор для тонкого клиента. Писать свой конструктор запроса я не планирую.
(67) Спасибо за версию для 3.5) Конструктор запроса поправил сам)
обработка результата не работает, нельзя ни скопировать/ни вставить, подсветки нет, платформа 8.3.6
Добрый день!
На платформе 8.2.19.130 — не запустилась.
На платформе 8.3.9.1818 — запустилась но:
Запускаю базу УТ 11.1.2.22
В свойствах конфигурации:
Режим совместимости интерфейса — Версия 8.2
Режим совместимости — Версия 8.2.16
Видимо из-за этого ошибка.
Переменная не определена (ЭтотОбъект)
Заменил во всех формах в модулях «ЭтотОбъект» на «ЭтаФорма», кроме Модуля объекта
Обработка открылась.
Еще одна ошибка.
Выбираю конструктор запроса, создаю запрос. Нажимаю ОК.
Появляется ошибка:
Строка: 570
Символ: 17
См. скриншот вложении.
Как победить эту ошибку?
Спасибо.
Василий, как побороть эту ошибку?
Сбросил настройки IE, переустановил Java
Галку в свойствах IE «Отключить отладку сценариев» убирал.
Ничего не помогает.
И еще, запрос выполняется автоматически, без нажатия кнопки выполнить. Это так задумано????
Проблему с «На этой странице произошла ошибка сценария» неизвестно как исправить?
Погонял отладчик, так и не понял причину. На обычном примитивном форматированном документе поле формы работает без ошибок. Так что это вряд ли настройки IE и проч.
Именно в этой обработке не работает — может быть иногда как-то криво собирается массив для ФД? Никто не разбирался?
«На этой странице произошла ошибка сценария»
Аналогичная проблема.
Очень хотелось бы увидеть сохранение алгоритмов обработки данных. Сейчас «Обработать результат» открывает отдельное окно, в которое каждый раз нужно копировать свой алгоритм, он не сохраняется.
Было бы отлично если бы однажды написанные для запроса обработчики сохранялись в XML (по аналогии с сохранением параметров), и предлагались для выбора в окне «Обработать результат». Т.к. в отличие от параметров нужно хранить просто несколько кусков текста, думаю это не очень трудно реализовать. 🙂 спасибо за обработку, пользуюсь.
p.s. И кнопку «Новый файл запросов» (сейчас есть только «Открыть (из файла)», «Сохранить», «Сохранить как»). Но это уже мелочи.
Слова «Поместить», «Уничтожить» обязательно нужно писать в верхнем регистре, иначе будет ошибка «менеджер временных таблиц не установлен» т.к. в строках 658, 670 и 676 забыли использовать ВРег()
ошибку подтверждаю. со сценариями.
просьба к автору исправить, или сообщить механизм обхода.
именно
На платформе 8.3.11.3034 писать запрос вручную в этой консоли нереально — при поиске по тексту запроса, копировании и других манипуляциях с текстом курсор постоянно улетает в начало текста запроса.
Не рекомендую
Хорошая задумка и реализация, но нашёл одну проблему, из-за которой не получится полностью заменить стандартную консоль запросов от 1С — в качестве параметра запроса невозможно выбрать узел плана обмена.
Автору спасибо, с сохранением запроса что-то не так, в открытом состоянии вроде записывает по кнопке «Сохранить запросы как», хотя по кнопке «Сохранить» показывает ссылку на другой файл запросов. После включения в настройках автосохранения запросов и при последующем отключении флага при следующем открытии выдает ошибку типа(видимо пытается открыть сохраненный файл запросов):
{ВнешняяОбработка.КонсольЗапросов.МодульОбъекта(239)}: Ошибка при вызове метода контекста (Прочитать): Ошибка разбора XML: — [23,13]
Фатальная ошибка:
Extra content at the end of the document
SystemId: file://*/Temp/v8_D350_89.q1c
и открыть этот файл вручную не может с той же ошибкой.
Хотя файлы запросов сохраненные консолью с ИТС открывает без проблем и после закрытия . А так вроде все быстро и удобно.
спасибо