1с отчет без скд
Приветствую. Продолжаем изучать объекты на дереве конфигурации и на очереди "Отчет" (Рисунок 1).
Создание отчета ничем не отличается от создания любого другого объекта дерева конфигурации: через контекстное меню или через значок плюсик.
Отчет - это объект дерева конфигурации, который предназначен для обработки данных и вывода их в виде, удобном пользователю.
Как и в жизни, отчеты хранят какую-то информацию, так и наши отчеты будут хранить информацию, которую хочет видеть пользователь.
Приступим к созданию отчета. Перед нами стоит задача: необходимо вывести список всех сотрудников по предприятию.
Добавляем отчет и называем его "Список сотрудников" (Рисунок 2).
Теперь необходимо нажать на кнопку "Открыть схему компоновки данных" (Рисунок 3).
Схема компоновки данных (СКД) - это специальный механизм (инструмент) платформы, который позволяет с легкостью создавать отчеты, даже не имея опыта разработки.
В открывшемся окне нажимаем "Готово"(Рисунок 4).
В следующем окне нужно подготовить все для создания отчета. Для этого создадим запрос (Рисунок 5).
После этого переходим в низ открывшегося окна и нажимаем кнопку "Конструктор запроса" (Рисунок 6).
В открывшемся окне нужно выбрать тот объект, по которому вы хотите сделать отчет, в данном случае нас интересует отчет по сотрудникам, значит выбираем справочник "СписокСотрудников" (Рисунок 7).
Перетаскиваем справочник (или двойным нажатием или на стрелочку вправо, выделив справочник) во второй столбец (Рисунок 7).
Теперь необходимо раскрыть элементы этого справочника и выбрать там те, которые мы хотим видеть в отчете (Рисунок 8). Перетаскиваем в столбец "Поля" нужные элементы (Рисунок 8).
После этого нажимаем "Ок" и в поле "" появится запрос (Рисунок 9).
Переходим на вкладку "Настройки" (Рисунок 10).
На этой вкладке нужно создать сам отчет (Рисунок 11). Создаем группировку.
В новом окне нажимаем "Ок", ничего не меняя (Рисунок 12).
После этого идем вниз и перетаскиваем нужные поля (Рисунок 13).
В итоге у вас должно получиться так (Рисунок 14).
После этого закроем все окна, отчет готов, но нужно добавить его в одну из подсистем, иначе пользователь не сможет им пользоваться (Рисунок 15).
Запустим пользователя, перейдем в подсистему и найдем наш отчет (Рисунок 16).
Как видите, отчета нет. Нужно нажать кнопку "Сформировать" и отчет появится (Рисунок 17).
Таким образом, нажимая на кнопку "Сформировать" отчет будет формироваться каждый раз по новым данным, которые пользователь может добавлять каждый час или день.
Создание отчета завершено - это самый простейший отчет, который может создавать платформа. Это минимально, что она может и ее функционал намного больше, чем мы сделали сейчас. Но все это еще впереди, пока остановимся на этом.
На этом статья урока подходит к концу. Попробуйте выполнить все действия, которые описаны в этом уроке. Если что-то не получается, то вы всегда сможете написать вопрос о том, что вам непонятно или вернуться к предыдущим урокам и посмотреть их - ссылки внизу!
Прошу прощение за создание отдельной темы, но как создать отчет без СКД, что-бы был виден код, т.к. в процедуру формирования отчета, нужно передать объекты, для создания правильного селекта.
Книга "Разработка сложных отчетов" она под СКР :(
(0) Габец А.П., Гончаров Д.И., Козырев Д.В., Кухлевский Д.С., Радченко М.Г. - Профессиональная разработка в системе 1С: Предприятие 8.
Там очень много занимают параметры. Они булевы. И нельзя сделать недоступным один параметр, при выборе другого. Нельзя посмотреть выбран ли параметр вообще. Т.е. мб и можно, но надо достать до когда.
(7) опляк, это горячее.
Т.е. создаю отчет в СКД, но не беру параметры, а реквизиты добавляю на форму, и в хз какую переопределенную процедуру запихиваю свои параметры, эквивалентные параметрам запроса?
(10) Курс «Практическое применение системы компоновки данных» Методическое пособие, очень хорошая штука, рекомендую.
(10) да. то есть берешь скд стандартную схему пишешь свои параметры в скд. делаешь их доступными в настройке и далее программно передаешь параметры
(17) Формирование отчета выполняется в предопределенной процедуре ПриКомпоновкеРезультата() Именно там можно подсунуть СКД любые параметры, которые ты хочешь, да и вообще, полностью программно сваять весь отчет
(18)
-Разработка сложных отчетов
Метод вызова формирования отчета.
Т.е. Кнопочка "Сформировать" на форме отчета. Я не могу найти ее метод, а модуле пусто, и модуле объекта и менеджера, везде все пусто. Каким образом добавить параметры для селекта из формы вообще уже хз голова раскалывается. Яндекс адекватного ничего не выдает на "создание отчета с параметрами без скд", одни ссылки на форумы, где само-собой пусто\не то.
Как сделать отчет без СКД - печатные формы делал когда-нибудь? Без СКД отчет делается по такому же принципу.
А СКД, но программно задавая свои параметры, см (19). Открываешь модуль объекта, открываешь список процедур и видишь там две надписи с вот такими скобочками <> Это предопределенные процедуры. Их можно прописать в модуле, если ты хочешь изменить их поведение.
(22) Да я уже понял что формирую отчет благодаря СКД, прописываю в запросе все параметры. Проблемы что стандартными параметрами некрасивы и не подходят. Реквизиты формы куда больше нравятся.
Рассмотрим создание внешнего отчета в 1с 8 без использования системы компоновки данных. Для создания внешнего отчета будем использовать конфигурацию Бухгалтерия 2.0, исходные данные: “Написать отчет по 62 счету бухгалтерского учета в который будут выводится обороты за указанный период в разрезе Контрагентов и Договоров контрагентов.
1. Создание отчета
В первую очередь создадим файл внешнего отчета, для этого зайдем в 1с 8 в режиме Конфигуратор, перейдем в меню Файл -> Новый, либо нажмем на пиктограмму Новый документ.
В списке выберем пункт Внешний отчет. После создания внешнего отчета зададим ему Имя(например ПростейшийОтчет) и сохраним его на диск. Также добавим два реквизита: НачалоПериода и КонецПериодатипа Дата, они понадобятся нам для ограничения временного интервала выборки данных при формировании отчета.
2. Создание макета внешнего отчета
Для формирования отчета в 1с 8 нужен макет, это шаблон для вывода данных в котором задаются все нужные параметры, рисуются таблицы и т.д. Добавим новый макет, для этого в дереве метаданных отчета выберем пункт Макеты и нажмем кнопку Добавить, при создании выберем для макета тип Табличный документ.
В нашем макете будет 4 области:
- Шапка — в эту область мы будем выводить наименование отчета, период за который он сформирован и шапку таблицы;
- ДанныеКонтрагент — в эту область мы будем выводит в таблицу данные по контрагенту;
- ДанныеДоговорКонтрагента — в эту область мы будем выводит в таблицу данные по договору контрагента;
- Подвал — в эту область мы будем выводить итоговые значения по всему отчету для полей Приход и Расход.
Приступим к созданию областей макета. Для того что бы создать область в макете выделите нужное количество строк и нажмите Меню Таблица -> Имена -> Назначить имя(Либо Ctrl + Shift + N). В область Шапканапишем наименование отчета: Обороты 62 счета, нарисуем при помощи инструмента Границы шапку отчета, а так же зададим параметры НачалоПериода и КонецПериода. При помощи параметров в отчет можно выводить нужные данные, мы будем заниматься эти на следующем этапе разработки, а именно при написании программного кода отчета. Что бы создать параметр в макете выберите нужную ячейку, напишите в ней наименование параметра(без пробелов), щелкните по ней правой кнопкой мыши, в открывшемся меню выберите пункт Свойства. В свойствах ячейки на закладке Макет выберите заполнение Параметр.
Получите понятные самоучители по 1С бесплатно:
После этого, в ячейке имя параметра будет заключено в угловые скобки(”<>“). В итоге область Шапкадолжна выглядеть так:
В области ДанныеКонтрагент создадим параметры для вывода наименования контрагента, а так же для прихода и расхода по 62 счету, при помощи инструмента Границы оформим область в виде строки таблицы.
В области ДанныеДоговорКонтрагента создадим параметры для вывода наименования договора, а так же для прихода и расхода по 62 счету, при помощи инструмента Границы оформим область в виде строки таблицы. Сделаем небольшой отступ перед параметром ДоговорКонтрагента(это можно сделать при помощи разбиения и объединения ячеек. Правой кнопкой мыши по ячейке -> Объединить или Разбить ячейку), он нужен для того что бы в отчете было видно, что строка по договору находится ниже по иерархии чем строка по контрагенту.
В области Подвал создадим параметры для итогов по приходу и расходу.
В итоге мы должны получить такой макет:
3. Создание формы отчета
Для вывода данных, задания периода формирования и кнопки Сформировать нашему отчету потребуется форма. Для создания формы найдите в дереве метаданных внешнего отчета пункт Формы и нажмите кнопку Добавить. На первой странице конструктора формы не нужно вносить никаких изменений, следует просто нажать кнопку Далее.
На следующей странице конструктора выберем оба доступных реквизита(НачалоПериода, КонецПериода) для расположения на форме.
В итоге у нас получится вот такая форма:
Но в таком виде она нас не устраивает, внесем в нее некоторые изменения:
- Перетащим кнопку Сформировать из нижней панели отчета на верхнюю(так будет удобнее для пользователя);
- Растянем форму по вертикали и горизонтали;
- Расположим поля НачалоПериода и КонецПериода по горизонтали;
- Добавим на форму элемент управления Поле табличного документа(в него и будет выводиться наш отчет), зададим ему имя ТабДок;
- Создадим кнопку выбора периода(при ее нажатии будет выводиться диалог с удобным выбором нужного периода). Программный код для нее мы писать пока не будем, поэтому просто расположим кнопку рядом с полями периода.
В итоге наша форма будет иметь такой вид:
4. Программирование
После создания формы отчета приступим к программированию. Для начала создадим процедуру вывода диалога выбора периода(кнопку для этого мы уже создали на предыдущем этапе). Щелкнем правой кнопкой мыши на кнопке и выберем пункт меню Свойства, в свойствах кнопки перейдем на закладку События, где при помощи кнопки со значком лупы создадим процедуру Кнопка1Нажатие в модуле формы.
Переключатся между формой и ее модулем можно при помощи закладок внизу формы
Для вызова формы выбора периода воспользуемся типовой процедурой Бухгалтерии 2.0 из общего модуля РаботаСДиалогами — ОбработчикНастройкаПериодаНажатие, в нее в качестве параметров нужно передать реквизиты отчета НачалоПериода и КонецПериода.
Теперь перейдем к написанию кода, который будет формировать и выводить наш отчет. В модуле формы уже есть процедура КнопкаСформироватьНажатие, которая будет выполняться при нажатии кнопки Сформировать, там то мы и будем писать наш код. Начнем с инициализации нужных переменных. В первую очередь создадим переменную для поля табличного документа в которое мы будем выводить данные, это не обязательно, просто запись обращений к нему станет короче, а значит программный код будет более понятен для чтения.
Получим макет внешнего отчета воспользовавшись функцией ПолучитьМакет(), в параметр ему передадим имя макета, и если такой макет существует, то функция его найдет.
После того как макет получен, создадим переменные для каждой из его областей, воспользуемся для этого методом макета ПолучитьОбласть().
Очистим поле табличного документа. Это нужно для того что бы при каждом новом формировании отчета старые данные удалялись.
Теперь, когда инициализация переменных закончена, перейдем к поочередному заполнению и выводу областей макета. Начнем с шапки. Если вы помните мы создали в этой области два параметра НачалоПериода и КонецПериода, передадим туда значения периода формирования отчета, для этого воспользуемcя свойством Параметры области макета.
Больше никаких действий с областью Шапка производитель не надо, поэтому выведем ее поле в табличного документа.
Далее займемся написанием запроса к базе данных, при помощи которого возьмем обороты по счету 62 из регистра бухгалтерии Хозрасчетный. Определим переменную, в которой будет находиться наш запрос.
Перед тем как приступить к написанию текста запроса передадим в него нужные параметры. Так как мы пишем запрос по счету 62 бухгалтерского учета, то в первую очередь создадим параметр для него
Так же в запрос необходимо передать период формирования отчета. Не забываем, что для периода формирования у нас есть специальные реквизиты отчета, их и передаем в качестве параметров.
Приступим к написанию текста запроса, делать это будем при помощи конструктора запросов. Во многих учебных пособиях пишут, что нужно уметь писать запрос и вручную и используя конструктор, но на практике это не так. В задачах, которые постоянно встречаются перед программистом 1С, приоритетом является быстрое и качественное написание кода, а при составлении запроса к базе в ручную этого достичь практически невозможно, вы будете тратить кучу драгоценного времени на то, что бы правильно воспроизвести все конструкции запроса, найти опечатки которые вы сделали при написании и т.п.. Поэтому не тратьте зря время на попытки писать запросы вручную, а пользуйтесь конструктором запросом. Он сэкономит ваше время и позволит без особых усилий писать сложные запросы. Что бы начать писать текст запроса напишем в коде:
После этого поставим курсор между кавычками, нажмем правую кнопку мыши и выберем пункт Конструктор запроса. Откроется окно конструктора запроса.
Теперь необходимо выбрать нужную нам таблицу базы данных 1С 8. Нам необходима виртуальная таблица Обороты регистра бухгалтерии Хозрасчетный. Найдем ее в левой части окна конструктора
Переместим ее в область Таблицы и займемся заполнением параметров. Для всех виртуальных таблиц запроса есть специальный набор параметров, позволяющих выбирать нужные данные из основной таблицы(в нашем случае основная таблица Регистр бухгалтерии Хозрасчетный). Откроем окно параметров виртуальной таблицы.
Заполним параметры, периода которые мы передали в запрос. Что бы в тексте запроса использовать параметр следует перед его именем писать символ амперсанда(&)
Осталось заполнить условие по счету бух. учета. Для этого найдем в параметрах виртуальной таблицы строку УсловиеСчета и напишем там
Также можно воспользоваться конструктором составления условий нажав на кнопку с тремя точками.
Больше никаких условий на виртуальную таблицу налагать не требуется, поэтому нажмем кнопку ОК в окне параметров виртуальной таблицы. Далее необходимо выбрать нужные нам поля из таблицы Хозрасчетной.Обороты(а именно: Контрагент, Договор контрагента, Приход и Расход). Что бы посмотреть список полей доступных в выбранной нами таблице нажмет символ ”+“ возле ее названия. После этого перетащим нужные поля в самую правую область конструктора запросов, которая так и называется: Поля. Если открыть план счетов бухгалтерского учета, то мы увидим, что для счета 62 аналитика по Контрагенту — это Субконто1, а по ДоговоруКонтрагента — Субконто2.
Поэтому из полей виртуальной таблицы выбираем Субконто1 и Субконто2. Так как нам необходим приход и расход по сумме, то выбираем также поля СуммаОборотДт и СуммаОборотКт
Заполним псевдонимы выбранных нами полей, для этого перейдем на закладку Объединения/Псевдонимы и зададим нужные имена полей.
Так как в нашем отчете данные будут выводиться иерархично(Контрагент на первом уровне, а все его договоры на втором), то настроим вывод данных в иерархии при помощи Итогов. Перейдем в конструкторе на закладку Итоги. В группировочные поля перетащим последовательно Контрагент и ДоговорКонтрагента, а в итоговые Приход и Расход.
На этом работа в конструкторе запроса завершена, нажимаем кнопку ОК и видим, что текст нашего запроса появился в программном коде.
После того как мы закончили написание запроса, приступим к заполнению областей ДанныеКонтрагент, ДанныеДоговорКонтрагент и Подвал. Все эти области мы заполним данными полученными при выполнении запроса. Так как наш запрос содержит группировки(Контрагент и ДоговорКонтрагента) выберем из него данные следующим образом:
Таким образом мы получим записи с итогами по всем контрагентам.
Перед тем как обходить данные выборки при помощи цикла инициализируем переменные предназначенные для подсчета общих итогов по отчету:
Для того чтобы данные отчета выводились с иерархией(и разворотами по ”+“) зададим начало автогруппировки строк табличного документа:
Все приготовления закончены, теперь приступим к обходу результатов запроса. Обход будем осуществлять при помощи цикла Пока
В начале цикла обнулим параметры Приход и Расход области ДанныеКонтрагент. Для чего это нужно? Представим ситуацию, что по контрагенту Дядя Вася, приход 10, а расход 5, а для за ним следующего контрагента Дядя Петя нет ни прихода ни расхода, в таком случае если мы не обнулим параметры Приход и Расход, то по в строке по контрагенту Дядя Петя попадет приход 5 и расход 10.
После этого заполняем область ДанныеКонтрагент данными элемента выборки
После заполнения данным можно выводить область в Табличный документ, Так как мы используем автогруппировку строк, то нужно указать уровень строки в группировке(в нашем отчете будет два уровня, для контрагентов первый для договоров второй).
Теперь для данного контрагента сделаем выборку по его договорам.
Обход будем осуществлять при помощи цикла Пока.
В цикле по договорам контрагентов обнулим параметры Приход и Расход, заполним область ДанныеДоговориз выборки и выведем ее в табличный документ на второй уровень записей.
Также в этом цикле к переменным расчета итоговых значений по приходу и расходу прибавим текущие значения.
На этом вывод данных в области ДанныеКонтрагент, ДанныеДоговорКонтрагент завершен, осталось завершить автогруппировку строк табличного документа.
Полностью циклы отвечающие за вывод данных в области ДанныеКонтрагент и ДанныеДоговорКонтрагент выглядят так:
Осталось вывести итоговые данные в область Подвал и вывести саму область в Табличный документ.
На этом процесс написания внешнего отчета для 1С 8 без использования СКД завершен. Теперь его можно сформировать в режиме 1С:Предприятие 8 и добавить в справочник ВнешниеОбработки Файл отчета рассмотренного в статье вы можете скачать по ссылке.
Смотрите видео по созданию внешней печатной формы для управляемого приложения:
- В конфигураторе 1с создаем новый внешний отчет через пункт меню Файл-Новый-Внешний отчет
- Назначаем отчету имя и переходим к созданию макета. В нижней части формы выбираем Макеты-Добавить-Тип макета-Табличный Документ.
- Исходными данными для тестового отчета будет справочник “Банки”. В макете создаем шапку отчета с названиями колонок (Город, Банк, КорСчет).Заполнение ячеек шапки оставляем по умолчанию Текст. Выделяем строки шапки и назначаем Имя области через меню Таблица-Имена-Назначить имя. В дальнейшем в коде через имя области будем выводить шапку отчета и сами данные.
- Добавляем строки, соответствующие получаемым данным из справочника Банки. Назовем их пГород, пБанк и пКорсчет. Для каждой ячейки Заполнение указываем “Параметр”. Выделяем ячейки параметры и назначаем имя области “Строки”
- Назначаем шрифты, ширину и высоту ячеек, выбираем окантовку ячеек итп. Для форматирования макета отчета служит специальная панель “Форматирование”
- Создаем Форму отчета. В группе формы, напротив Формы отчета нажимаем на значек лупы. При создании формы галку “Использовать систему компоновки данных” не ставим.
- После создания формы отчета добавляем команду формы “Сформировать” (Правый верхний угол вкладка “Команды формы”). Назначаем ей действие на клиенте. Добавляем на форму Кнопку через правую кнопку мыши. Привязываем к кнопке Имя Команды – “Сформировать”, которую только что сделали.
- Пишем обработчик события Команды Сформировать, из которой вызывается функция на сервере для получения данных отчета. Реквизит формы “Отчет” появляется автоматически после создания формы отчета. Отчет создан для примера, поэтому никаких отборов и сортировок в запросе нет и данные выводятся из справочника как есть.
Сохраняем отчет, открываем его в режиме 1с Предприятия 8.3 и нажимаем кнопку “Сформировать”.
Простой внешний отчет со Схемой Компоновки Данных (СКД)
- В конфигураторе 1с создаем новый внешний отчет через пункт меню Файл-Новый-Внешний отчет
- Создаем основную схему компоновки данных (СКД). Для этого нажимаем кнопку “Открыть схему компоновки данных”
- Слева добавляем Набор данных -запрос
- Открываем конструктор отчета. Создаем простейший запрос из объекта справочник. Из левой части (база данных) переносим Справочник “Банки” в поле Таблицы. Раскрываем справочник и переносим интересующие данные в правую часть Поля. Сохраняем запрос.
- Переходим на вкладку “Настройки”. Щелкаем правой кнопкой мыши на Отчете и выбираем “Свойства элемента пользовательских настроек”.
- Выбираем элементы которые будут доступны пользователю 1с для настройки параметров отчета(выбираемые поля, отбор, сортировка, условное оформление и группировки).
- Создаем Форму отчета и форму настроек отчета. При создании формы отчета обязательно ставим галку “Использовать систему компоновки данных”.
- Формы созданы, для простого отчета на СКД никакого написания кода не требуется.Сохраняем отчет.
- Открываем внешний отчет на СКД в режиме 1с Предприятия 8.3. Открываем настройки и выбираем нужные поля.
- Добавляем группировку по “Городу”. В настройках отчета переходим во вкладку “Группировка” и добавляем поле “Город”.
- Сохраняем настройки и нажимаем кнопку Сформировать.
Получаем отчет по справочнику на СКД с группировкой в соответствии со сделанными настройками.
Как прикрепить внешний отчет в программу 1с через дополнительные отчеты обработки.
Чтобы использовать полученные внешние отчеты можно открывать их с диска, либо подключить их к программе через дополнительные отчеты и обработки в нужную подсистему.
Форма подключения чаще всего находится в разделе Администрирование-Печатные формы и обработки -Дополнительные отчеты и обработки.
Прошу прощение за создание отдельной темы, но как создать отчет без СКД, что-бы был виден код, т.к. в процедуру формирования отчета, нужно передать объекты, для создания правильного селекта. Книга "Разработка сложных отчетов" она под СКР :(
Габец А.П., Гончаров Д.И., Козырев Д.В., Кухлевский Д.С., Радченко М.Г. - Профессиональная разработка в системе 1С: Предприятие 8.
Там очень много занимают параметры. Они булевы. И нельзя сделать недоступным один параметр, при выборе другого. Нельзя посмотреть выбран ли параметр вообще. Т.е. мб и можно, но надо достать до когда.
то есть порядок действий такой: 1. размещаем на форме реквизиты соответствующие параметрам. Описываем проверки и зависимости; 2. в процедуре формирования отчета пишем КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ИмяПараметра",ЗначениеПараметра); СкомпоноватьРезультат(ЭлементыФормы.Результат,ДанныеРасшифровки); 3. профит
опляк, это горячее. Т.е. создаю отчет в СКД, но не беру параметры, а реквизиты добавляю на форму, и в хз какую переопределенную процедуру запихиваю свои параметры, эквивалентные параметрам запроса?
Курс «Практическое применение системы компоновки данных» Методическое пособие, очень хорошая штука, рекомендую.
да. то есть берешь скд стандартную схему пишешь свои параметры в скд. делаешь их доступными в настройке и далее программно передаешь параметры
Формирование отчета выполняется в предопределенной процедуре ПриКомпоновкеРезультата Именно там можно подсунуть СКД любые параметры, которые ты хочешь, да и вообще, полностью программно сваять весь отчет
-Разработка сложных отчетов -Профессиональная разработка в системе 1С: Предприятие 8 -Практическое применение системы компоновки данных Метод вызова формирования отчета. Т.е. Кнопочка "Сформировать" на форме отчета. Я не могу найти ее метод, а модуле пусто, и модуле объекта и менеджера, везде все пусто. Каким образом добавить параметры для селекта из формы вообще уже хз голова раскалывается. Яндекс адекватного ничего не выдает на "создание отчета с параметрами без скд", одни ссылки на форумы, где само-собой пустоне то.
Читайте также: