Как сделать внешний отчет в 1с 8.3. Бухучет инфо. ТабДокумент = Новый ТабличныйДокумент

Прежде, чем начинать разговор об отчетности в 1С важно указать, что отчетность может быть трех видов:

  1. Регламентированной;
  2. Стандартной;
  3. Собственной.

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

Регламентированная отчетность — комплект законодательно утвержденных печатных форм и электронных документов, которые каждая организация периодически должна сдавать в контролирующие органы.

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

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

Регламентированная отчетность

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

  • Налоговую службу;
  • Федеральную статистическую службу;
  • Различные фонды и надзирающие органы.

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

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

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

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

Одним из наиболее старых и важных для отражения хозяйственной деятельности предприятия документов является «Бухгалтерский баланс». Актуальная на данный момент форма разработана в 2010 году в Министерстве Финансов Российской Федерации и утверждена приказом №66 от 02.06.2010. Согласно этому приказу, начиная с 2013 года все организации, осуществляющие деятельность на территории РФ должны ежегодно его сдавать в налоговые органы.

Для того, чтобы открыть необходимый регламентный отчет мы должны (в программе «Бухгалтерия 8.3») перейти в подсистему «Отчеты» и в меню «1С Отчетность» выбрать соответствующую команду (Рис.1)

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

В открывшейся форме (Рис.2) мы увидим:

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

Рис.2

С помощью соответствующих кнопок мы можем:

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

Необходимый нам «Бухгалтерский баланс» мы можем найти нажатием на кнопку «Создать». Результатом клика будет форма (Рис.3)
Рис.3

Если в открывшемся окне на закладке «Избранные» нет пункта «Бухгалтерская отчетность (с 2011 года)», нам придется перейти на закладку «Все» и выбрать этот документ.

Прежде, чем приступить к внесению основных данных, программа предложит заполнить некоторые поля (Рис.4)

Рис.4

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

Нажав на кнопку «Создать» мы откроем соответствующую форму (Рис.5).

Рис.5

Сразу следует обратить внимание на одно обстоятельство: «Бухгалтерская отчетность» — это не только «Бухгалтерский баланс», но еще и:

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

И все эти отчеты можно сформировать нажатием одной кнопки «Заполнить» (Рис.6), выбрав «Все отчеты».

Рис.6

Для заполнения конкретного документа необходимо выбрать «Текущий».

Заполненная форма «Бухгалтерского баланса» представлена на Рис.7

Рис.7

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

Все цифры, имеющиеся в ключевых полях можно расшифровать, кликнув на соответствующую кнопку в шапке.

Форма расшифровки дебиторской задолженности показана на Рис.8.

Рис. 8.

Двойной клик на любой сумме расшифровки открывает стандартный отчет «Оборотно-сальдовая ведомость по счету».

Стандартные отчеты

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

Рассмотрим принцип их работы на основании «Оборотно-сальдовой ведомости». Форма на Рис.1 показывает, что стандартные и регламентированные отчеты можно вызвать из одной подсистемы.

Откроем нужный нам объект (Рис.9)

Рис.9

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

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

Рис.10

Рассмотрим подробнее эту структуру:

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

Как и в регламентированном отчете «Бухгалтерский баланс» в оборотке можно вызвать форму расшифровки того или иного значения.

Собственные отчеты

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

  • Универсальный отчет;
  • Схема компоновки данных (СКД).

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

Универсальный отчет менее универсален, но намного проще в работе, его можно вызвать из той же подсистемы. На Рис.11 нами показан внешний вид этого объекта

Рис.11

Что мы видим:

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

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

Рассмотрим создание внешнего отчета в 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 и добавить в справочник ВнешниеОбработки Файл отчета рассмотренного в статье вы можете скачать по .

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

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

Отчеты и обработки: различия

При этом от других подобных объектов – обработок, их отличает:

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

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

Способы добавления отчета в базу

С помощью специального справочника

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

  1. Для Полного и Административного интерфейсов, перейдя по адресу: Операции->Справочники->Внешние обработки;
  2. Все остальные через: Сервис->Дополнительные отчеты и обработки.
  3. Дальше надо выбрать вид формы, которую необходимо получить.

Итак, как добавить компановку в справочник через форму, вид которой представлен на рис.1

Рис.1 Форма регистрации отчета или обработки

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

  1. Печатная форма, вызываемая по кнопке Печать или другой кнопке в тех объектах, которые указаны в табличной части «Принадлежность печатной формы»;
  2. Заполнение табличных частей, для табличных частей документов и справочников, представленных в Табличной части «Принадлежность обработки по заполнению табличных частей»;
  3. Обработка;
  4. Отчет.

Рис. 2 Поле выбора вида отчета

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

Рис.3 Надпись, говорящая о необходимости выбора файла отчета

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

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

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

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

Если конфигурация закрыта для редактирования, необходимо зайти в пункт меню Конфигурация->Поддержка->Настройка поддержки. Откроется окно, как на Рис.4

Рис. 4 Окно редактирования поддержки

  1. Нажать кнопку «Включить возможность изменения»;
  2. Положительно ответить на вопрос системы.

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

Теперь кликнув правой кнопкой мышки по строке «Отчеты» дерева конфигурации можно добавить внешний компановщик данных в конфигурацию Рис.5.

Рис. 5 Подменю добавления отчета в конфигурацию

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

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

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

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

Рис. 6 Панель навигации 1С 8.3

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

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

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

  1. Объект, к которому будет подключаться обработчик;
  2. Имя, с которым он будет зарегистрирован в базе;
  3. Наименование команды.

После этого можно приступать к размещению отчета в интерфейсе. Для этого надо щелкнуть по команде «Размещение».

Рис. 7 Размещение

При этом активность элемента регулируется выбором соответствующего значения в поле «Публикация».

Добавление без размещения

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

Регламентированные отчеты

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

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

Открыть их можно из меню Отчеты->Регламентированные отчеты. После выбора варианта отчета, программа проведет его заполнение данными из базы. Если данных будет не хватать, программа предложит довнести недостающие данные вручную.

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

На 1С? как посмотреть зарплату сотрудников в 1с?

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

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

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


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

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

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

Итак, начнем

Заготовка отчета.

Вначале создадим и сохраним на диск файл нашего внешнего отчета.

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

Вначале заходим в 1С Конфигуратор и нажимаем в главном меню «Файл» — «Новый». В предложенном списке выбираем «Внешний отчет» и нажимаем кнопку «Ок» для подтверждения выбора.

Вновь созданный отчет назовем «ОтчетПоЗарплатеСотрудников», например, и сохраним на диск.

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

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

В открывшейся форме схемы компоновки данных создадим новый набор данных — запрос. Нужную информацию мы будем получать при помощи SQL-запроса.

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

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

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

На закладке «Связи» сформируем связь наших отобранных регистров по полю «Сотрудник»

На закладке «Условия» внесем условие выбора вида взаиморасчетов. Добавим параметр ВидВзаиморасчетов, который зададим позже на одном из следующих этапов.

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

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

Нажимаем кнопку «Ок»

В поле сформируется нужный нам SQL-запрос.

Формирование параметров отчета

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

Параметры.

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

Скопируем строку ВидВзаиморасчетов нажав на первой правую кнопку мыши.

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

Формирование вида выборки.

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

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

Затем, в следующем окне, определим нужный вид группировки. Это по полю Сотрудник. Нажимаем «Далее».

И, в последнем окне назначим поле упорядочивания. Упорядочиваем по полю СуммаВзаиморасчетов, по убыванию. нажимаем «Ок».

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

Говорят, что под названием 1С изначально подразумевалась фраза «одна секунда», т.е. программы должны выдавать отчеты быстро, «в одну секунду». Скорость работы отчетов очень важна, но еще важнее, чтобы отчеты выдавали правильную информацию — разберемся с этим на примере создания простого отчета в 1С 8.3 на базе конфигурации Управление торговлей 10.3. Для создания корректных отчетов желательно (даже настоятельно рекомендуемо) уметь конфигурировать 1С и немного уметь программировать на внутреннем языке и языке запросов 1С, хотя, с другой стороны, создание отчетов — прекрасная возможность начать осваивать эти навыки.

Данное описание является учебным для понимания основных принципов создания отчетов 1С

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

Чтобы создать отчет, необходимо открыть 1С в режиме конфигуратора, для этого в окошке запуска 1С выбираете нужную базу в списке и нажимаете кнопку Конфигуратор:

В самом конфигураторе заходите в меню Файл и выбираете пункт Новый:


В появившемся меню выбираете пункт Внешний отчет и нажимаете кнопку ОК:


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


Как сделать отчет с помощью макета

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

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


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


После чего откроется окно макета, напоминающее лист Excel:


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

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

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


После этого идем в меню Таблица главного меню, заходим в подменю Имена и кликаем на пункт Назначить имя:


Программа предложит указать Имя области, имя также не должно содержать пробелов и спецсимволов, после этого нажимаем ОК, должно получиться так:


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

Чтобы отформатировать текст в ячейке, нажимаем на ячейку правой кнопкой и кликаем на Свойства. Справа откроется окно свойств ячейки. Прокручивая содержимое окна вниз, найдите поле Шрифт и нажмите на кнопку «...»:


В открывшемся окне в разделе Начертание устанавливаем галочку Жирный и нажимаем кнопку ОК:


В макете должно получиться вот так:


Таким же образом создаем область строки номенклатуры, только не выделяем жирным:


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


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


В открывшемся конструкторе формы отчета нажимаем кнопку Готово, откроется форма отчета, кликаем два раза на кнопку Сформировать:


В результате откроется окно свойств кнопки в правой части экрана, в поле Действие нажимаем на лупу:


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


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

//создаем табличный документ, который будет наполняться частями отчета и выводиться на экран
ТабДокумент = Новый ТабличныйДокумент;
//далее, получаем макет, который создавали при создании отчета
Макет = ПолучитьМакет("Макет");
//теперь нужно вывести шапку отчета, дял этого получаем область шапки из макета и выводим ее в табличный документ
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ТабДокумент.Вывести(ОбластьШапка);
//с помощью запроса получаем выборку наименований номенклатуры, которые надо вывести в отчете
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
| Наименование
|ИЗ
| Справочник.Номенклатура
|";
//получить из макета область строки номенклатуры — будем обращаться к ней в цикле для вывода каждого наименования
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
//обрабатываем в цикле каждое наименование из полученной выборки
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
//для вывода очередной строки нужно указать очередное наименование в параметре области (сам параметр мы настраивали при создании макета)
ОбластьСтрока.Параметры.Наименование = Выборка.Наименование;
//параметр заполнили, теперь можно вывести строку
ТабДокумент.Вывести(ОбластьСтрока);
КонецЦикла;
//табличный документ сформирован, теперь выводим его на экран
ТабДокумент.Показать("Перечень номенклатуры«);

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


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

  1. Необходимо создать табличный документ, который будет наполняться частями отчета и выводится на экран, делается это строкой «ТабДокумент = Новый ТабличныйДокумент;»
  2. Нужно получить макет отчета, из него будем получать структуру отчета по частям (области), делается это строкой "Макет = ПолучитьМакет("Макет")"
  3. Для вывода каждой из областей нужно получить ее из макета и вывести в табличный документ, делается это строками "ОбластьШапка = Макет.ПолучитьОбласть("Шапка")" и «ТабДокумент.Вывести(ОбластьШапка)»
  4. Если требуется заполнить параметры, который становятся известны только при выполнении программы, то перед выводом области нужно заполнить такие параметры, делается это строкой «ОбластьСтрока.Параметры.Наименование = Выборка.Наименование»
  5. И лишь, когда табличный документ заполнен всеми нужными частями отчета, он выводится на экран, делается это строкой "ТабДокумент.Показать("Перечень номенклатуры")"

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


Находим и открываем сохраненный файл отчета. В открывшейся форме нажимаем кнопку Сформировать:


и получаем перечень номенклатуры:


Это лишь один из способов создания отчетов в 1С. В следующих статьях разберем другие.


Top