новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

Консоль компоновки данных

  • Добавить свою публикацию
  • для этого требуется регистрация

 

[Скачать обработку]

Целевая аудитория обработки – программисты и продвинутые пользователи , занимающиеся анализом данных. Обработка предназначена:

  • Для выборки, анализа , сведения воедино разнообразных данных, получаемых из 1с 8.x или внешних источников
  • Отладки запросов , схем компоновки данных, построителей отчетов
  • Написания отчетов без использования конфигуратора
  • Написания и исполнения фрагментов кода без использования конфигуратора
  • Подключения написанных отчетов «на лету» к дополнительному меню
  • Многие другие возможности

Обработка состоит из трех основных форм-форм редакторов:

  • Запросы
  • СКД (Схемы компоновки данных)
  • Объекты

Все три формы тесно интегрированы друг с другом, могут использоваться как вместе так и независимо. При этом реализована концепция «выборки всего из всего» - например результат исполнения запроса и схемы компоновки данных можно скомпоновать в одном или нескольких объектах, получить некую сводную информацию, которую использовать в новом запросе и т.д.

Термин «объекты» взят по аналогии с названием внешнего источника данных в схеме компоновки данных. Но кроме получения набора данных, объект – это просто некий произвольный фрагмент исполняемого кода.

Форма «Запросы».

Эта форма представляет собой один из вариантов реализации консоли запросов, предназначение которой – написание запроса, его исполнение и анализ полученных данных.

 

Внешний вид формы запросов

Но в отличие от стандартной и многих других обработок добавлены некие интерфейсные возможности, повышающие удобство работы:

  • Каждый запрос пишется на отдельной закладке
  • Параметры перед заполнением подставляются автоматически, значения их после смены закладки, закрытия формы или изменения текста запроса сохраняются
  • Результат исполнения выводится на отдельной закладке и имеет дополнительные средства для анализа (итоги колонок, количество строк/столбцов, фильтр по полученным значениям и т.д)
  • Текст запроса можно «прогнать через построитель отчета» , что позволяет не изменяя текста запроса, наложить дополнительные отборы или изменить список полей (закладка построитель отчета у текущего запроса)
  • На закладке «список» можно настроить состав и внешний вид закладок запросов, наложить отбор на список запросов, отключить видимость отдельно взятого запроса-закладки.
  • Ведется история всех исполняемых и удаляемых когда-либо запросов
  • Результаты исполнения и установленные фильтры по результатам не сбрасываются при смене закладок запросов, что позволяет их визуально сравнивать без повторного выполнения запроса
  • Запрос после написания можно поместить в схему компоновки данных (в созданную ранее на форме «СКД» или новую). При этом запрос и схема компоновки станут «связанными» - изменения, вносимые в запрос или СКД, будут синхронизироваться.
  • Результат запроса можно поместить в объект для дальнейшего анализа
  • Имеется система алиасов,( алиас – символьный идентификатор запроса без пробелов и спецсимволов) позволяющая писать запросы от простого к сложному, поэтапно. А также использовать результаты работы одного запроса в качестве источника данных для другого.

 

Система алиасов формы запросов

В тексте запроса доступны три варианта алиасов:

  • #Алиас
  • #Алиас_Результат
  • #Алиас_Текст

Зачем все это? Предположим на закладке результата у вас данные запроса, который выполняется 10 минут или более.

Предположим возникла необходимость сгруппировать данные по каким-либо полям. Чтоб это сделать вам нужно немного подправить текст запроса, но потом еще ожидать 10 или более минут пока он выполнится. Чтобы избежать ненужного ожидания вы можете на новой вкладке обратиться к полученным результатам как к временной таблице. Для этого вкладке, содержащей результат, необходимо присвоить алиас.

 

Другая ситация - у вас на двух разных вкладках есть запросы, которые необходимо объединить в новый запрос. Обычно вы копировали текст одного запроса, объединяли с текстом другого. Потом заново настраивали параметы. Присвоив алиасы обоим запросам, можно значительно ускорить описанные выше действия - особенно это актуально когда параметров много или они содержат большие списки значений.

Итак, у формы запросов есть три вида алиасов: #Алиас, #Алиас_Текст, #Алиас_Результат (вместо слова "Алиас" вы присваиваете любой идентификатор в свойствах вкладки). Их отличия в следующем:

  • #Алиас - запрос выполняется и помещается во временную таблицу. Вы используете ее новой выборке.
  • #Алиас_Текст - вместо алиаса подставляется полный текст запроса с другой вкладки (выбрать из (выбрать)). Предочтительно, если вам в итоге надо использовать запрос в конфигураторе.
  • #Алиас_Результат - полученный ранее результат запроса помещается во временную таблицу. Не надо ожидать пока запрос, соответствующий алиасу, снова выполнится. Исключением является случай, когда результат пуст - алиасный запрос выполнится принудительно.

Для примера создадим новый запрос:

ВЫБРАТЬ * ИЗ Справочник.Валюты

Установим запросу алиас «ВыборкаВалют». Создадим новый запрос, в котором напишем:

ВЫБРАТЬ * ИЗ #ВыборкаВалют

При его выполнении на самом деле будет исполнен следующий текст:

ВЫБРАТЬ * ПОМЕСТИТЬ CлучайноеИмяВременнойТаблицы ИЗ Справочник.Валюты ; ВЫБРАТЬ * ИЗ CлучайноеИмяВременнойТаблицы ; УНИЧТОЖИТЬ CлучайноеИмяВременнойТаблицы

При записи

ВЫБРАТЬ * ИЗ (#ВыборкаВалют_Текст) КАК ВыбратьВалюту

Будет исполнен запрос (обратите внимание, что в этом случае #Алиас_текст берется в скобки ):

ВЫБРАТЬ * ИЗ (ВЫБРАТЬ * ИЗ Справочник.Валюты) КАК ВыбратьВалюту

Кроме того возможно связать запрос и объект через параметр запроса. Для этого надо в тексте запроса поместить внешнюю таблицу – параметр во временную таблицу:

ВЫБРАТЬ * ПОМЕСТИТЬ ВременнаяТаблица ИЗ &Объект КАК Объект

И использовать ее далее обычным образом.

На закладке параметров надо у параметра «Объект» установить флажок «Выражение» и вписать в значение параметра алиас объекта в виде #АлиасОбъекта (возможна запись #АлиасОбъекта_ТаблицаЗначений). Объект должен возвращать в результате таблицу значений.

Форма СКД (Схемы компоновки данных)

Переключение на форму СКД осуществляется с помощью кнопки «Схемы компоновки данных» на панели формы запросов и объектов.

Использование схем компоновки данных предполагает наличие базовых знаний по этому вопросу.

В левой части находится список редактируемых схем с подчиненными наборами данных, в правой части – стандартные настройки компоновщика настроек текущей схемы компоновки данных.

 

Внешний вид формы запросов

Отличительные особенности редактора СКД следующие:

  • Возможно редактировать сразу несколько вариантов настроек для выбранной схемы компоновки.
  • В списке видны все наборы данных СКД, что позволяет перейти к непосредственному редактированию набора данных (запроса или объекта) на соответствующей форме. А также добавить новый набор данных.
  • При добавлении объекта в схему компоновки, поля будут добавлены автоматически.
  • Использование отбора для списка отображаемых схем компоновки.
  • Вывод результата в табличное поле (закладка «Результат») и использование стандартной расшифровки
  • Вывод результата в таблицу значений и выполнение с ней действий, аналогичных действиям с результатом запроса
  • Возможно поместить результат исполнения в объект
  • Возможно поместить оформленную схему компоновки в виде отчета в дополнительное меню «налету»

 

Форма объектов

Форма объектов предназначена для:

  • Выполнения фрагментов кода на языке 1С предприятия без использования конфигуратора
  • Формирования внешних данных для схем компоновки данных и запросов
  • Загрузки и обработки данных из внешних файлов( .mxl, .xls, .dbf, .txt)
  • Хранения и сравнения результатов выполнения запросов и схем компоновки данных

Интерфейсно форма объектов схожа с формой запросов – каждый объект или фрагмент кода редактируется на новой закладке. Но имеется ряд существенных отличий. При написании кода можно пользоваться параметрами. Они обозначаются также как и в тексте запроса – значком «&». Смысл их в том, чтобы не писать код для вычисления этих параметров, а просто выбрать на форме на закладке «параметры».

Например, нам необходимо выбрать все элементы справочника номенклатуры, подчиненные группе «Стулья офисные». На закладке кода можно написать :

Выборка = Справочники.Номенклатура.Выбрать (&Стулья);

Пока Выборка.Следующий() Цикл

……

КонецЦикла;

На закладке параметров появится параметр «Стулья», значение которого надо будет выбрать интерактивно.

Кроме того у объектов имеются еще две закладки – Таблица значений и Табличное поле. Они могут являться как источниками данных фрагмента кода, так его приемниками. Для наглядности после выполнения фрагмента кода можно переключаться либо на таблицу значений, либо на табличное поле (переключатель в верхней части закладки кода).

Можно заполнить таблицу значений вручную (в действиях с колонками имеется редактор колонок), либо перенести данные из табличного поля, в которое они предварительно загружены, например , из файла и т.д.

Доступ к таблице значений и табличному полю возможен через алиасы #ТаблицаЗначений и #ТабличноеПоле соответственно. Можно обратиться к таблице значений/табличному полю другого объекта (#АлиасДругогоОбъекта_ТаблицаЗначений, #АлиасДругогоОбъекта_ТабличноеПоле).

Фрагмент кода на закладке кода выполняется в контексте функции , которая возвращает значение в переменной Результат.

ВНИМАНИЕ! Если вы используете объект качестве источника данных для СКД, то в его коде обязательно должно присутствовать присвоение возвращаемого набора данных переменной Результат .

Например, если таблица значений заполнена данными :

Результат = #ТаблицаЗначений;

У такого объекта должен быть обязательно установлен алиас – в СКД это будет имя объекта, содержащего данные. Если объект возвращает в переменной Результат некое значение , то его алиас можно использовать в коде другого объекта. Так как во фрагменте кода нельзя использовать выражение «возврат » вместо него можно воспользоваться алиасом #выход. Таблица значений и Табличное поле по умолчанию не сохраняются после закрытия формы. Чтобы их сохранить, надо включить флажок «Сохранять на диске»

Использование консоли для отладки

Часто возникает необходимость отладки запроса, построителя отчета/запроса, схемы компоновки данных с уже заполненными на какой-то момент параметрами и настройками. Или если текст запроса создается динамически. Для этого необходимо в один из глобальных модулей поместить следующий код:

Функция ОтладкаККД(Объект,НастройкиСКД = Неопределено, ВнешниеДанные = Неопределено) Экспорт
 //Если задействовано дополнительное меню
 Форма = ПолучитьФормуЗарегистрированнойВнешнейОбработки("Консоль компоновки данных",,"ФормаНастройки");
 
 //Если не задействовано дополнительное меню
 //Форма = ВнешниеОбработки.ПолучитьФорму(" -Путь к обработке консоли- КонсольКомпоновкиДанных.epf","ФормаНастройки");
 Если Форма = Неопределено Тогда Возврат Ложь; КонецЕсли;
 Форма.ОбъектДляОтладки = Объект;
 Форма.НастройкиСКДДляОтладки = НастройкиСКД;
 Форма.ВнешниеДанные = ВнешниеДанные;
 Форма.Открыть();
 
 Возврат Истина;
КонецФункции 

И далее в конфигураторе перед выполнением отлаживаемого запроса (СКД, построителя отчета) устанавливаем точку останова. В момент ее срабатывания пишем в редакторе выражений (Shift-F9): ОтладкаККД(Запрос) и нажимаем "Рассчитать". После продолжения отладки (F5) в базе откроется одна из форм консоли компоновки данных с данными (текст, отборы, настройки ) выбранного объекта отладки. Кроме этого, можно разместить вызов отладки консоли в любой форме, где она требуется. Для СКД при необходимости можно в параметрах вызываемой функции указать используемые настройки и внешние данные

Подключение отчетов к дополнительному меню

Для использования этой возможности в конфигурации должны присутствовать объекты метаданных, необходимые для организации дополнительного меню. Также во внешние формы дополнительного меню должна быть подгружен внешний отчет Универсальная форма СКД.erf. При выборе такого пункта меню схема компоновки данных передается универсальной форме СКД вместе со списком объектов для получения внешних данных (если они есть). Потом эта форма открывается у пользователя для выполнения.

Кроме того если есть метаданные, необходимые для работы дополнительного меню, становится доступными обмен элементами консоли компоновки данных в рамках одной базы. Т.е. пользователь А может выбрать пункт меню над списком элементов Файл/передача -> Передать запрос (объект / СКД), выбрать пользователя Б. Пользователь Б, открыв консоль в этой же базе, выбирает пункт Файл/передача -> Получить запрос(объект / СКД). И переданный элемент СКД окажется у него в консоли компоновки со всеми настройками.

Можно ограничить возможности пользователей для работы в консоли, если у них нет достаточной квалификации, но требуются какие-то особые выборки данных. Для этого нужно создать "Категорию метанастроек" с ИД = "ОграниченияКонсолиКомпоновкиДанных", в табличной части которой будут пользователи из справочника пользователей (в поле объект). Если пользователь есть в таблице настройки, ему запрещено редактирование кода (разрешен только просмотр), если при этом показатель в этой строке = 0 тогда запрещено и редактирование запросов. Если показатель больше 0 - редактирование СКД.

Саму внешнюю обработку,а также видеоурок для лучшего понимания возможностей консоли, можно скачать здесь

 
0
Читайте также
Обновить конфигурацию 1с
Обновить конфигурацию 1С 8.2 возможно несколькими способами
1С 8.2 программирование
Новые курсы 1С 8.2 меняют слой работы с интерфейсом
Разработки
Конфигурация 1с.
Рабочая конфигурация 1С
Рабочее место менеджера по продажам для УТ10.3, КА1.1, УПП1.3
Менеджер по продажам- рабочее место:планирование продаж и т.д.
Отчет по СФ
Отчет выводит информацию только о продажах, на которые была выписана счет-фактура
Еще от автора
≡ к списку статей