Форма отчета 1с по

Обновлено: 05.07.2024

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

Если в отчете есть поле типа СтандартныйПериод, то добавляются поля ПериодНачало и ПериодОкончания, кнопка выбора периода. Выбор периода выглядит гораздо аккуратнее, чем типовой диалог выбора стандартного периода или самодельный диалог. (По имени подключаемой процедуры «Подключаемый_СтандартныйПериод_НачалоПериода_ПриИзменении» находим место подключения - процедура ВывестиЭлементыНастройки модуля ОтчетыСервер. Там можно увидеть подробности дополнительной обработки полей).

ПриСозданииНаСервере есть проверка прав доступа. Если типовая проверка не устраивает - смотрите часть 3.

Обратите внимание на стандартные роли ДобавлениеИзменениеВариантовОтчетов, ЧтениеВариантовОтчетов, БазовыеПраваБСП, СохранениеДанныхПользователя, ДобавлениеИзменениеЛичныхВариантовОтчетов. От них зависит внешний вид и возможности работы.

Посмотрим на командную панель:

Кнопка 1. Сформировать в фоновом режиме. Возможен замер времени выполнения(APDEX).

Кнопка 2. Форма настроек. Управление отборами, внешним видом элементов формы и структурой отчета (список, таблица).

Кнопка 3. Управление вариантами отчета. Сохранение пользовательских настроек. (Права и параметры имеют значение)

Про кнопки 4-10 подробно говорить не буду, но обратите внимание на «горячие клавиши» Ctrl-F, Ctrl-Shift-Num +, Ctrl-Shift-Num --, Alt-S, Ctrl-P, Ctrl-S…

Кнопка 11. Позволяет управлять рассылками отчетов, создать рассылку, используя текущие настройки СКД. То есть настройки отчета сохраняются в справочник рассылки. Если в конфигурации отсутствует подсистема рассылки отчетов – кнопка не видна.

Допустим, мы выполняем код ОткрытьФорму(«Отчеты.Ведомость.Форма», ПараметрыОткрыть); Рассмотрим избранные свойства структуры «ПараметрыОткрыть».

Установлена ИСТИНА - отчет сформируется при открытии формы.

Структура содержит отбор, который будет установлен при формировании отчета. В документации ИТС отсутствует. Это наш секрет :))

Вариант формирования отчета. В документации ИТС отсутствует. Это наш секрет :)) Если отсутствует – используется первый из вариантов в алфавитном порядке.

Установлена ИСТИНА – есть возможность выбора вариантов В документации отсутствует. Возможно, устарел.

Установлена Ложь - в настройках отчета будет скрыта вкладка "Структура".

Установлена Ложь - в форме отчета и настроек скрываются кнопки изменения вариантов этого отчета

Первый способ: Чтобы добавлять код, хорошо использовать переопределяемые модули. В конфигурации УТ для ФормыОтчетов предусмотрены процедуры:

Порядок выполнения процедур при открытии:

Порядок выполнения процедур по кнопке "Сформировать":

&НаКлиенте:
1) ОтчетСкомпоноватьРезультат()
2) Сформировать()
&НаСервере:
3) РезультатФормированияОтчета(ФормированиеПриОткрытии, Непосредственно)
4) ПроверитьЗаполнение()
5) ОбработкаПроверкиЗаполненияНаСервере()
6) ЗагрузитьРезультатФормированияОтчета()

Второй способ: если мы хотим изменить какие-то свойства формы, например ограничить отбор в списке поля (1) или выполнить дополнительные действия при выборе значения в поле (2), нам нужно копировать объект метаданных ОбщиеФормы – ФормаОтчета и вставить его в свой отчет. (Не забывайте про общие формы ФормаНастроекОтчета и ФормаВариантаОтчета). Переименуем форму, чтобы в ней не было ссылок на модули ОбщиеФормы – ФормаОтчета. После этого можно смело изменять код. Но нужно учитывать, что поля формы создаются автоматически и называются иначе, чем в схеме СКД.

