Создание простого отчета на скд. Создание простого отчета на скд Создание отчета в 1с 8.3

Каждой организации для принятия своевременных и правильных управленческих решений необходима оперативная информация о наличии товара на складах, о его себестоимости, о продажах. Торговые организации работают с большим числом номенклатуры и контрагентов, а это требует хорошей настройки аналитического учета и быстрого получения требуемой информации по его данным. В статье рассматриваются основные приемы работы со стандартными отчетами в типовом решении «1С:Управление торговлей 8» (редакция 11), построенными на основе системы компоновки данных и даются полезные практические рекомендации, которые пригодятся и начинающим пользователям, и тем, кто перешел на новую редакцию с предыдущих редакций.

Например, возьмем отчет

  • Анализ доступности товаров;

Настройка .

В колонке Вид сравнения Номенклатура

  • Равно
  • Не равно
  • В списке
  • Не в списке
  • В группе Номенклатура ;
  • Не в группе Номенклатура ;
  • В группе из списка Номенклатура ;
  • Не в группе из списка Номенклатура .

Значение

"Быстрые отборы"

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

Новые возможности, предоставляемые системой компоновки данных (СКД), как никогда ранее позволяют ощутить преимущества возможностей «1С:Предприятия 8» при построении отчетов. И, несмотря на то, что интерфейс отчетов претерпел значительные изменения (по сравнению с редакцией 10.3 конфигурации «Управление торговлей», далее - УТ), настройки отчетов по-прежнему доступны рядовому пользователю. Рассмотрим некоторые основные приемы работы с ними.

Первое, на что можно обратить внимание - это быстрые отборы. Они позволяют вывести в отчет данные по определенным значениям полей отчета согласно пожеланиям пользователя.

Например, возьмем отчет Анализ доступности товаров в УТ . Сразу отметим, что вся демонстрация возможностей отчетов в УТ 11 будет проходить на примере двух отчетов:

  • Анализ доступности товаров;
  • Выручка и себестоимость продаж.

Отбор по некоторым полям можно сделать как непосредственно в форме отчета, так и по кнопке Настройка .

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

  • Равно - отчет будет строиться только по выбранной номенклатурной позиции;
  • Не равно - отчет будет строиться по всей номенклатуре, кроме выбранной позиции;
  • В списке - отчет будет строиться по списку номенклатурных позиций;
  • Не в списке - отчет будет строиться по всей номенклатуре, кроме выбранных позиций;
  • В группе - отчет будет строиться по всей номенклатуре, находящейся в выбранной папке справочника Номенклатура ;
  • Не в группе - отчет будет строиться по всей номенклатуре, кроме позиций, находящихся в выбранной папке справочника Номенклатура ;
  • В группе из списка - аналогичен сравнению В списке, только в качестве значений списка выбираются папки в справочнике Номенклатура ;
  • Не в группе из списка - аналогичен сравнению Не в списке, только в качестве значений списка выбираются папки в справочнике Номенклатура .

Флажок (галочка) слева от поля отбора показывает, что отбор по этому полю «включен», т. е. принимается отчетом во внимание.

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

В зависимости от выбранного вида сравнения в колонке Значение указывается конкретный элемент или папка (группа) справочника, либо список элементов или папок.

«Быстрые отборы» доступны во всех решениях на платформе «1С:Предприятие 8».

Пример простого изменения настроек отчета

Для просмотра/изменения настроек отчета необходимо зайти в меню Все действия - Изменить вариант .

Перед нами открывается окно настроек для выбранного варианта отчета.

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

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

Пример 1

Шаг 1. Нам необходимо убрать группировку по характеристике номенклатуры, оставив только группировку по номенклатуре. Для этого в верхней части окна настроек отчета щелкнем мышкой по полю Номенклатура, Характеристика . В нижней части окна перейдем на вкладку Группировки .

Выделим поле Характеристика и щелкнем по кнопке Удалить командной панели.

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

Шаг 2. После удаления характеристики нашей задачей, по условиям примера, будет добавление ценовой группы. По смыслу эта группировка должна идти уровнем ниже, чем группировка по складу, но уровнем выше, чем группировка по номенклатуре. Поэтому, в структуре отчета выделим группировку Склад .

Щелкнув по ней правой кнопкой мышки, в контекстном меню выберем команду Новая группировка .

В открывшемся окне редактирования поля группировки выберем Номенклатура.Ценовая группа .

Щелкнув по кнопке ОК , мы увидим, что в отчет добавилась новая группировка, подчиненная группировке Склад .

Теперь выделим группировку по номенклатуре и, не отпуская правую кнопку мыши, перетащим ее внутрь (т. е. ниже) группировки по ценовой группе. У нас получится структура, представленная на рисунке 1. Результат настройки отчета представлен на рисунке 2.

Рис. 1. Получившаяся структура отчета

Рис. 2. Результат настройки отчета

Работа с пользовательскими полями

Давайте теперь немного подробнее рассмотрим новые возможности настройки отчетов в программе «1С:Управление торговлей 8».

В форме редактирования структуры и настроек нашего отчета обратим внимания на закладку Пользовательские поля .

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

Пример 2

Настроим под себя отчет «История продаж» (вариант отчета «Выручка и себестоимость продаж»). Выведем данные по продажам в разрезе партнеров и номенклатуры. Предположим, что наша компания занимается продажей товаров в Москве и в регионах. Таким образом, каждый клиент в информационной базе принадлежит к определенному географическому региону (реквизит «Бизнес-регион» справочника «Партнеры»). Мы можем без труда сгруппировать данные по продажам в отчете по регионам, но что делать, если нас интересует более укрупненная статистка, в частности, ответ на вопрос «Сколько было продано товаров в Москве, а сколько во всех остальных регионах вместе взятых»? В этом случае как раз и пригодятся «пользовательские поля».

Шаг 1. Откроем отчет. Перейдем в форму настройки структуры отчета (Все действия -> Изменить вариант ). Удалим по очереди все ранее созданные в отчете группировки - для этого выделим каждую из них и щелкнем по кнопке Удалить командной панели, либо воспользуемся клавишей DEL.

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

Шаг 2. Создадим новое пользовательское поле. Откроем закладку Пользовательские поля и выполним команду Добавить -> Новое поле-выбор .

Присвоим имя нашему новому полю - Регион обобщенно .

Щелкнем по кнопке Добавить . В новой строке щелкнем по кнопке в колонке Отбор . В появившейся форме редактирования отбора добавим отбор по полю Партнер.Бизнес регион . Выберем вид сравнения Равно , значение - Москва .

Щелкнем по кнопке ОК , после чего вернемся в окно редактирования пользовательского поля. Далее необходимо щелкнуть по кнопке в колонке Значение и в появившемся списке выбора типа данных выбрать Строка и в качестве значения написать Москва .

Повторим операцию. Добавим еще одну строку в таблицу. На этот раз для отбора по полю Партнер.Бизнес регион выберем вид сравнения Не равно .

Вернувшись в окно редактирования пользовательского поля, в колонке Значение напишем Остальные регионы (см. рис. 3).

Рис. 3. Редактирование пользовательского поля

Щелкнем по кнопке ОК . Наше новое поле готово.

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

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

Сформируем отчет и посмотрим на результат (представлен на рис. 4).

Рис. 4. Результат формирования отчета

Отбор и сортировка

Вернемся к окну редактирования структуры и настроек отчета и обратим внимание на закладки Отбор и Сортировка .

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

Пример 3

В результате в отчет История продаж попадут только те реализации, где в качестве менеджера указан Иванов Иван Федорович .

Пример 4

Сохраняем сделанные изменения

При изменении структуры отчета его всегда можно сохранить при помощи команды Все действия -> Сохранить вариант .

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

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

Какова технология создания отчета СКД:

Написать запрос 1С в СКД, который обеспечивает получение данных

Указать СКД роль полей (вычисляемые поля, ресурсы)

Ввести настройки СКД по умолчанию.

Пользователю остается возможность изменить множество настроек по своему желанию.

СКД имеет значительное преимущество как для пользователя, так и для программиста:

Программист - избавляет от написания программы для выполнения отчета и настроек

Пользователь - получает значительный доступ к настройкам отчета.

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

Создание отчета.

Выберите меню Файл -> Новый. Выберите тип файла - Новый отчет.

Создается новый отчет. Создадим новую схему СКД по кнопке Открыть схему компоновки данных.

Создание запроса для отчета.

Источников данных для СКД 1С может быть множество. Чтобы использовать, например, два отдельных запроса - добавьте сначала «Набор данных - объединение», а потом несколько запросов. В нашем примере мы будем использовать запрос.

Запрос строится с помощью Конструктора запроса. Работа с конструктором запроса в СКД ничем не отличается от обычной.

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

Настройки СКД.

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

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

Основная настройка производится на закладке Настройки.

Воспользуемся Конструктором настроек. Выведем данные в список.

Выберем нужные поля.

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

Сортировка по полю Номенклатура по возрастанию.

Результат настройки СКД выглядит следующим образом.

На вложенной закладке “Параметры” для параметра “Период” установим флаг “Включать в пользовательские настройки”. После выполнения данной настройки параметры будут отображаться в основой форме отчета.

Сохраним отчет.

Формирование СКД.

Откроем отчет в 1С:Предприятие. Зададим нужный период и сформируем отчет.

Отчет сформирован!

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

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

Создание отчета в 1С через СКД

Процесс разработки отчета при помощи СКД можно разделить на следующие этапы:

  1. Создание запроса. Запрос можно написать вручную или обойтись без программного кода, воспользовавшись удобным интерфейсом;
  2. Настройка отчета. Выбираются поля, итоги, группировки, параметры, оформление отчета;
  3. После этого нам останется лишь подключить получившийся отчет в конфигурацию любым доступным способом.

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

Рассмотрим пример создания внешнего отчета на СКД:


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

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

Возможности СКД

Бывают ситуации, когда мы сделали отчет, а потом приходит пользователь и просит сделать небольшую доработку. Например, вместо названий номенклатуры выводить артикулы. СКД позволяет такие доработки делать пользователям самостоятельно с помощью кнопки «Еще» - «Изменить вариант…».


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


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


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


Механизм СКД 1С:Предприятие 8.3 также имеет расширенный функционал для разработчиков. При разработке отчета мы пользовались всего 2 вкладками – «Наборы данных» и «Настройки», но в СКД их намного больше. Чтобы пользоваться всеми функциями системы компоновки данных, необходимо представлять, для чего каждая из вкладок нужна:

  1. Наборы данных – здесь перечислены все запросы, участвующие в формировании отчета;
  2. Связи наборов данных – используется для построения связи между различными запросами с первой вкладки;
  3. Вычисляемые поля – перечень добавленных полей не из запроса. Чаще всего используется в случаях, когда на основании значений нескольких полей из запроса нужно получить 1 значение;
  4. Ресурсы. В 1С так называются поля, по которым необходимо знать итоги. Ресурсы поддерживают различные арифметические операции – сумму, количество, максимум и другие;
  5. Параметры. Используются, если для формирования отчета необходимо, чтобы пользователь ввел определенные данные – дату, подразделений или номенклатуру, например;
  6. Макеты. Предназначены для тех случаев, когда пользователи хотят увидеть уникально оформленный отчет. Создать отдельное место для подписей или новую верхнюю часть отчета – все это можно здесь;
  7. Вложенные схемы. Они необходимы, когда ваш отчет должен содержать данные других отчетов;
  8. Настройки. В разделе объявляются выводимые поля, группировки, настраивается внешний вид отчета.


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

Если у вас остались вопросы по настройке отчета, обратитесь за

Рассмотрим создание внешнего отчета в 1с 8 без использования системы компоновки данных. Для создания внешнего отчета будем использовать конфигурацию Бухгалтерия 2.0, исходные данные: “Написать отчет по 62 счету бухгалтерского учета в который будут выводится обороты за указанный период в разрезе Контрагентов и Договоров контрагентов .

1. Создание отчета

В первую очередь создадим файл внешнего отчета, для этого зайдем в 1с 8 в режиме Конфигуратор , перейдем в меню Файл -> Новый , либо нажмем на пиктограмму Новый документ .

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

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

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

В нашем макете будет 4 области:

  • Шапка — в эту область мы будем выводить наименование отчета, период за который он сформирован и шапку таблицы;
  • ДанныеКонтрагент — в эту область мы будем выводит в таблицу данные по контрагенту;
  • ДанныеДоговорКонтрагента — в эту область мы будем выводит в таблицу данные по договору контрагента;
  • Подвал — в эту область мы будем выводить итоговые значения по всему отчету для полей Приход и Расход.

Приступим к созданию областей макета. Для того что бы создать область в макете выделите нужное количество строк и нажмите Меню Таблица -> Имена -> Назначить имя (Либо Ctrl + Shift + N ). В область Шапка напишем наименование отчета: Обороты 62 счета , нарисуем при помощи инструмента Границы шапку отчета, а так же зададим параметры НачалоПериода и КонецПериода . При помощи параметров в отчет можно выводить нужные данные, мы будем заниматься эти на следующем этапе разработки, а именно при написании программного кода отчета. Что бы создать параметр в макете выберите нужную ячейку, напишите в ней наименование параметра(без пробелов), щелкните по ней правой кнопкой мыши, в открывшемся меню выберите пункт Свойства . В свойствах ячейки на закладке Макет выберите заполнение Параметр .

После этого, в ячейке имя параметра будет заключено в угловые скобки(”<>“). В итоге область Шапка должна выглядеть так:

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

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

В области Подвал создадим параметры для итогов по приходу и расходу.

В итоге мы должны получить такой макет:

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

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

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

В итоге у нас получится вот такая форма:

Но в таком виде она нас не устраивает, внесем в нее некоторые изменения:

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

В итоге наша форма будет иметь такой вид:

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

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

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

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

Процедура Кнопка1Нажатие(Элемент) РаботаСДиалогами.ОбработчикНастройкаПериодаНажатие(НачалоПериода,КонецПериода); КонецПроцедуры

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

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

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

Макет = ПолучитьМакет("Макет" );

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

ОбластьШапка = Макет.ПолучитьОбласть("Шапка" ); ОбластьДанныеКонтрагент = Макет.ПолучитьОбласть("ДанныеКонтрагент" ); ОбластьДанныеДоговор = Макет.ПолучитьОбласть("ДанныеДоговор" ); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал" );

Очистим поле табличного документа. Это нужно для того что бы при каждом новом формировании отчета старые данные удалялись.

ТабДок.Очистить();

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

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

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

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

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

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

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

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

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

Запрос.УстановитьПараметр("НачалоПериода" ,НачалоПериода); Запрос.УстановитьПараметр("КонецПериода" ,КонецПериода);

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

Запрос.Текст = "" ;

После этого поставим курсор между кавычками, нажмем правую кнопку мыши и выберем пункт Конструктор запроса. Откроется окно конструктора запроса.

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

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

Заполним параметры, периода которые мы передали в запрос. Что бы в тексте запроса использовать параметр следует перед его именем писать символ амперсанда(&)

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

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

Также можно воспользоваться конструктором составления условий нажав на кнопку с тремя точками.

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

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

Заполним псевдонимы выбранных нами полей, для этого перейдем на закладку Объединения/Псевдонимы и зададим нужные имена полей.

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

