Как делать отчеты в 1с 8.3. Добавление внешнего отчета в базу

Настоящим, я (далее – Лицо), даю свое согласие ИП Заболотнов Алексей Владимирович ИНН212702621854, ОГРНИП 313213018300022 (далее – Компания) на обработку своих персональных данных, указанных при оформлении заявки на сайте Компании (https://сайт) для обработки моего заказа, заявки или любого другого способа обращения в Компаниию (далее Заказ), и коммуникации со мной в рамках обработки моего Заказа, а также иных сопряженных с этим целей в рамках действующего законодательства РФ и технических возможностей Компании.

Обработка персональных данных Лица может осуществляться с помощью средств автоматизации и/или без использования средств автоматизации в соответствии с действующим законодательством РФ и положениями Компании. Настоящее согласие Лица на обработку его/ее персональных данных, указанных при оформлении Заказа на сайте Компании, направляемых (заполненных) с использованием настоящего сайта, действует с момента оформления Заказа на сайте Компании до момента его отзыва. Согласие на обработку персональных данных, указанных при оформлении Заказа на сайте Компании, направляемых (заполненных) с использованием настоящего сайта, может быть отозвано Лицом при подаче письменного заявления (отзыва) в Компанию. Обработка персональных данных Лица прекращается в течение 2 месяцев с момента получения Компанией письменного заявления (отзыва) Лица и/или в случае достижения цели обработки и уничтожается в срок и на условиях, установленных законом, если не предусмотрено иное. Обезличенные персональные данные Лица могут использоваться Компанией в статистических (и иных исследовательских целей) после получения заявления (отзыва) согласия, а также после достижения целей, для которых настоящее согласие было получено.

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

Лицо даёт согласие ИП Заболотнову Алексею Владимировичу (ИНН ИНН212702621854, ОГРНИП 313213018300022), на обработку своих персональных данных, а именно: фамилия имя отчество, контактный телефон, адрес электронной почты, а также всех персональных данных, которые необходимы для связи с Лицом и оформление договора на оказание информационных услуг.

В целях исполнения обязательств по договору Лицо предоставляет ИП Заболотнову Алексею Владимировичу (ИНН ИНН212702621854, ОГРНИП 313213018300022) право осуществлять любые действия (операции) со своими персональными данными без ограничения: сбор, запись, учет, систематизацию, хранение, уточнение (обновление, изменение), извлечение, накопление, обезличивание, блокирование, удаление, уничтожение; использование в статистических целях, в целях проведения анализа, в целях информирования Лица (с передачей по SMS или электронной почтой) о продуктах и услугах Компании, а также осуществлять любые иные действия с учетом действующего законодательства.

Правила конфиденциальности

Любая иная информация, передаваемая Лицом в связи с посещением сайта («Иная информация», которая не является персональными данными Лица и не может использоваться для идентификации Лица) может включаться в базы данных, которые принадлежат ИП Заболотнову Алексею Владимировичу (ИНН ИНН212702621854, ОГРНИП 313213018300022) или его представителям. ИП Заболотнов Алексей Владимирович сохраняет все права на эти базы данных и информацию, которая в них хранится. Иная информация, которую мы собираем, может включать Ваш IP-адрес и прочую информацию, собираемую посредством cookie-файлов (см. ниже).

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

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

Данный сайт использует технологию для определения местоположения Лица.

Лицо обязано покинуть данный сайт, если не хочет, чтобы вышеперечисленные данные (cookie, данные об IP-адресе и местоположении) обрабатывались.

Данный сайт не предназначен для лиц моложе 18 лет. Мы не собираем персональные данные лиц, которые по имеющейся у нас информации не достигли 18-летнего возраста. На данном сайте, где собирается информация, используется стандартное шифрование протокола защиты информации (SSL). Тем не менее, чтобы воспользоваться этой опцией, браузер должен поддерживать криптографическое закрытие (начиная с версии Internet Explorer 3.0 и далее). ИП Заболотнов Алексей Владимирович оставляют за собой право предоставлять информацию государственным органам при соответствующих запросах или в случаях, предусмотренных законодательством.

Для удаления информации о Лице из наших контактных списков, необходимо обращаться по следующему адресу: ИП Заболотнов Алексей Владимирович, тел.: +7 8352 441133. Или по е-mail: manager@сайт

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

Прикладные объекты, предназначенные для получения всевозможных сводных таблиц, для организации данных в вид удобный для анализа и просмотра в конфигурациях 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с 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С 8.3 — это специальный объект метаданных, предназначенный для формирования удобного для пользователя представления данных из таблиц базы данных 1С.

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

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

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

Рассмотрим основные методики создания отчетов

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

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

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

Получите 267 видеоуроков по 1С бесплатно:

Создание отчета с помощью конструктора выходной формы

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

Конструктору указывается запрос и все необходимые параметры будущего отчета, а он, в свою очередь, генерирует модули и формы отчета. Механизм основан на объекте встроенного языка 1С 8.2 — ПостроительОтчетов .

Создание отчета с помощью Универсального отчета

Универсальный отчет имеет большой функционал, удобный интерфейс настроек, привычный пользователю:

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

Это самый прогрессивный метод создания отчетов в 1С, рекомендованный и самой фирмой 1С. появилась в платформе 1С в версии 8.1.

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

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

Чем отличаются внешние отчеты от встроенных

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

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

Чем отчет отличается от обработки

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

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

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

Пример получившегося отчета можно скачать по .

Используя меню Файл->Новый, добавим новый внешний отчет, дадим ему имя и сохраним на диск. Создадим схему компоновки используя кнопку Открыть схему компоновки данных.

Написание запроса 1С для СКД

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

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

|ВЫБРАТЬ | РеализацияТоваровУслугТовары.Ссылка, | РеализацияТоваровУслугТовары.Ссылка.Организация, | РеализацияТоваровУслугТовары.Ссылка.Контрагент, | РеализацияТоваровУслугТовары.Номенклатура, | РеализацияТоваровУслугТовары.Сумма, | РеализацияТоваровУслугТовары.СтавкаНДС, | РеализацияТоваровУслугТовары.СуммаНДС, | РеализацияТоваровУслугТовары.Цена |ИЗ | Документ.РеализацияТоваровУслуг.Товары | КАК РеализацияТоваровУслугТовары |ГДЕ | РеализацияТоваровУслугТовары.Ссылка.Дата | МЕЖДУ &НачалоПериода И &КонецПериода | И РеализацияТоваровУслугТовары.Ссылка.Организация | = &Организация

Настройка полей набора данных

После написания запроса, СКД автоматически заполнит таблицу с настройками полей.

Вкратце расскажу про некоторые настройки:


Настройка ресурсов

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

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

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

  1. Столбцы Имя, Заголовок и Тип заполняются автоматически и менять их значения не следует без необходимости;
  2. Доступен список значений. Если хотите передать в параметр список, нужно установить этот флаг, иначе туда попадет только первый элемент списка.
  3. Значение. Здесь можно указать значение по умолчанию для параметра. В нашем примере выберем для параметра Организации значение Элементы(пустая ссылка на справочник Организации).
  4. Включать в доступные поля. Если снять этот флаг, параметра не будет видно в настройках: в выбранных полях, отборе.
  5. Ограничение доступности. Флаг отвечает за возможность установки значения параметра в настройке СКД.

Настройка структуры отчета

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

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

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

На этом настройка отчета закончена, теперь можно запускать его в режиме предприятия.

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

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

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

Смотрите также видео по созданию отчетов на СКД: