Управляемая консоль отчетов – новый функциональный инструмент для работы с запросами и СКД в управляемых формах
Приветствую, коллеги, меня зовут Люлюк Евгений, работаю ведущим программистом крупной транспортной компании GLT. Мой опыт разработки на платформе 1С более 15 лет.
Расскажу про управляемую консоль отчетов – новый функциональный инструмент для работы с запросами и СКД в управляемых формах. Это, наверное, самый близкий программистам и разработчикам доклад, который есть на Infostart Event.
«Некогда пилу точить, нужно дерево пилить!»
Этой ироничной фразой подмечено, насколько важен инструмент в нашей работе. Время выполнения задачи зависит от инструмента. А время у нас стоит дорого.
Сложность конфигураций растет – для получения данных часто используются пакетные запросы, временные таблицы, в качестве параметров запроса может использоваться уникальный идентификатор, таблица значений, тип. А инструментов для удобной работы с этим в управляемых формах практически нет.
Все знают, что есть консоль отчетов, консоль запросов от 1С, но в них уже как минимум пять лет ничего не изменяется, функциональность остается на том же уровне. Уже идут годы, и 1С вряд ли изменится. Воспринимаю, как посыл фирмы «1С» о том, что улучшение этих инструментов нам нужно взять в свои руки, потому что без боли ими пользоваться становится все сложнее и сложнее. Это, так сказать, мой Inception на этой конференции, что дорабатывать и улучшать эти инструменты должны мы сами.
Что такое «Управляемая консоль отчетов»
Разберем подробнее, какие возможности разработки «Управляемая консоль отчетов» могут быть вам полезны.
Получение данных запроса из отладки
Механизм получения данных в момент выполнения запроса известен достаточно давно. Очень удобно: ставим точку останова на строке, где выполняется запрос, вызываем определенную функцию, которая прописана в инструменте, и получаем из отладки весь контекст запроса – все его данные, временные таблицы, заполненные параметры.
В чем особенность? В обычных формах можно было в момент отладки просто открыть форму консоли и сразу же работать с этим запросом. А в управляемых формах в контексте сервера открыть форму нельзя, приходится где-то сохранять данные, и потом производить с ними работу. Это можно назвать «Отложенной отладкой».
Для упрощения запуска есть инструмент «Конструктор строки отладки» – он позволит вам посмотреть, какой вызов необходимо прописать. Для СКД этот вызов будет одним, для запроса – другим. На верхнем скриншоте слайда видно, как будет выглядеть команда отладки для запроса – ставим точку останова и прописываем эту команду.
И потом в последних использованных файлах/настройках можно данные этого запроса найти, выбрать – и сразу же все появляется, можно работать.
Анализ планов запросов
Тема анализа планов запросов достаточно актуальна. Производительность нужна всем, ее постоянно не хватает. В консоль встроен механизм анализа планов запросов (основан на технологическом журнале)
Концепция анализа близка к стандартной консоли запросов от 1С, улучшено:
Улучшения консоли СКД
Аналогично консоли СКД 1С, есть просмотр схемы компоновки данных, можно добавлять варианты, пользовательские настройки.
Групповая обработка
В разработке есть очень простая и удобная групповая обработка, которая позволяет решать большинство задач простым способом. На вход этого инструмента подается таблица значений. Нам необходимо прописать код, который будет выполняться для каждой строки.
Есть подробная индикация с возможностью прерывания.
После выполнения, нужен какой-то журнал, протокол этих выполненных действий. Не все может всегда завершаться успешно, по некоторым элементам могут возникнуть проблемы. Поэтому инструмент поддерживает:
Еще важно, что когда мы пишем запрос, необходимо его построить таким образом, чтобы при повторном выполнении он нам не давал в результате те объекты, которые уже были обработаны. Допустим, я запускаю обработку, а там 10 тысяч объектов – 5 тысяч из них обработано, потом у меня программа вылетела (администратор выкинул). Чтобы она в следующий раз уже не пыталась обрабатывать обрабатываемые объекты. Это зачастую легко делается. Допустим, если мы хотим заполнить незаполненное поле, мы прописываем в запрос «Выбрать все объекты, где это поле пустое», он нам получает, заполняем его. И, соответственно, повторное выполнение запроса уже не даст те строки, в которых это поле заполнено.
Поддержка пакетных запросов и временных таблиц
Бывают такие запросы, в которых есть только временные таблицы, и бессмысленно выводить результат без временных таблиц – он просто будет пустой. Поэтому когда инструмент видит, что в запросе используются только временные таблицы, он их выводит автоматически.
Обратите внимание, мы на экране видим, что сначала идет запрос №3, потом – запрос №2, а потом – запрос №1. Пакеты запросов так устроены, что обычно идут вначале временные таблицы, а результат где-то в конце. И я счел нужным записать это в обратную сторону. Но если для кого-то это непривычно, есть настройка, чтобы записать результат в прямом порядке.
Работа с параметрами запроса
В разработке реализовано автоматическое получение параметров. При изменении текста запроса вручную или конструктором новые параметры считываются автоматически, все определяется без дополнительных действий со стороны пользователя.
Редактирование текста запроса вручную
Для тех, кто редактирует текст запроса вручную, есть несколько помощников:
Разбор запроса на составляющие
Есть возможность разобрать запрос на маленькие кусочки, преобразовать его в дерево, чтобы он стал более понятен.
Поддержка английского языка разработки
Про поддержку английского языка разработки – имеется в виду не только англоязычный интерфейс инструмента (синонимы, которые есть у кнопок и т.д.), но и то, что разработка поддерживает генерацию кода в на английском языке.
Подход к разработке
Проект доступен как расширение или как внешняя обработка.
Все привыкли, что консоль запросов – это внешняя обработка. Но расширение, разрабатывать намного удобнее – можно структурировать: создавать модули, картинки, общие макеты и т.д. Поэтому разработка ведется именно в расширении, а внешняя обработка получается путем автоматической генерации.
«Не думай о секундах свысока»
Дальше я немного расскажу про простые улучшения, повышающие удобство работы
Ограничение количества выводимых строк
Часто бывает, что мы выполняем пакет запросов, в нем может быть 40 таблиц с большим количеством строк. Такой результат никогда нормально не выведется, придется ждать очень долго. Сделано ограничение строк – больше 3000 строк по умолчанию он не выводит. Пишет, что выведено 3000 из 3125. И дальнейший результат не выводится, пишет «не все выведены». При желании можно нажать «Вывести все», и выведутся все строки.
Этот механизм позволяет работать с большими данными, где у вас обычная консоль или какие-то другие аналогичные инструменты просто зависнут.
Выделение особых значений – NULL и др.
Выделение особых значений – тоже достаточно важная функция. Выделяются значения: «NULL», «Пустая строка», «Пустая дата», «Пустая ссылка», «Неопределено».
Достаточно тяжелая функция, потому что это реализуется пост-обработкой после вывода результата. Соответственно, нагрузка большая. Если у нас имеется 10 тысяч строк и 5 колонок, это получается уже цикл в 50 тысяч итераций. При необходимости эту функцию можно отключить, и все будет выводиться еще быстрее.
Сравнение данных
Когда это использовать? Например, когда нам необходимо изменить запрос или оптимизировать запрос. Тогда мы в дереве консоли создаем первый запрос – это у нас эталон. А второй – это у нас разрабатываемый запрос. И, допустим, если нам необходимо, чтобы колонка «Выручка» считалась по-другому, мы реализуем этот механизм, а потом впоследствии наглядно сравниваем результаты и видим, соответствуют они нашим ожиданиям или нет.
Другой пример, если мы оптимизируем какой-то запрос – слева у нас эталон, а справа – оптимизируемый запрос. Мы его оптимизировали, закончили, можем наглядно сравнить тексты запроса. Бывает такое, что в конструкторе запроса, почему-то удалилось какое-то поле, и текст уже изменился, а это было сразу непонятно.
И другой пример – если получается, что при оптимизации эталонный запрос выдает другие данные, нежели наш, это значит, что-то не так – мы что-то слишком перемудрили с оптимизацией.
Расшифровка таблиц значений
Наверняка вы сталкивались с тем, что строки результата запроса иногда могут содержать таблицу значений. По умолчанию ее посмотреть невозможно, но в стандартной консоли ИТС есть подобный механизм – можно посмотреть, какая таблица значений в какой конкретной строке лежит.
Тяжелый механизм, который создает временные хранилища, туда таблицы закладывает. Иногда его лучше отключить.
Форма выбора типа
В разработке сделана своя форма выбора типа.
Форма выбора типа у 1С, мне кажется, не менялась с версии 8.0 – она просто вываливает список значений со всеми доступными типами, очень ненаглядно. Единственный помощник в стандартной форме выбора типа – это Ctrl+F.
Наша форма выбора типа:
Вставка значений ссылки по UID и по представлению битой ссылки
Я уже упоминал об этой функциональности, но важно, что сейчас на картинках наглядно видно, как происходит эта вставка. И этот механизм работает везде, где у нас используется ссылка – при вставке ссылки на объект и т.д.
Генерация кода на встроенном языке
Позволяет «обернуть» запрос, чтобы перенести код на встроенном языке в конфигуратор. Как мы видим, внизу можно переключить язык, если кому-то необходимо, чтобы код генерировался на английском.
Примечание к типу поля
Вы уже заметили, что у каждой колонки в заголовке таблицы есть картинка. Это – для отображения ее типа. Очень удобно видеть, какого типа колонка – дата или составной тип, как приведено на примере.
В дополнение к этому, если колонка содержит составной тип, то в примечании к ячейке табличного документа отображаются все типы, которые она содержит. И видно на скриншоте, что больше 10 он не старается отобразить, не нагружает систему этим примечанием.
Экспорт результата
Думаю, понятно – если необходимо выполнить экспорт результата в Excel, MXL, PDF, то нужно воспользоваться этой функцией.
Здесь важная особенность – он делает внутри какие-то мелкие полезности. Допустим, для MXL он устанавливает защиту ячеек, чтобы при открытии MXL в 1С можно было работать с расшифровками. Такие вещи, которые вы можете даже не заметить.
Замер времени выполнения
Думаю, что замер времени это стандартная функция, которая есть во многих консолях запросов. При запуске запроса на выполнение открывается новый отсчет, замер производится в миллисекундах.
Но в чем здесь особенность? Здесь особенность, что по кнопке «Обновить замер времени выполнения» мы можем видеть не время вывода результата, а только время выполнения запроса. Потому что так бывает, что запрос выполняется три миллисекунды, а вывод данных занимает одну минуту. Эта кнопка производит замер только времени выполнения, замер времени вывода результата она не производит.
Выделение активированной строки
Вот это – тоже простая функция. Тоже «стильно, модно, молодежно». Активированная строка выделяется нашим самым любимым цветом – желтым.
Информирование об обновлении
Есть функциональность информирования об обновлении.
Немного об оптимизации
Обновление и поддержка
Проект развивается. Внимательно отношусь к пожеланиям пользователей, стараюсь реализовывать все пожелания, которые есть. Почти все планы на 2019 год, которые у меня были до этого, сделаны, хотя, казалось, это нереально.
Данная статья написана по итогам доклада (видео), прочитанного на конференции INFOSTART EVENT 2019. Больше статей можно прочитать здесь.
В 2020 году приглашаем всех принять участие в 7 региональных митапах, а также юбилейной INFOSTART EVENT 2020 в Москве.
Консоль отчетов для управляемых форм
Предназначена для запуска на управляемых формах. Возможность редактировать саму компановку есть только в толстом клиенте (уравляемом). В тонком клиенте можно просто формировать отчеты с параметрами.
Может использоваться как встроенный отчет в конфигурации для формирования опытным пользователем отчетов.
Есть возможность сохранить отчеты в файл с последующим востановлением. Формат сохранения свой.
Форма настройки схемы компановки данных взята из УП 2.0
Скачать файлы
Специальные предложения
(3) douwl, можно все.. у меня даже есть консоль которая работает на тонком клиенте и там работает конструктор запросов! причем с совместимостью 8.2
(4) консоль замечательная, реально помогла.. только вот если конфа с совместимостью 8.2 не работает, ругается на ЭтотОбъект.. сделайте универсально:
делаем типа такой функции:
и заменяем все ЭтотОбъект на такой код:
?(ПолучитьСовместимостьС83(), Вычислить(«ЭтотОбъект»), ЭтаФорма)
и все отлично!
ПС: добавьте такую функцию что бы выводил текст запроса (после компоновки), нигде такую консоль не могу найти.. есть только под обычные формы.. вот взял вашу, допилю что бы текст запроса после компановки был.. если интересно в личку напишите, я вам готовый кусок дам
ПС: сделал себе отчет с выводом результат скомпонованного запроса, все работает отлично
Спасибо.
Пока это единственное, работает в самодельной конфигурации, да и не сильно наворочен.
Только при запуске в тонком клиенте надо кликнуть два раза, пока появится запрос на восстановление
настроек по умолчанию и при смене группировок слетают детальные записи по строкам.
Может что не так делаю?
Обновление 15.06.15 15:30
Код открыт Не указано
См. также
Универсальный редактор данных (УРД) Промо
27.08.2021 5477 118 Adeptus 51
Конвертация данных 3 расширение: Редактор кода.
08.09.2020 11565 30 Viktor_Ermakov 32
Предлагаю широкой общественности расширение А1Э, используемое в нескольких продуктивных базах для выполнения широкого круга задач.
14.08.2020 13656 0 Enigma 47
Должно быть NULL в регистре бухгалтерии Хозрасчетный
Обработка проверяет наличие и решает проблему с ошибкой развернутого сальдо в Оборотно-сальдовой ведомости (регистр бухгалтерии Хозрасчетный) из-за ошибки Универсального редактора реквизитов или кода программиста, устанавливающего пустые ссылки в значениях Валюты, Подразделения, Направления деятельности не равными NULL. И пересчёт итогов тут точно не поможет.
21.10.2019 18329 74 sapervodichka 33
Программа Faster 9.4 позволяет ускорить процесс работы программиста (работает в любом текстовом редакторе). Подсказка при вводе текста на основе ранее введенного текста и настроенных шаблонов. Программа Faster позволяет делится кодом с другими программистами в два клика или передать ссылку через QR Код. Исправление введенных фраз двойным Shift (с помощью speller.yandex). Переводчик текста. Переворачивает текст случайно набранный на другой раскладке. Полезная утилита для тех, кто печатает много однотипного текста, кодирует в среде Windows на разных языках программирования. Через некоторое время работы с программой у вас соберется своя база часто используемых словосочетаний и кусков кода. Настройка любых шорткатов под себя с помощью скриптов. Никаких установок и лицензий, все бесплатно.
24.05.2012 84626 965 moolex 157
CF & SQL : конструктор прямых запросов к БД 1С
Программа для чтения и анализа внутренней структуры данных 1С V8.х, Содержит конструктор прямых SQL запросов, позволяет обрабатывать и редактировать тексты SQL-запросов, выполнять прямые запросы к базе данных 1С и обрабатывать полученные результаты.
02.10.2019 30334 296 dmitrydemenew 63
Конвейер проверки качества кода
Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.
04.09.2019 37615 27 Stepa86 46
Модель объекта
Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.
30.06.2019 16502 1 vadim1980 5
Установка предопределенных элементов: просмотр, исправление и поиск ошибок (задвоенных и отсутствующих) Промо
Простая обработка для просмотра и установки значений предопределенных элементов. Позволяет заменить значение предопределенного элемента с одного элемента справочника на другой, удалить предопределенный элемент (снять пометку предопределенности), установить пометку переопределенного элемента. Проверяет предопределенные данные на наличие задвоений и отсутствующих. Работает со справочниками, планами счетов, планами видов характеристик, планами видов расчетов.
06.10.2014 169452 2757 ekaruk 170
Переводим рутину ручного тестирования 1C на рельсы Jenkins-а и ADD
Вы все еще тестируете свои конфигурации 1С вручную? Да вы просто тратите жизнь впустую! В данном туториале попробуем скрестить ADD и jenkins для автоматического запуска тестов.
03.06.2019 37012 9 ripreal1 92
Универсальный HTTP-сервис на платформе 1С, аля HTTP-сервер с примером
Практический кейс построения HTTP-сервиса, который работает по принципу HTTP-сервера, с разбором всех методов построения и разработки класса задач построения личных кабинетов и сопряжения их с центральной базой.
13.05.2019 38270 152 Diversus 44
Немного о графических файлах. Сжатие. Распознавание текста
Простые и доступные методы борьбы с лишним весом графических файлов и распознавание текста.
06.05.2019 9857 12 tusv 6
[Расширение] Контроль отрицательных остатков по регистру бухгалтерии при проведении Промо
Расширение позволяет без изменений конфигурации проверять остатки по регистру бухгалтерии при проведении каждого документа и запрещает проведение при появлении отрицательных остатков после проведения.
17.08.2015 54692 170 ekaruk 32
Расширение «Быстрая проверка кода» для конфигурации 1С:Автоматизированная проверка конфигураций
Расширение для конфигурации «1С:Автоматизированная проверка конфигураций», позволяющее проверять произвольный код.
26.03.2019 26051 67 Bazil 34
Настройка отладки на сервере 1С
Обработка для настройки отладки на сервере, включение отладки COM-соединений и отладки Web-сервисов.
26.03.2019 37466 165 frkbvfnjh 44
Методика оптимизации программного кода 1С: проведение документов
Описание простого метода анализа производительности программного кода 1С, способов его оптимизации и оценки результатов в виде числовых показателей прироста производительности. Не требует сторонних программных продуктов, используются только типовые возможности платформ 1С. Методика проверена на линейке платформ начиная с 1С:Предприятие 8.2 (обычные формы, управляемые формы). Позволяет ускорить проведение проблемных документов в 3 и более раз, провести проверку корректности формирования проводок оптимизированным кодом и подтвердить результаты оптимизации реальными замерами производительности в режиме предприятия. К публикации приложены демонстрационные базы для режимов обычного и управляемого приложения на платформе 1С:Предприятие 8.3 (8.3.9.2033).
19.03.2019 31645 21 dmitrydemenew 85
[x1c.ru] 1CDBin: Работа с файлами *.1CD на низком уровне средствами языка 1С с возможностью чтения таблиц (поддерживается формат 8.3.8.0) Промо
Обработка позволяет просматривать файловые базы 1CD на низком уровне средствами встроенного языка. Реализована часть функциональности Tool_1CD, но на языке 1С Предприятия. Показываются таблицы, параметры таблиц, поля таблиц, записи таблиц, значения полей BLOB, есть 16-ричный просмотр страниц базы и консоль кода. Можно использовать для изучения структуры файлов 1CD, просмотра баз 1CD для выявления повреждений, создания своих обработок для выгрузки данных без открытия исследуемой базы в 1С:Предприятии.
07.10.2014 62896 392 GusevNA 78
Инструктор. Прототип инструмента создания быстрых пользовательских инструкций
Прототип дружелюбного и эффективного инструмента для написания пользовательских экспресс-инструкций. Задействована штатная утилита Windows, о существовании которой многие не знают и которая умеет делать огромную работу по логированию действий и снятию скриншотов на всех ПК с Windows (начиная с версии Win7). «Инструктор» не требует никакой установки и дополнительных библиотек! Это означает, что инструмент будет работать и на домашнем ПК и на «чужом ноутбуке» и на терминальном win-сервере у заказчика, где ваши права сильно ограничены. Вы просто подключаете легкую файловую базу 1С и получаете инструмент по снятию скриншотов с интересной функциональностью.
15.02.2019 18598 49 ROM_NN 11
Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.
09.01.2019 62163 269 informa1555 236