1с создание внешнего отчета управляемые формы

Пример создания внешнего отчета в 1с

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

createO

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

1

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

2

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

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

3

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

4

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

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

5

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

naming

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

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

Источник

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

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

Источник

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

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

sozdanie vneshnego otcheta 1

sozdanie vneshnego otcheta 2

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

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

sozdanie vneshnego otcheta 3

В шаблоне – четыре основных части:

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

В Шапке прописываем название документа: Обороты сч. 62. Используя инструмент Границы, рисуем шапку отчета, после – задаем параметры. Последние позволяют указывать в отчете необходимые сведения. Но об этом мы поговорим позднее.

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

sozdanie vneshnego otcheta 4

В результате название параметра в ячейке окажется окруженным скобками (<>). Вид получившейся Шапки должен быть таким:

sozdanie vneshnego otcheta 5

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

sozdanie vneshnego otcheta 6

sozdanie vneshnego otcheta 7

В части Подвал указываем параметры для результатов Расхода и Прихода.

sozdanie vneshnego otcheta 8

В результате должен появиться шаблон следующего вида:

sozdanie vneshnego otcheta 9

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

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

sozdanie vneshnego otcheta 10

sozdanie vneshnego otcheta 11

В результате будет показана форма следующего вида:

sozdanie vneshnego otcheta 12

Этот вид формы нам не подходит, изменим его:

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

sozdanie vneshnego otcheta 13

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

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

sozdanie vneshnego otcheta 14

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

sozdanie vneshnego otcheta 15

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

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

Макет = ПолучитьМакет («Макет»)

Оформляем переменные для всех областей шаблона. Используем макет ПолучитьОбласть ( ИмяОбласти >).

ОбластьШапка = Макет. ПолучитьОбласть («Шапка»)

ОбластьПодвал = Макет. ПолучитьОбласть («Подвал»);

ОбластьДанныеДоговор =Макет. ПолучитьОбласть (« ДанныеДоговор »)

ОбластьДанныеКонтрагент = Макет. ПолучитьОбласть (« ДанныеКонтрагент »).

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

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

Другие действия с частью не нужны: убираем Шапку в поле таблицы-документа.

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

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

Запрос. УстановитьПараметр (« КонецПериода », КонецПериода )

Запрос. УстановитьПараметр (« НачалоПериода », НачалоПериода )

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

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

sozdanie vneshnego otcheta 16

sozdanie vneshnego otcheta 17

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

sozdanie vneshnego otcheta 18

sozdanie vneshnego otcheta 19

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

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

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

sozdanie vneshnego otcheta 20

sozdanie vneshnego otcheta 21

sozdanie vneshnego otcheta 22

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

sozdanie vneshnego otcheta 23

sozdanie vneshnego otcheta 24

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

В результате у нас будут записи с результатом по каждому контрагенту.

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

Для корректного вывода данных с учетом иерархии и разворотами по знаку «+», указываем начало автоматической группировки строчек документа-таблицы:

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

Аннулируем параметры Расход и Приход области ДанныеКонтрагент в самом начале цикла. Что это нам даст? Предположим, что по поставщику, назовем его Х, расход составляет 10, а приход 20. У следующего за ним поставщика, назовем его Н, расход и приход отсутствуют полностью. При аннулировании параметров Расхода и Прихода в такой ситуации в строке по поставщику Н окажутся данные поставщика Х – расход 10 и приход 20.

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

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

После для указанного контрагента нужно выполнить выборку по его соглашениям:

Используем цикл Пока для выполнения обхода:

Обнуляем параметры Расход и Приход в цикле по соглашениям контрагентов. Оформляем часть ДанныеДоговора из выборки и выносим эту часть на 2-ой уровень записей в таблицу-документ:

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

После этого вынос данных в части ДанныеДоговорКонтрагент и ДанныеКонтрагент будет закончен. Потребуется только окончить автоматическую группировку строчек таблицы-документа:

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

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с создаем печатную форму
  • 1с содержание для работ оформляемых актом