На этом работа в конструкторе запроса завершена, нажимаем кнопку ОК и видим, что текст нашего запроса появился в программном коде.

Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОбороты.Субконто1 КАК Контрагент, | ХозрасчетныйОбороты.Субконто2 КАК ДоговорКонтрагента, | ХозрасчетныйОбороты.СуммаОборотДт КАК Приход, | ХозрасчетныйОбороты.СуммаОборотКт КАК Расход |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Счет В ИЕРАРХИИ (&Счет62),) КАК ХозрасчетныйОбороты |ИТОГИ | СУММА(Приход), | СУММА(Расход) |ПО | Контрагент, | ДоговорКонтрагента" ;

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

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

Таким образом мы получим записи с итогами по всем контрагентам.

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

ИтогоПриход = 0; ИтогоРасход = 0;

Для того чтобы данные отчета выводились с иерархией(и разворотами по ”+“) зададим начало автогруппировки строк табличного документа:

ТабДок.НачатьАвтогруппировкуСтрок();

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

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

В начале цикла обнулим параметры Приход и Расход области ДанныеКонтрагент . Для чего это нужно? Представим ситуацию, что по контрагенту Дядя Вася , приход 10, а расход 5, а для за ним следующего контрагента Дядя Петя нет ни прихода ни расхода, в таком случае если мы не обнулим параметры Приход и Расход , то по в строке по контрагенту Дядя Петя попадет приход 5 и расход 10.

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

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

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

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

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

Теперь для данного контрагента сделаем выборку по его договорам.

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

Обход будем осуществлять при помощи цикла Пока .

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

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

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

Также в этом цикле к переменным расчета итоговых значений по приходу и расходу прибавим текущие значения.

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

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

ТабДок.ЗакончитьАвтогруппировкуСтрок();

Полностью циклы отвечающие за вывод данных в области ДанныеКонтрагент и ДанныеДоговорКонтрагент выглядят так:

ТабДок.НачатьАвтогруппировкуСтрок(); Пока ВыборкаКонтрагент.Следующий() Цикл ОбластьДанныеКонтрагент.Параметры.Приход = 0 ; ОбластьДанныеКонтрагент.Параметры.Расход = 0 ; ЗаполнитьЗначенияСвойств(ОбластьДанныеКонтрагент.Параметры,ВыборкаКонтрагент); ТабДок.Вывести(ОбластьДанныеКонтрагент,1 ); ВыборкаДоговорКонтрагента = ВыборкаКонтрагент.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаДоговорКонтрагента.Следующий() Цикл ОбластьДанныеДоговор.Параметры.Приход = 0 ; ОбластьДанныеДоговор.Параметры.Расход = 0 ; ЗаполнитьЗначенияСвойств(ОбластьДанныеДоговор.Параметры,ВыборкаДоговорКонтрагента); ТабДок.Вывести(ОбластьДанныеДоговор,2 ); ИтогоПриход = ИтогоПриход + ВыборкаДоговорКонтрагента.Приход; ИтогоРасход = ИтогоРасход + ВыборкаДоговорКонтрагента.Расход; КонецЦикла ; КонецЦикла ; ТабДок.ЗакончитьАвтогруппировкуСтрок();

Осталось вывести итоговые данные в область Подвал и вывести саму область в Табличный документ .

ОбластьПодвал.Параметры.ИтогоПриход = ИтогоПриход; ОбластьПодвал.Параметры.ИтогоРасход = ИтогоРасход; ТабДок.Вывести(ОбластьПодвал);

На этом процесс написания внешнего отчета для 1С 8 без использования СКД завершен. Теперь его можно сформировать в режиме 1С:Предприятие 8 и добавить в справочник ВнешниеОбработки Файл отчета рассмотренного в статье вы можете скачать по .

Смотрите видео по созданию внешней печатной формы для управляемого приложения:

Loading...Loading...