1. Для изменения свойства поля, найдем в модуле формы процедуру ВывестиЭлементыНастройки и посмотрим в отладчике, как происходит добавление элементов. В переменной СвойстваНастройки хранится связь между полем СКД и идентификатором. Запомним ИмяЭлемента в цикле обработки переменной СвойстваНастройки, потом обработаем.

2. Для обработки выбора значения в форме предусмотрены подключаемые процедуры:

Поставим точку останова – увидим, как происходит обработка выбора значения.

Назначение отчётов программного продукта 1С – вывод актуальной информации о хозяйственных операциях в определённом формате из сформированной документами базы данных. Документы и Отчёты в 1С взаимосвязаны и похожи друг на друга, но функция Документа ввести данные о хозяйственных операциях в базу данных, задача Отчёта – вывести данные в определённом формате. Система Компоновки Данных (далее СКД) позволила создавать отчёты по-новому. Так, в решении 1С версии 8.2 СКД позволяет создавать отчёты с использованием принципа «программирования мышкой». Для этих целей в программе также предусмотрен конструктор запроса. СКД – система для формирования сложных отчётов, в которых предусмотрен функционал гибких настроек.

moneymove

Основные свойства отчётов:

  • Каждый отчёт в системе 1С имеет свою экранную форму;
  • У одного отчёта может быть несколько печатных форм;
  • Алгоритм создания каждого отчёта записан на встроенном языке 1С;
  • Позиции в отчётах активны и могут вести к большей детализации выбранного объекта.
Настройка отчётов в 1С

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

02

Алгоритм настройки.

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

Стандартная форма Отчёта в 1С

Параметры ввода сгруппированы по группам:

  • Показатели представления;
  • Группировки строк;
  • Отборы;
  • Группировки колонок.

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

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

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

  • Группировки строк и колонок.
  • Вывод общих итогов.
  • Вывод детальных записей.

03

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

Группировка имеет следующие способы отображения:

  • Поэлементный вывод данных;
  • Иерархическое построение информации;
  • Иерархия записей без их детализации.

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

Для эффективной работы с базой данных нужно уметь ограничивать выводимую информацию. Ограничение выводимых данных производится настройками периода и отбора. Настройка периода определяет временной интервал вывода информации. Функционал Отбора позволит указать все остальные актуальные ограничения. Если нужен нестандартный отбор, то можно настроить форму Отчёта индивидуально. Для этого нужно добавить новый вариант Отбора. Возможности стандартных отборов доступны по кнопке «Быстрые отборы», индивидуальные отборы вызываются через форму настройки.

04
Общие рекомендации

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

Речь пойдет об отчетах, созданных на базе СКД (на всякий случай пишу, если еще остались люди, которые делают отчеты не на СКД).

Добавить отчет в типовую конфигурацию 1С, построенную на базе БСП, можно одним из следующих способов:

Добавляемый отчет может быть:

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

Общая схема добавления отчетов

Варианты отчетов

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

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

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

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

Общая сравнительная таблица:

Тип добавления

В основную конфигурацию

В расширение конфигурации

В качестве внешнего отчета

Обновление вспомогательных данных (идентификаторы объектов)

Обновление вспомогательных данных (варианты отчетов)

Предопределенные настройки вариантов

Общий модуль: ВариантыОтчетовПереопределяемый

Модуль менеджера отчета

Возможность добавление обработчиков событий формы

Указывается в общем модуле: ВариантыОтчетовПереопределяемый

Указывается в модуле менеджера отчета:

ПриОпределенииНастроек

Доступна по умолчанию

Описание назначения для контекстного отчета

Модуль менеджера отчета, модуль менеджера объекта назначения

Модуль менеджера отчета

Модель объекта отчета

Описание основного варианта (по умолчанию)

Свойство отчета «Пояснение»

Добавление пользовательских вариантов отчета

Добавление нового отчета в основную конфигурацию

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

В новых все несколько сложнее, и есть свои нюансы.

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

Однако, в этом случае, отчет не будет виден на специальной панели отчетов, которую предоставляет БСП. Панель открывается при переходе по ссылке «Отчеты по <Наименование раздела>» из каждого раздела системы:

Открыть панель отчетов

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

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

  1. Запустить 1С Предприятие в режиме обновления ИБ, задав параметр запуска: «ЗапуститьОбновлениеИнформационнойБазы»:

Запуск 1С Предприятия в режиме обновления

  1. Увеличить номер версии конфигурации.
  2. Воспользоваться обработкой из состава БСП: «Обновление вспомогательных данных»

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

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

Обновить варианты отчетов

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

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

Настройка вариантов отчетов

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

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

Объект «ОписаниеОтчета» имеет следующие свойства:

Включен - если свойство имеет значение «ложь», отчет не регистрируется в справочнике «Варианты отчетов».

ОпределитьНастройкиФормы – свойство определяет наличие в модуле объекта отчета экспортной процедуры « ОпределитьНастройкиФормы ». В данной процедуре указывается наличие дополнительных обработчиков для событий модуля формы отчета, которые также должны присутствовать в модуле объекта отчета:

Объект «ОписаниеВарианта» имеет следующие свойства:

Описание - Описание варианта отчета, которое выводится на панели отчетов.

ВидимостьПоУмолчанию - если свойство имеет значение «ложь», вариант не виден по умолчанию в панели отчетов, но в справочнике «Варианты отчетов» он регистрируется.

Размещение – настройка размещения отчета. По умолчанию, коллекция содержит все подсистемы, выбранные для отчета. Можно добавить новые подсистемы для размещения или удалить существующие. Дополнительно, можно указать важность размещения: «Важный» или «СмТакже»:

ФункциональныеОпции – подключенные к команде вывода варианта отчета функциональные опции:

НастройкиДляПоиска – дополнительные сведения для поиска варианта отчета

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

В пользовательском режиме, можно переопределить эти настройки для текущего пользователя или всех пользователей системы. Тем не менее, всегда остается возможность вернуться к предопределенным настройкам, заданным в конфигурации:

Предопределенные настройки по умолчанию

Добавление нового отчета в расширение конфигурации

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

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

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

Все настройки аналогичны тем, которые выполнялись для отчетов основной конфигурации. Отличие только в том, что объект «НастройкиОтчета» уже передан в процедуру в качестве параметра.

Для применения созданных настроек обязательно должен быть установлен параметр «НастроитьВариантыОтчета» в экспортной процедуре модуля менеджера отчета «ПриОпределенииНастроек»:

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

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

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

Описание отчета по умолчанию

Добавление контекстного отчета в основную конфигурацию или в расширение

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

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

Сами команды необходимо описать в отдельной процедуре:

Основные свойства команды:

Представление – наименование команды в интерфейсе объекта назначения,

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

Дополнительные свойства команды:

Важность - группы в подменю «Отчеты», в которой следует вывести команду открытия отчета. Доступные значения: "Важное", "Обычное" и "СмТакже".

Порядок - п орядок размещения отчета по отношению к другим отчетам.

СочетаниеКлавиш - с очетание клавиш для быстрого открытия отчета (тип «СочетаниеКлавиш».

ВидимостьВФормах - и спользуется для указания перечня форм, в которых требуется выводить отчет. По умолчанию, отчет выводится во всех формах объекта, подключенных к БСП.

ФункциональныеОпции - имена функциональных опций, определяющих видимость команды открытия отчета в форме.

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

Параметр «Реквизит» - это имя реквизита объекта назначения.

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

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

При необходимости можно обработать данные, переданные в свойстве команды «ДополнительныеПараметры»:

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

Добавление отчетов с помощью механизма внешних отчетов и обработок

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

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

Изменить вариант дополнительного отчета

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

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

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

На этом все, спасибо за внимание, и за то, что читаете мои статьи J .

Другие мои статьи по использованию механизмов БСП в типовых конфигурациях 1С

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

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