1c типовая консоль отчетов параметры

Обновлено: 03.07.2024

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Поговорим об особенностях формирования внешних отчетов в программе 1С Бухгалтерия 8 без применения схемы компоновки информации. За исходную информацию примем необходимость: «Составить отчет по сч. 62 бухучета , в котором в разрезе Контрагентов и их Договоров станут отражаться обороты за определенный период».

Создание внешнего отчета

Прежде всего, перейдем в режим Конфигуратора , выберем подраздел Файл, после кликнем на значок Новый документ или слово Новый, и создадим файл внешнего отчета.


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


Создание макета внешнего отчета

Для создания отчета в 1С Бухгалтерия 2.0 понадобится шаблон для вывода информации, или, другими словами, макет, в котором будут составляться таблицы, задаваться необходимые параметры и т.д. Для добавки шаблона кликаем на раздел Макеты, находящийся в дереве мета-данных отчета, после – на Добавить. При формировании макета определяем вид Табличный документ.


В шаблоне – четыре основных части:

  1. Шапка – в которой станет располагаться название отчета, временной отрезок, за который он создан, шапка таблицы.
  2. ДанныеКонтрагент – здесь будет находиться информация по контрагентам в таблице.
  3. ДанныеДоговорКонтрагента – тут мы станем указывать информацию по соглашению с контрагентом, также в таблице.
  4. Подвал – часть предназначается для указания итоговых параметров по всему отчету для Расхода и Прихода.

Начнем формировать части шаблона. Для этого выделяем необходимое число строк, после чего:

  • Нажимаем одновременно сочетание клавиш «N + Shift + Ctrl»;
  • Или кликаем на Назначить имя, расположенное в меню Имена в разделе Меню Таблица.

В Шапке прописываем название документа: Обороты сч. 62. Используя инструмент Границы, рисуем шапку отчета, после – задаем параметры. Последние позволяют указывать в отчете необходимые сведения. Но об этом мы поговорим позднее.

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


В результате название параметра в ячейке окажется окруженным скобками (<>). Вид получившейся Шапки должен быть таким:


В части ДанныеКонтрагент задаем параметры для указания названия контрагента, и для Расхода и Прихода по сч. 62. С этой целью используем инструмент Границы, оформляя часть как строку таблицы.


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


В части Подвал указываем параметры для результатов Расхода и Прихода.


В результате должен появиться шаблон следующего вида:


Создание формы отчета

Форма необходима для появления кнопки Формировать, указания срока формирования и внесения информации. Получить ее можно, перейдя к дереву с мета-данными и выбрав в нем раздел Форма. Кликайте на Добавить. На 1-ой странице конструктора для создания форм никакие корректировки не нужны. Кликайте сразу на Далее.


На новой странице указывайте для размещения на форме два реквизита – КонецПериода и НачалоПериода .


В результате будет показана форма следующего вида:


Этот вид формы нам не подходит, изменим его:

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

В результате указанных действий форма выглядит так:


Программирование

Переходить к программированию можно после формирования формы. Выводим окно выбора периода. Нажимаем на кнопку правой кнопкой мышки, переходим в раздел Свойства – здесь выбираем События (в этом меню, используя символ лупы, в модуле формы мы создадим процедуру Кнопка-1Нажатие).


Для переключения между модулем и самой формой можно использовать расположенные в нижней части закладки.


Вызвать окно выбора периода можно, используя стандартный модуль ОбработчикНастройкаПериодаНажатие , расположенный в меню РаботаСДиалогами . Здесь в качестве параметров необходимо передать отчетные реквизиты КонецПериода и НачалоПериода .

Приступаем к программированию – нам нужен код для формирования и вывода отчета. Используем уже имеющуюся процедуру КнопкаСформироватьНажатие . Она станет осуществляться при клике на Сформировать.

Прежде всего, нам нужна переменная для поля таблицы-документа, в котором будут указываться данные.

ТабДок = ЭлементыФормы . ТабДок

Создался шаблон. Используя ПолучитьМакет (< ИмяМакета >), в параметр ему присвоим имя шаблона. При существовании такого шаблона, система отыщет его.

Макет = ПолучитьМакет («Макет»)

Оформляем переменные для всех областей шаблона. Используем макет ПолучитьОбласть (< ИмяОбласти >).

ОбластьШапка = Макет. ПолучитьОбласть («Шапка»)

ОбластьПодвал = Макет. ПолучитьОбласть («Подвал»);

ОбластьДанныеДоговор =Макет. ПолучитьОбласть (« ДанныеДоговор »)

ОбластьДанныеКонтрагент = Макет. ПолучитьОбласть (« ДанныеКонтрагент »).

Проводим очистку поля таблицы-документа. После этого каждый новый сформированный отчет станет удалять прежнюю информацию.

По завершению инициализации переменных, начинаем по очереди заполнять и выводить части шаблона – с Шапки. У Шапки есть КонецПериода и НачалоПериода – зададим тут показатели периода формирования документа. С этой целью используем Параметры области макета.

КонецПериода = ОбластьШапка .Параметры. КонецПериода

НачалоПериода = ОбластьШапка .Параметры. НачалоПериода

Другие действия с частью не нужны: убираем Шапку в поле таблицы-документа.

ТабДок .Вывести( ОбластьШапка )

Пишем запрос для базы данных, который позволит получать обороты по сч. 62 из бух . регистра Хозрасчетный. Указываем переменную для расположения запроса.

Запрос = новый Запрос.

Перенесем необходимые параметры в запрос перед написанием текста. Мы создаем запрос по сч. 62 бухучета , значит, прежде всего, нам нужен параметр для него.

Запрос. УстановитьПараметр («Счет62», ПланыСчетов .Хозрасчетный. НайтиПоКоду («62»)).

Теперь в запрос нужно перенести период создания отчета. Помните, что для периода формирования существуют соответствующие реквизиты. Перенесем их как параметры.

Запрос. УстановитьПараметр (« КонецПериода », КонецПериода )

Запрос. УстановитьПараметр (« НачалоПериода », НачалоПериода )

Используя конструктор запросов, создаем текст запроса. Рекомендуем отказаться от попытки написания запросов вручную, и всегда использовать конструктор, который не может допустить ошибку и опечатку. Вы сэкономите силы и время даже при создании наиболее сложных запросов. В коде указываем:

Далее наводим курсор мышки между кавычками, кликаем правой клавишей мышки и определяем строку Конструктор запроса. Откроется нужное нам окошко.


Сейчас нужно указать необходимую таблицу базы данных утилиты. Наша таблица должна быть виртуальной - Обороты регистра бухгалтерии Хозрасчетный. В окошке конструктора она располагается слева.


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


Указываем параметры и периоды , которые ранее переносились в запрос. Для того, чтобы в тексте запроса можно было применить параметр, необходимо перед его названием указывать & (знак амперсанда ).


Теперь нужно оформить условие по сч. 62 бухгалтерского учета. С этой целью ищем УсловиеСчета в параметрах виртуальной таблицы, и пишем условие в нем.

Счет В ИЕРАРХИИ (&Счет62)

Кроме того, можно использовать Конструктор для формирования условий. Кликните на кнопку с 3 точками.


После этого на виртуальную таблицу больше не нужно будет накладывать никаких условий. Дальше кликаем на кнопку ОК, расположенную в окошке с параметрами виртуальной таблицы. После – определяем необходимые нам поля из таблички Хозрасчетной.Обороты. в частности требуются Расход и Приход, Договор контрагента и Контрагент. Просмотреть перечень полей, возможных в выбранной сейчас таблице, можно, кликнув на значок «+» (он располагается около наименования таблицы). Переносим необходимые поля в правую часть конструктора запросов (название части аналогичное – ПОЛЯ). Если вы перейдете в план счетов бухучета , то обнаружите, что для сч. 62 аналитика по ДоговоруКонтрагента — Субконто2, а по Контрагенту — это Субконто1.


Соответственно, из полей виртуальной таблички нам нужны Субконто2 и Субконто1. В связи с необходимостью Расхода и Прихода по сумме, дополнительно треуются поля СуммаОборотКт и СуммаОборотДт .


Оформив наименования определенных сейчас полей. С этой целью необходимо открыть меню Объединения/Псевдонимы, и указать необходимые названия полей.


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


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

| ХозрасчетныйОбороты .Субконто1 КАК Контрагент,

| ХозрасчетныйОбороты .Субконто2 КАК ДоговорКонтрагента ,

| ХозрасчетныйОбороты . СуммаОборотДт КАК Приход,

| ХозрасчетныйОбороты . СуммаОборотКт КАК Расход

| РегистрБухгалтерии .Хозрасчетный.Обороты(& НачалоПериода , & КонецПериода , , Счет В ИЕРАРХИИ (&Счет62), , , , ) КАК ХозрасчетныйОбороты

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

ВыборкаКонтрагент = Запрос.Выполнить().Выбрать( ОбходРезультатаЗапроса . ПоГруппировкам );

В результате у нас будут записи с результатом по каждому контрагенту.

Прежде, чем обходить информацию выборки, используя цикл, инициализируем переменные, которые предназначаются для расчета всех результатов отчета:

Для корректного вывода данных с учетом иерархии и разворотами по знаку «+», указываем начало автоматической группировки строчек документа-таблицы:

Все предварительные работы завершены. Следует начать обходить итоги запроса. Для обхода потребуется использовать цикл Пока:

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

Аннулируем параметры Расход и Приход области ДанныеКонтрагент в самом начале цикла. Что это нам даст? Предположим, что по поставщику, назовем его Х, расход составляет 10, а приход 20. У следующего за ним поставщика, назовем его Н, расход и приход отсутствуют полностью. При аннулировании параметров Расхода и Прихода в такой ситуации в строке по поставщику Н окажутся данные поставщика Х – расход 10 и приход 20.

ОбластьДанныеКонтрагент .Параметры.Приход = 0;

ОбластьДанныеКонтрагент .Параметры.Расход = 0;

Теперь оформляем данными элемента выборки часть ДанныеКонтрагент

ЗаполнитьЗначенияСвойств ( ОбластьДанныеКонтрагент .Параметры, ВыборкаКонтрагент );

Оформив данные, можно выводить часть в Табличный документ. Т.к. мы работаем с автоматическим группированием строчек, необходимо определить степень строки в группировке (в нашем случае у отчета окажется 2 степени, для договоров контрагентов – второго уровня, для самих контрагентов – первого уровня).

ТабДок .Вывести( ОбластьДанныеКонтрагент ,1);

После для указанного контрагента нужно выполнить выборку по его соглашениям:

ВыборкаДоговорКонтрагента = ВыборкаКонтрагент .Выбрать( ОбходРезультатаЗапроса . ПоГруппировкам );

Используем цикл Пока для выполнения обхода:

Пока ВыборкаДоговорКонтрагента .Следующий() Цикл

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

ОбластьДанныеДоговор .Параметры.Приход = 0;

ОбластьДанныеДоговор .Параметры.Расход = 0;

ЗаполнитьЗначенияСвойств ( ОбластьДанныеДоговор .Параметры, ВыборкаДоговорКонтрагента );

ТабДок .Вывести( ОбластьДанныеДоговор ,2);

Кроме того, к переменным расчета итоговых показателей по Расходу и Приходу в данном цикле присоединим нынешние показатели.

ИтогоПриход = ИтогоПриход + ВыборкаДоговорКонтрагента .Приход;

ИтогоРасход = ИтогоРасход + ВыборкаДоговорКонтрагента .Расход;

После этого вынос данных в части ДанныеДоговорКонтрагент и ДанныеКонтрагент будет закончен. Потребуется только окончить автоматическую группировку строчек таблицы-документа:

Циклы, ответственные за демонстрацию информации в частях документа ДанныеДоговорКонтрагент и ДанныеКонтрагент , целиком станут иметь следующий вид:

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

ОбластьДанныеКонтрагент .Параметры.Приход = 0;

ОбластьДанныеКонтрагент .Параметры.Расход = 0;

ЗаполнитьЗначенияСвойств ( ОбластьДанныеКонтрагент .Параметры, ВыборкаКонтрагент );

ТабДок .Вывести( ОбластьДанныеКонтрагент ,1);

ВыборкаДоговорКонтрагента = ВыборкаКонтрагент .Выбрать( ОбходРезультатаЗапроса . ПоГруппировкам );

Пока ВыборкаДоговорКонтрагента .Следующий() Цикл

ОбластьДанныеДоговор .Параметры.Приход = 0;

ОбластьДанныеДоговор .Параметры.Расход = 0;

ЗаполнитьЗначенияСвойств ( ОбластьДанныеДоговор .Параметры, ВыборкаДоговорКонтрагента );

ТабДок .Вывести( ОбластьДанныеДоговор ,2);

ИтогоПриход = ИтогоПриход + ВыборкаДоговорКонтрагента .Приход;

ИтогоРасход = ИтогоРасход + ВыборкаДоговорКонтрагента .Расход;

На завершающем этапе необходимо перенести итоговые сведения в часть Подвал и перевести сам Подвал в таблицу-документ:

ОбластьПодвал .Параметры. ИтогоПриход = ИтогоПриход ;

ОбластьПодвал .Параметры. ИтогоРасход = ИтогоРасход ;

ТабДок .Вывести( ОбластьПодвал );

После этого процедура формирования внешнего отчета в программе 1С Бухгалтерия 2.0 версия 8 без применения схемы компоновки данных будет полностью окончена. С этой минуты отчет можно будет создавать, используя рабочий режим утилиты 1С версия 8, и добавлять в справочник ВнешниеОбработки .

Отчеты на СКД в типовых решениях частенько сделаны очень сложно. Чтобы понять, почему они выдают какой-то результат, необходимо взять запросы наборов данных или схему компоновки данных целиком и "перебраться" с ними в консоли запросов или консоли отчетов СКД, указав значения всех параметров. Но беда в том, что готового запроса или схемы компоновки в конфигураторе нет, т.к. сложные отчеты собираются программно по кусочкам, а параметров много и к тому же часть параметров устанавливается функциями общих модулей, модулей менеджеров и т.п.

Я предлагаю набор функций, которые через режим отладки помогут быстро "перебраться" в консоли запросов или отчетов. Эти функции находятся в расширении в общем модуле ОтладкаСКД.

Подключаем расширение, перезапускаемся, появляется подсистема "Отладка СКД"

На примере демо-базы Бухгалтерии возьмем отчет "Задолженность покупателей по срокам долга". В этом отчете запрос набора данных собирается каждый раз в зависимости от количества интервалов, заданных в настройках, при этом значения параметров в запросе очень много.


Посмотрим наименования наборов данных в схеме компоновки данных:

-"ОсновнойНабор"(запрос);

- "ПросроченнаяЗадолженность" (таблица значений);

- "ДанныеПервичныхДокументов" (запрос).


I Шаги для перехода к отладке отчета в консоле запросов

  1. Определим, где ставить точку остановки, используя замер производительности.
  2. В указанной точке вызовем функцию для получения структуры запроса одного из набора данных с параметрами.
  3. Перейдём в консоль запросов и выполним запрос.

1. Определяем место точки остановки отладки в Конфигураторе

В конфигураторе в разделе "Отладка" подключаемся к серверному сеансу для отладки. Будем "ловить" место, где, в конечном итоге, выполняется отчет. Не забываем в разделе "Автоматическое подключение" подключится к фоновым заданиям, т. к. отчеты на СКД "любят" выполняться фоновыми заданиями.


Включаем "Замер производительности" и нажимаем "Сформировать" в отчете. Отключаем "Замер производительности", смотрим и ищем нужное место


В итоге видим, что реальное выполнение отчета происходит в общем модуле "Бухгалтерские отчеты" , переходим туда и ставим точку остановки именно там, как можно ближе к методу КомпоновщикаМакета.Выполнить, чтобы не пропустить какие-либо промежуточные процедуры и функции, которые могут изменить настройки.

2. Получаем запрос с установленными параметрами в виде XML

Для того, чтобы получить в итоге конечный запрос, необходимо иметь "Схему компоновки данных" и "Компоновщик настроек данных" (точнее Настройки компоновщика). Внимательно посмотрев текст модуля в месте точки остановки, видим эти переменные. Включаем Табло отладки и пишем:


ОтладкаСКД.ЗапросВСтрокуXML(ОтладкаСКД.ПолучитьЗапросНабора(СхемаКомпоновкиДанных,КомпоновщикНастроек,"ОсновнойНабор"))

Видим, что в 1-ой записи получили запрос набора данных "ОсновнойНабор" (тип "Запрос"), а во 2-ой тот же запрос набора данных "ОсновнойНабор" (тип "Запрос") в XML.

Копируем строку XML и запускаем консоль запросов

3. В "Консоле запросов" выполняем запрос

Вставляем скопированную строку XML в текст запроса (хотя это не совсем текст запроса, но это трюк консоли) и нажимаем в "Еще" "Заполнить из XML"


И о чудо ! Строка ХМL превратилась в текст запроса и в параметры с установленными значениями.

Если всё это делать "руками", то установка значений параметров займёт много времени с одной стороны, а с другой можно легко пропустить какое-либо значение в параметрах, например в списках, что приведёт к неверному (другому) результату запроса.

Запрос выполнился, всё работает, дальше уже разбираемся с запросом.


II Шаги для перехода отлаживать отчет в консоли отчетов СКД

  1. Определим, где ставить точку остановки, используя замер производительности.
  2. В указанной точке вызовем функцию для получения схемы компоновки в XML и настроек компоновщика в XML.
  3. Перейдём в консоль отчетов СКД и добавим там отчет, вариант отчета.

1.Определим, где ставить точку остановки, используя замер производительности

Этот шаг ничем не отличается от ранее описанного для работы с консолью запросов

2.Получение схемы компоновки данных и настроек компоновщика в XML

Поставив точки остановки и остановившись при выполнении отчета, пишем в "Табло отладки"


Получаем 2 строки XML:

- Схема компоновки данных

- Настройки компоновщика (вариант отчета)

Копируем эти строки в 2 файла. Создаём здесь в конфигураторе 2 текстовых файла и сохраняем например "СхемаСКД.txt" и "НастройкиСКД.txt"

3. Консоль отчетов СКД и добавим там отчет, вариант отчета.

Открывает стандартную консоль отчетов СКД с ИТС

Добавляем "Вариант отчета" и кнопку "Ещё-Загрузить настройки", выбираем файл ""НастройкиСКД.txt"


Всё готов отчет, все параметры и настройки заданы.


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

08.01.2019 Добавлена возможность в консоли отчетов СКД загружать данные внешних наборов данных, используемых в схеме СКД

Отчет не заработает, если ему не передать таблицу значений в качестве внешнего набора данных. Имя этого набора "Просроченная задолженность" (на скриншотах выше это можно увидеть). К сожалению в консоли отчетов СКД от 1С нет стандартной возможности передать эти внешние наборы, поэтому пришлось немного её доработать. Добавлена новая кнопка "Внешние наборы данных" (доработанная консоль в расширении).

Как это делаем по шагам:

1. Отладкой находим место, где эти таблицы внешних наборов собираются и передаются на выполнение.

В том же модуле БухгалтерскиеОтчетыВызовСервера, где мы нашли метод выполнения макета компоновки, чуть ниже находим строку, в которой передаются внешние наборы данных на выполнение процессору компоновки, ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, и переменную ВнешниеНаборыДанных, эта структура в которой содержатся таблицы для внешних наборов


2. Выгружаем эти таблицы в XML

С помощью функции ОтладкаСКД.ВнешниеНаборыДанныхВXML , конвертируем переменную ВнешниеНаборыДанных в XML. Сохраняем эту строку в текстовый файл, например ВнешниеНаборыСКД.txt


3. Загружаем внешние наборы данных в консоль , выполняем отчет.

Теперь возвращаемся в консоль отчетов СКД из расширения и вызываем пункт "Внешние наборы данных" и выбираем файл ВнешниеНаборыСКД.txt




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

Закрываем окно и нажимаем НАКОНЕЦ "Сформировать" и отчет формируется.


16.01.2019 Добавлена в расширение для отладки отчетов функция, которая позволяет во время отладки в Конфигураторе выгрузить отлаживаемый отчет во внешний отчет (в файл) со всеми настройками в момент точки остановки:

ОтладкаСКД.Клиент.СгенерироватьВнешнийОтчет(ПолныйПутьКОтчету = Неопределено, ДанныеСКД)

. Внимание: Данная функция работает только для сеанса "Толстый клиент"

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

Далее отчет можно запускать как отдельный внешний отчет.

ИТОГ: С помощью функций расширения "ОтладкаСКД" можно быстро начать отлаживать довольно сложные отчеты СКД в различных консолях или просто разобраться в ситуации прямо в отладке.

На текущий момент перечень функций в расширении:

Функция ПолучитьМакетаКД - Возвращает макет выполнения компоновки данных

Функция ПолучитьЗапросНабора - Возвращает запрос с текстом запроса и значениями параметров из компоновщика

Функция ПолучитьЗапросыНаборов - Возвращает структура запросов всех наборов данных с примененными настройками и значениям параметров компоновщика

Функция ПолучитьРезультатЗапросаНабора - Возвращает результат запроса набора данных с примененными настройками и параметрами компоновщика

Функция ПолучитьРезультатыЗапросовНаборов - Возвращает структуру результатов запросов всех наборов данных схемы компоновки данных с примененными настройками компоновщика

Функция ТабДокВXML - Возвращает результат выполнения СКД в табличный документ в XML, далее табличный документы можно получить обработкой "Табличный документ(Отладка СКД)", включенной в расширение

Функция ПолучитьТабДок - Возвращает результат выполнения СКД в табличный документ

Функция ПолучитьТЗ - Возвращает результат выполнения СКД в таблицу значений

Функция ПолучитьДЗ - Возвращает результат выполнения СКД в дерево значений

ВнешниеНаборыДанныхВXML - возвращает таблицы для внешних наборов данных в XML

СгенерироватьВнешнийОтчет(ПолныйПутьКОтчету, ДанныеСКД) - выгружает во внешний отчет отлаживаемый отчет со всеми настройками.

включены вспомогательные функции из БСП также (в БСП они в общем модуле ОбщегоНазначения) для конфигураций без БСП:

Функция ЗначениеВСтрокуXML

Функция ЗначениеИзСтрокиXML

Функция ЗапросВСтрокуXML

Ещё чуть-чуть доработана "Консоль запросов", добавлено при создании параметров поддержка типов "Массив", "Список значений", "Стандартный период". Без этого может выдавать ошибку по кнопку "Заполнить из XML" при определенных параметрах компоновщика.

Как сделать отчет в 1С

Научимся создавать отчеты в конфигураторе 1С. Для того, чтобы создать отчет, в конфигураторе необходимо выделить ветку Отчеты, вызвать правой клавишей мышки контекстное меню и выполнить команду Добавить.

Как сделать отчет в 1С

Как сделать отчет в 1С

На закладке Подсистемы редактора отчета можно указать подсистему, в которую будет входить отчет.

Подсистемы для отчета в 1С

А на закладке Права указать, у каких ролей будет право на использование и просмотр отчета.

Права на отчет в 1С

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

В этой статье я покажу пример создания простого отчета с помощью СКД.

Открыть схему компоновки данных 1С

Конструктор макета в 1С

Будет создана схема компоновки данных, в которой добавим набор данных Запрос.

Набор данных Запрос в СКД

Закончив работать с конструктором запроса, нажмем кнопку ОК, в результате добавятся поля из запроса в таблицу Поля схемы компоновки данных, и заполнится текст запроса в поле Запрос.

Схема компоновки данных в 1С

Осталось перейти в настройки, и создать группировку.

Настройки схема компоновки данных в 1С

В группировке выберем единственное поле.

Настройки схема компоновки данных в 1С

Выбранное поле появится в дереве Отчет закладки Настройка, и, в принципе, наш отчет будет готов.

Настройки схема компоновки данных в 1С

Заметьте, созданная схема компоновки появится в редакторе отчета на закладке Макеты.

Схема компоновки данных отчета в 1С

Наш отчет готов, осталось озаботиться тем, чтобы пользователь мог формировать этот отчет.

Вывести отчет в 1С

Проверим, сможет ли наш пользователь увидеть этот отчет.

Откроем командный интерфейс подсистемы, в которую включили отчет при его создании.

Открыть командный интерфейс 1С

Отчет должен быть в группе Панель Действий.Отчеты.

Отчет в командном интерфейсе 1С

Чтобы отчет был в этой группе, должно выполняться несколько условий.

Первое, в редакторе отчета на закладке Команды должен быть установлен флаг «Использовать стандартные команды».

Использовать стандартные команды отчета 1С

Второе, созданная схема компоновки данных должна быть указана в свойстве «Основная схема компоновки данных» .

Основная схема компоновки данных отчета 1С

Если все вышеуказанное настроено, а также у пользователя имеется роль с правом на просмотр этого отчета и подсистемы, в которую он входит, то сделанный отчет появится в группе отчеты нужной подсистемы.

Группа отчеты подсистемы 1С

И его можно будет сформировать.

Отчеты 1С

Внешний отчет 1С

Создать внешний отчет в 1С

Второй способ – сделать из существующего отчета в конфигураторе новый внешний отчет.

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

Откроется окно «Выбор вида документа», в котором следует указать «Внешний отчет», а после нажать кнопку ОК.

Создать внешний отчет в 1С

Откроется знакомый нам редактор отчёта, с которым работаете так, как работаете с редактором обычного отчёта.

Редактор внешнего отчета в 1С

После того, как вы выполните все работы по созданию отчёта, следует его сохранить на жесткий диск. Для этого нужно или нажать на кнопку «Сохранить» панели «Стандартная», или выполнить команду «Сохранить» в меню Файл, или нажать комбинацию клавиш Ctrl + S. Как результат, откроется окно «Сохранить как…», в котором нужно выбрать место, где будет находиться файл вашего внешнего отчёта.

Сохранение внешнего отчета в 1С

Также, можно создать внешний отчет из отчета, который уже был разработан в конфигураторе. В этом случае, необходимо выделить нужный отчет в дереве метаданных, вызвать правой клавишей мышки контекстное меню, и выполнить команду «Сохранить как внешнюю обработку, отчет..» этого меню.

Сохранение внешнего отчета в 1С

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

Сохранение внешнего отчета в 1С

Открыть внешний отчет в 1С

Для того, чтобы пользователь имел возможность открывать внешний отчет из клиентского приложения «1С: Предприятия 8.3», необходимо, чтобы у роли этого пользователя было включено право «Интерактивное открытие внешних отчетов».

Интерактивное открытие внешнего отчета 1С

Если это право включено, то внешний отчет в 1С можно открыть, используя команду «Открыть» подменю файл, которое находится в меню «Сервис и настройка» (начиная с версии платформы 1С 8.3.14).

Открыть внешний отчет в 1С

В окне «Открыть» нужно выбрать файл внешнего отчета (с расширением erf).

Открыть внешний отчет в 1С

Выйдет предупреждение безопасности.

Открыть внешний отчет в 1С

И если вы нажмете «Да», то откроется внешний отчет, с которым можно уже работать.

Открыть внешний отчет в 1С

Другие статьи по конфигурированию в 1С:

Программировать в 1С за 11 шагов

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Основы разработки в 1С такси

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму
.

можно оплатить вручную:

Читайте также: