Как составить внешний отчет

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

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

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

Пиктограмма Новый документ

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

Создание реквизитов внешнего отчета

Наша команда предоставляет услуги по консультированию, настройке и внедрению 1С.

Связаться с нами можно по телефону +7 499 350 29 00.

Услуги и цены можно увидеть по ссылке.

Будем рады помочь Вам!

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

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

Конструктор макета 1С 8

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

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

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

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

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

Область Шапка макета отчета

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

Область ДанныеКонтрагент макета отчета

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

Область ДанныеДоговорКонтрагента макета отчета

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

Область Подвал макета отчета

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

Макет отчета по 62 счету

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

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

Конструктор формы отчета

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

Конструктор формы отчета расположение элементов управления

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

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

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

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

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

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

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

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

Создание процедуры отрабатывающей нажатие на кнопку

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

Переключение между формой и ее модулем

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Окно конструктора запроса 1С 8

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

Выбор виртуальной таблицы Хозрасчетный.Обороты в конструкторе запроса

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

Открытие окна параметров виртуальной таблицы

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

Заполнение параметров периода виртуальной таблицы запроса 1С 8

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

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

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

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

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

План счетов счет 62

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

Выбор полей таблицы в конструкторе запросов

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

Псевдонимы для полей запроса 1С 8

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

Создание итогов в конструкторе запросов 1с 8

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

Запрос.Текст = "ВЫБРАТЬ
|   ХозрасчетныйОбороты.Субконто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 и добавить в справочник ВнешниеОбработки Файл отчета рассмотренного в статье вы можете скачать по ссылке.

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

Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = Новый Структура;

МассивНазначений = Новый Массив;

// МассивНазначений.Добавить(«подсистема.CRMИМАРКЕТИНГ»); //Указываем документ к которому делаем внешнюю печ. форму

ПараметрыРегистрации.Вставить(«Вид», «ДополнительныйОтчет»); //может быть — ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов…

// ПараметрыРегистрации.Вставить(«Назначение», МассивНазначений);

ПараметрыРегистрации.Вставить(«Наименование», «ТестовыйОтчет»); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок

ПараметрыРегистрации.Вставить(«БезопасныйРежим»,ИСТИНА);

ПараметрыРегистрации.Вставить(«Информация», «Тестовый Отчет»);

ПараметрыРегистрации.Вставить(«Версия», «1.0»);    

ТаблицаКоманд = ПолучитьТаблицуКоманд();

ДобавитьКоманду(ТаблицаКоманд, «ТестовыйОтчет», «ТестовыйОтчет», «ОткрытиеФормы»);

ПараметрыРегистрации.Вставить(«Команды», ТаблицаКоманд);

Возврат ПараметрыРегистрации;

КонецФункции

Функция ПолучитьТаблицуКоманд()

Команды = Новый ТаблицаЗначений;

Команды.Колонки.Добавить(«Представление», Новый ОписаниеТипов(«Строка»));//как будет выглядеть описание печ.формы для пользователя

Команды.Колонки.Добавить(«Идентификатор», Новый ОписаниеТипов(«Строка»)); //имя макета печ.формы

Команды.Колонки.Добавить(«Использование», Новый ОписаниеТипов(«Строка»)); //ВызовСерверногоМетода

Команды.Колонки.Добавить(«ПоказыватьОповещение», Новый ОписаниеТипов(«Булево»));

Команды.Колонки.Добавить(«Модификатор», Новый ОписаниеТипов(«Строка»));

Возврат Команды;

КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = «»)

НоваяКоманда = ТаблицаКоманд.Добавить();

НоваяКоманда.Представление = Представление;  

НоваяКоманда.Идентификатор = Идентификатор;

НоваяКоманда.Использование = Использование;

НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;

НоваяКоманда.Модификатор = Модификатор;

КонецПроцедуры

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

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

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

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

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

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

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

Подсистемы для отчета  в 1С

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

Права на отчет в 1С

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

В этой статье я покажу пример создания простого отчета с помощью СКД.

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

Открыть схему компоновки данных 1С

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

Конструктор макета в 1С

Будет создана схема компоновки данных, в которой добавим набор данных Запрос.

Набор данных Запрос в СКД

После, нажмем на кнопку «Конструктор запроса», откроется конструктор запроса, в котором я выберу одну таблицу и одно поле.

Конструктор запроса в СКД

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

Схема компоновки данных в 1С

Осталось перейти в настройки, и создать группировку.

Настройки схема компоновки данных в 1С

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

Настройки схема компоновки данных в 1С

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

Настройки схема компоновки данных в 1С

Заметьте, созданная схема компоновки появится в редакторе отчета на закладке Макеты.

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

Наш отчет готов, осталось озаботиться тем, чтобы пользователь мог формировать этот отчет.

Вывести отчет в 1С

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

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

Открыть командный интерфейс 1С

Отчет должен быть в группе Панель Действий.Отчеты.

Отчет в командном интерфейсе 1С

Чтобы отчет был в этой группе, должно выполняться несколько условий.

Первое, в редакторе отчета на закладке Команды должен быть установлен флаг «Использовать стандартные команды».

Использовать стандартные команды  отчета 1С

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

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

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

Группа отчеты подсистемы 1С

И его можно будет сформировать.

Отчеты  1С

Внешний отчет 1С

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

Создать внешний отчет в 1С

Создать внешний отчет можно несколькими способами. Первый способ —  создать новый внешний отчет.

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

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

Создать внешний отчет в 1С

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

Создать внешний отчет в 1С

Откроется знакомый нам редактор отчёта, с которым работаете так, как работаете с редактором обычного отчёта.

Редактор внешнего отчета в 1С

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

Сохранение внешнего отчета в 1С

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

Сохранение внешнего отчета в 1С

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

Сохранение внешнего отчета в 1С

Открыть внешний отчет в 1С

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

Интерактивное открытие внешнего отчета 1С

Если это право включено, то внешний отчет в 1С можно открыть, используя команду «Открыть» подменю файл, которое находится в меню «Сервис и настройка» (начиная с версии платформы 1С 8.3.14).

Открыть внешний отчет в 1С

В окне «Открыть» нужно выбрать файл внешнего отчета (с расширением erf).

Открыть внешний отчет в 1С

Выйдет предупреждение  безопасности.

Открыть внешний отчет в 1С

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

Открыть внешний отчет в 1С

Другие статьи по конфигурированию в 1С:

Обработки 1С

Константы в 1С

Справочники в 1С

Документы в 1С

Журналы документов в 1С

Перечисления в 1С

Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»

Программировать в 1С за 11 шагов

Книга написана понятным и простым языком — для новичка.

  1. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  2. Научитесь понимать архитектуру 1С;
  3. Станете писать код на языке 1С;
  4. Освоите основные приемы программирования;
  5. Закрепите полученные знания при помощи задачника.

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

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

Основы разработки в 1С такси
  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 15% — 48PVXHeYu


Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы:

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

SKDСистема Компоновки Данных (СКД) 1С позволяет создавать программисту массу необходимых отчётов «на лету». Использование этой системы, в отличие от конструктора запроса и непосредственного написания кода отчёта, является явным преимуществом. В этой статье, я хочу показать, как эффективно создавать отчёты СКД в 1С, не затрачивая на это много времени.

Начнём с создания внешнего отчёта. В главном меню выбираем Файл ? Новый… В списке щёлкаем на «Внешний отчет».

image001

В открывшемся окне указываем имя отчёта и синоним.

image002

Затем в этом же окне отчёта щёлкаем на кнопку «Открыть схему компоновки данных». Откроется окно создания макета, где нам остаётся только нажать на кнопку «Готово».

image003

image004

В окне настройки СКД щёлкаем правой клавишей мыши на «Наборы данных» и выбираем пункт «Добавить наборы данных – запрос».

image005

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

image006

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

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

image007

Следующим шагом из таблицы остатков выбираем нужные нам в задаче поля, соответственно это: «Номенклатура», «Организация» и «КоличествоОстаток».

image008

Чтобы задать срез на конкретную дату, открываем параметры виртуальной таблицы. Выделяем выбранную нами таблицу в поле «Таблицы» и щёлкаем вверху на кнопку «Параметры виртуальной таблицы…». В окне параметров вводим параметр даты среза.

image009image010

Всё, задача по построению запроса выполнена. Нажимаем на «ОК» в окне конструктора и переходим к построению структуры отчёта СКД в 1С.

image011

Текст запроса при этом будет выглядеть так:

ВЫБРАТЬ

ПартииТоваровНаСкладахОстатки.Номенклатура,

ПартииТоваровНаСкладахОстатки.Организация,

ПартииТоваровНаСкладахОстатки.КоличествоОстаток

ИЗ

РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&ДатаСреза, ) КАК ПартииТоваровНаСкладахОстатки

Чтобы указать отчёту СКД какие поля нужно суммировать для получения общих остатков номенклатуры, в окне настройки СКД переходим на вкладку «Ресурсы» и выбираем поле «КоличествоОстаток» для суммирования.

image012

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

image013

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

image014

Затем в поле структуры отчёта СКД щёлкаем правой кнопкой мыши на элемент «Отчет» и выбираем пункт меню «Новая группировка…» (аналогично можно нажать клавишу Insert на клавиатуре).

image015

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

image016

Аналогично щёлкаем правой кнопкой по группировке «Организация» и добавляем группировку по полю «Номенклатура». В итоге получаем следующую структуру:

image017

У элемента «Отчет» выбираем снизу вкладку «Выбранные поля» и перетаскиваем из левого поля ресурс «КоличествоОстаток» в список полей.

image018

Закрываем окно настроек отчёта СКД в 1С. Отчёт готов для формирования в пользовательском режиме 1С:Предприятие. Для сохранения внешнего отчёта в главном меню выбираем Файл ? Сохранить как… В окне сохранения файла вводим название отчёта и нажимаем кнопку «Сохранить».

image019

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

image020

В форме самого отчётаперед формированием заполняем значения параметров. Для этого нажимаем на кнопку «Настройки…» и для отчёта устанавливаем значение параметра «Дата среза». Дата среза – это как раз та дата, на которую нужно получить остатки по номенклатуре. Нажимаем «ОК».

image021

В форме отчёта нажимаем кнопку «Сформировать» и получаем готовый отчёт по остаткам с группировкой по организациям и номенклатуре. Отчёт можно свернуть-развернуть по разным организациям, сохранить в формате MSExcel, а также распечатать на принтере.

image022

Скачать созданный отчёт можно здесь.

Скачать

1.Создаем новый внешний отчет через конфигуратор 1с

createO

2.Присваиваем отчету имя и добавляем пустую форму отчета, нажав на лупу

1

3. В созданной форме добавляем элемент управления ‘Выбор периода’ (меню Форма-вставить Элемент управления)

2

4. Теперь хотим чтобы при открытии формы отчета автоматически проставлялись даты – к примеру с начала прошлого месяца до конца прошлого месяца.

5. Создаем макет отчета – (Макеты-добавить, тип макета:Табличный документ)

3

6.Добавляем заголовок и постоянные названия для строк и колонок, затем форматируем (шрифты, размеры, границы, цвет)

4

7. Теперь добавляем переменные значения (здесь это будет период и количество различных типов сеток).Вводим имя параметра и меняем в свойствах ячейки Заполнение со значения ‘Текст’ на ‘Параметр’

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

5

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

naming

Здесь в отчете будут две области ‘ЗаговокОтчета’ и ‘Строки’. Сразу оговорюсь не называйте область “Заголовок” (похоже на зарезервированное поле), во внешнем отчете происходит конфликт и область не выбирается, идут ошибки с параметрами итд.

9. Сформируем саму печатную форму по нажатию на кнопку.

Источник

Обучение программированию на 1С

Создание простейшего внешнего отчёта на СКД

SKDСистема Компоновки Данных (СКД) 1С позволяет создавать программисту массу необходимых отчётов «на лету». Использование этой системы, в отличие от конструктора запроса и непосредственного написания кода отчёта, является явным преимуществом. В этой статье, я хочу показать, как эффективно создавать отчёты СКД в 1С, не затрачивая на это много времени.

image0015

В открывшемся окне указываем имя отчёта и синоним.

image0024

Затем в этом же окне отчёта щёлкаем на кнопку «Открыть схему компоновки данных». Откроется окно создания макета, где нам остаётся только нажать на кнопку «Готово».

image0034

image0044

В окне настройки СКД щёлкаем правой клавишей мыши на «Наборы данных» и выбираем пункт «Добавить наборы данных – запрос».

image0053

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

image0063

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

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

image0073

Следующим шагом из таблицы остатков выбираем нужные нам в задаче поля, соответственно это: «Номенклатура», «Организация» и «КоличествоОстаток».

image0083

Чтобы задать срез на конкретную дату, открываем параметры виртуальной таблицы. Выделяем выбранную нами таблицу в поле «Таблицы» и щёлкаем вверху на кнопку «Параметры виртуальной таблицы…». В окне параметров вводим параметр даты среза.

image0092image0103

Всё, задача по построению запроса выполнена. Нажимаем на «ОК» в окне конструктора и переходим к построению структуры отчёта СКД в 1С.

image0111

Текст запроса при этом будет выглядеть так:

РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&ДатаСреза, ) КАК ПартииТоваровНаСкладахОстатки

Чтобы указать отчёту СКД какие поля нужно суммировать для получения общих остатков номенклатуры, в окне настройки СКД переходим на вкладку «Ресурсы» и выбираем поле «КоличествоОстаток» для суммирования.

image0121

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

image013

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

image014

Затем в поле структуры отчёта СКД щёлкаем правой кнопкой мыши на элемент «Отчет» и выбираем пункт меню «Новая группировка…» (аналогично можно нажать клавишу Insert на клавиатуре).

image015

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

image016

Аналогично щёлкаем правой кнопкой по группировке «Организация» и добавляем группировку по полю «Номенклатура». В итоге получаем следующую структуру:

image017

У элемента «Отчет» выбираем снизу вкладку «Выбранные поля» и перетаскиваем из левого поля ресурс «КоличествоОстаток» в список полей.

image018

image019

image020

В форме самого отчётаперед формированием заполняем значения параметров. Для этого нажимаем на кнопку «Настройки…» и для отчёта устанавливаем значение параметра «Дата среза». Дата среза – это как раз та дата, на которую нужно получить остатки по номенклатуре. Нажимаем «ОК».

image021

В форме отчёта нажимаем кнопку «Сформировать» и получаем готовый отчёт по остаткам с группировкой по организациям и номенклатуре. Отчёт можно свернуть-развернуть по разным организациям, сохранить в формате MSExcel, а также распечатать на принтере.

Источник

Создание внешнего отчета в 1С 8

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

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

Piktogramma Novyiy dokument

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

Sozdanie rekvizitov vneshnego otcheta

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

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

Konstruktor maketa 1S 8

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

Получите понятные самоучители по 1С бесплатно:

Sozdanie parametra v makete otcheta

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

Oblast SHapka maketa otcheta

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

Oblast DannyieKontragent maketa otcheta

Oblast DannyieDogovorKontragenta maketa otcheta

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

Oblast Podval maketa otcheta

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

Maket otcheta po 62 schetu

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

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

Konstruktor formyi otcheta

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

Konstruktor formyi otcheta raspolozhenie e%60lementov upravleniya

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

Forma otcheta 1s 8

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

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

Forma otcheta 1s 8 1

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

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

Sozdanie protseduryi otrabatyivayushhey nazhatie na knopku

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

Pereklyuchenie mezhdu formoy i ee modulem

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

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

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

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

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

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

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

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

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

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

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

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

Okno konstruktora zaprosa 1S 8

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

Vyibor virtualnoy tablitsyi Hozraschetnyiy.Oborotyi v konstruktore zaprosa

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

Otkryitie okna parametrov virtualnoy tablitsyi

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

Zapolnenie parametrov perioda virtualnoy tablitsyi zaprosa 1S 8

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

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

Zapolnenie parametrov perioda virtualnoy tablitsyi zaprosa 1S 8 1

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

Plan schetov schet 62

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

Vyibor poley tablitsyi v konstruktore zaprosov

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

Psevdonimyi dlya poley zaprosa 1S 8

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

Sozdanie itogov v konstruktore zaprosov 1s 8

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Превращение внутреннего отчета во внешний без снятия с поддержки конфигурации

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

06bf899fa5bedded2ac059e337c3cc51

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

1676a1a3be3d797d1d0e0c6bbd285299

e90fecb4c68abdbd87f150ce26df09fc

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

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

ebbeaecae415996fec5e9a4194093d27

Далее переименовал имя отчета и вот беда подкралась не заметно, в расширении не открывается СКД этого отчета (потому что мы не «перетянули» в расширение все объекты, из которых строится отчет).

cbea6ea1366d97727aaa3e1185cb491c

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

Сделать это тоже очень просто достаточно просто сравнить отчет

1383e3bd94677fcc741b78d43dfa9821

при этом мы знаем, что нам нужно только измененное СКД:

598b1be1b0d76839038f0e2c683f76b2

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

Источник

Понравилась статья? Поделить с друзьями:

Не пропустите также:

  • Как составить опись вложения посылки
  • Как найти агента марада
  • Как найти плотность человека на км2
  • Как найти монстра в minecraft
  • Как найти косинус синус тангенс угла 120

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии