Внешние отчеты для 1с erp

Обновлено: 07.07.2024

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

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

Для реализации такой доработки нужно выполнить 3 простых шага:

Итак, имеем подсистему: "МояПодсистема".

1.Общая команда печати

Создаём команду: "ДополнительныеОбработкиМояПодсистема"

Полю Группа (Группа, в которую входит команда по умолчанию) устанавливаем значение: Панель действий.Сервис.

В модуле команды прописываем

После создания команды, её нужно добавить в состав функциональной опции: ИспользоватьДополнительныеОтчетыИОбработки

Подробно о правилах именования и размещения команд можно прочесть на сайте ИТС: Настройка глобальных дополнительных отчетов и обработок

2. Добавляем команду в новую подсистему


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

Разделы, доступные для размещения, прописаны в Общем модуле: ДополнительныеОтчетыИОбработкиПереопределяемый

В нем нужно подкорректировать экспортную процедуру

Там же находится и процедура отвечающая за размещение отчетов.

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

в ЕРП 2.4 будет выглядеть так:

Обновляемся. Добавляем внешнюю обработку в нашу новую подсистему.


Тестировалось на Платформе 8.3.13.1644 (ERP (2.4.6.188).

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Чем не устраивает БСП, которая встроена во все последние типовые?

(3) И?
Я ссылаюсь на БСП в статье в: Пункт 1.Общая команда печати

Подробно о правилах именования и размещения команд можно прочесть на сайте ИТС: Настройка глобальных дополнительных отчетов и обработок

Где в описании добавление своей подсистемы с подключением к ней внешних обработок/отчетов штатными средствами?

Или я пропустил, или такого там нет.

В чём цель размещения обработок в своей подсистеме вместо типовых? (5) Как вариант новая подсистема может вообще никак не относиться к типовому функционалу и необходима для специфического учета или ещё каких действий. Существуют ряд пользователей, которые работают только с этой подсистемой, остальные подсистемы для них не доступны. И тогда, собственно, логично , что обработки и отчеты связанные с этой подсистемой в ней же и должны размещаться. Было бы неплохо эту информацию добавить в начало публикации. Мне теперь понятно. Спасибо. Большое спасибо автору, статья помогла сэкономить время. Добавлена новая подсистема.
Есть внешний отчет(пока идет отладка новой подсистемы не добавляю его в конфигурацию).
Все сделал как вы рекомендуете.
Через доп. отчеты и обработки добавляю в новую подсистему.
В новой подсистеме в доп.отчетах - не появляется.
Если указываю другую подсистему - там все нормально. (10)
Извиняюсь. Затупил.
Надо было сделать 2 общие команды на обработки и на отчеты.

Просмотры 17642

Загрузки 0

Рейтинг 67

Создание 24.05.19 16:00

Обновление 24.05.19 16:00

№ Публикации 1065764

Тип файла Нет файла

Конфигурация Не имеет значения

Операционная система Не имеет значения

Страна Россия

Вид учета Не имеет значения

Доступ к файлу Бесплатно (free)

Код открыт Да


См. также

Аналог PIVOT в запросе 1С (как выполнить транспонирование таблицы в запросе 1С) Промо

В статье показывается простой метод реализации аналога оператора PIVOT в запросе 1С без использования соединений.

12.12.2020 4536 Eugen-S 23

Отправка ссылки на документ в обработку вызовом из формы документа, управляемая и обычная формы

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

21.09.2021 567 etmarket 1

Программное открытие отчета СКД с параметрами и отбором

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

07.08.2021 5290 Eugen-S 19

Редактор кода, запроса, . Infostart Toolkit (интеграция с MS Monaco)

Контекстная подсказка, подцветка синтаксиса в тонком клиенте. В платформе 1С редактор кода на управляемых формах обладает нулевой функциональностью, интеграция с MS Monaco позволяет запустится просто в космос.

28.05.2021 5683 Evg-Lylyk 14

27.01.2016 85809 Serginio 116

Обзор полезных методов БСП 3.1.4. Часть 2

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

27.04.2021 16173 rayastar 7

Неочевидные нюансы записи управляемой формы

Разберем несколько нюансов записи управляемой формы.

02.04.2021 12934 SeiOkami 54

Полезные примеры СКД, ч.1

Подборка видео по решению различных задач в отчетах на СКД.

30.03.2021 13542 Neti 21

Звуковое управление в 1С 8.3 Промо

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021 7219 velemir 33

Обзор полезных методов БСП 3.1.4

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

25.03.2021 41186 rayastar 51

Расширенный автоподбор при вводе по строке в поле ввода в управляемых формах

Началось все с того, что штатный автоподбор при вводе по строке в поле ввода для некоторых больших справочников устраивать перестал. Вообще, для способа поиска строки "Любая часть" он работает на первый взгляд очень хорошо: работает как полнотекстовый (т.е. по нескольким словам) даже без активации полнотекстового поиска, красиво подсвечивает слова поиска в результатах. Казалось бы, все отлично. Но есть неприятное ограничение - всего лишь 10 значений в результирующем списке (у вас может быть несколько больше, так как платформа неявно добавляет результаты поиска по истории ввода). Для небольших справочников или справочников с разнородным ассортиментом все хорошо. Но не в моей ситуации. А простых путей увеличить количество выдаваемых строк на момент написания статьи мне обнаружить не удалось. Пришлось полностью переопределять автоподбор. Ниже речь пойдет именно об этом. И, к слову, в типовых конфигурациях для некоторых справочников используются похожие приемы для увеличения количества строк результата автоподбора.

21.01.2021 3635 herfis 7

Программное копирование узла/строки дерева значений на управляемой форме (УФ, ДанныеФормыДерево, ДанныеФормыЭлементДерева) в вариантах на клиенте и на сервере

1С при интерактивном копировании строки дерева значений в управляемой форме копирует только саму строку, без его всех вложенных узлов/строк, жаль - решим! А также найдем способ передачи ДанныеФормыЭлементДерева с клиента на сервер при вставке дерева из другого элемента справочника.

Анна Викулина

Возможность добавления отчетов и обработок в типовую конфигурацию 1С без изменения ее структуры реализована через встроенный механизм БСП. Каждая типовая база от 1С, написанная на управляемых формах, содержит в себе данный механизм. Это позволяет добавлять собственный функционал, не переживая за сохранение целостности структуры ИБ, что будет особенно ценно, если используется сложная конфигурация. Добавление дополнительных отчетов и обработок пригодиться не только начинающим программистам, но из-за возможности значительно повысить скорость также заинтересует и опытных разработчиков.

Пример разработки дополнительного отчета

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

Чтобы создать эту функцию, необходимо открыть режим конфигуратора и через основное меню «Файл» - «Новый…», создать внешний отчет. Открыть модуль объекта и добавить функцию «СведенияОВнешнейОбработке» с отметкой «Экспорт». В каждом дополнительном внешнем отчете в 1С 8.3 эта экспортная функция должна возвращать структуру с определенными ключами и значениями:

  • Вид – определение типа доработки. Может принимать значения «ЗаполнениеОбъекта», «ДополнительнаяОбработка», «СозданиеСвязанныхОбъектов», «ДополнительныйОтчет» и многие другие;
  • Назначение – задается в случае, если мы добавляем функционал к конкретному документу или справочнику. Указывается 1 или перечень объектов конфигурации, к которым предназначен новый функционал. В случае обычного отчета не прописывают;
  • Команды – таблица, содержащая все необходимые команды с определенным набором характеристик. Отвечает за кнопку, запускающую обработку или отчет;
  • БезопасныйРежим – принимает значения «Истина» или «Ложь», отвечает за безопасный режим запуска. Это специальный режим, когда для пользователя ограничиваются возможности. Если его включить, то в процессе работы отчета будут недоступны:
    • Привилегированный режим;
    • Библиотеки Dll;
    • COM-соединение;
    • Доступ к файлам и интернету.

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

    Откроется окно создания макета, нажмите «Готово» и в сформировавшемся окне настройки схемы вызовите контекстное меню на наборах данных.

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

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

    Именно так устанавливается то, откуда брать данные, по каким критериям и каким образом их выводить. Остается лишь заполнить реквизит «Имя» нового внешнего отчета и сохранить файл на компьютере или на сетевом ресурсе. Обычно компании выделяют специальное место и называют его «Хранилище дополнительных отчетов и обработок» и сохраняют туда все подобные файлы.


    Подключение дополнительного внешнего отчета к конфигурации

    Чтобы подключить созданный дополнительный отчет в 1С, придется включить его в состав дополнительных отчетов и обработок. В большинстве типовых конфигураций этот перечень находится в разделе «НСИ и администрирование» - «Печатные формы, отчеты и обработки». Здесь расположена опция «Дополнительные обработки и отчеты». Обычно она включена, но может быть и отключенной, если не пользовались этим инструментом. При включении активизируется ссылка справа на нужный нам список внешних доработок системного функционала в виде обработок и отчетов.

    Рис.7 Подключение дополнительного внешнего отчета к конфигурации

    Рис.7 Подключение дополнительного внешнего отчета к конфигурации

    При добавлении в данный перечень с помощью кнопки «Создать» 1С откроет форму дополнительной обработки и предложит выбрать файл. Для выбора доступны только файлы формата erf – внешние отчеты, и epf – обработки. При выборе 1С считывает информацию из экспортной функции «СведенияОВнешнейОбработки» и отражает информацию на форме.

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

    В итоге мы видим, что добавить дополнительный отчет в 1С достаточно просто и этот процесс не требует углубленного знания базы. Именно безопасность структуры конфигурации и стала ключевой особенностью, благодаря которой разработчики полюбили дополнительные внешние отчеты и обработки в 1С 8.3. Для других видов доработки в процессе подключения к системе 1С может потребоваться указать другие настройки. К примеру, для типа «СозданиеСвязанныхОбъектов» или «ЗаполнениеОбъекта» нужно указать, где показывать доработку – в списке документов или только внутри конкретного объекта.

    Чтобы внести изменения в добавленную обработку или отчет, не потребуется завершать работу всех пользователей. Достаточно просто выгрузить внешнюю обработку на компьютер, внести изменения в нее через конфигуратор и загрузить обратно. Для этого в перечне дополнительных обработок существуют специальные кнопки «Выгрузить в файл…» и «Загрузить из файла…». Чтобы пользователи увидели изменения, достаточно закрыть и снова открыть объект – отчет, документ или справочник.

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

    Поговорим об особенностях формирования внешних отчетов в программе 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, и добавлять в справочник ВнешниеОбработки .

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