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

Проблема создания красивого, функционального отчета актуальна для любого разработчика. Создать новый справочник, регистр накопления, документ, который двигает созданные тобой регистры, - не проблема, но как потом «родить» отчет, который будет работать, используя созданные тобой регистры? И не просто отчет, а отчет настраиваемый, с произвольными отборами и группировками, с приятным внешним видом?

Проблема создания красивого, функционального отчета актуальна для любого разработчика. Создать новый справочник, регистр накопления, документ, который двигает созданные тобой регистры, - не проблема, но как потом «родить» отчет, который будет работать, используя созданные тобой регистры? И не просто отчет, а отчет настраиваемый, с произвольными отборами и группировками, с приятным внешним видом?

Как быстро разработать красивый отчет используя Универсальный отчет в прикладных решениях фирмы 1С

Конфигурации: БП, УТ, УПП и прочие фирмы 1С на платформе 8.1

Данная статья рассчитана на начинающих и продвинутых программистов.

Проблема создания красивого, функционального отчета актуальна для любого разработчика. Создать новый справочник, регистр накопления, документ, который двигает созданные тобой регистры, - не проблема, но как потом «родить» отчет, который будет работать, используя созданные тобой регистры? И не просто отчет, а отчет настраиваемый, с произвольными отборами и группировками, с приятным внешним видом?

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

В последнее время я использую Универсальный отчет в типовых решениях фирмы 1С.

В качестве примера рассмотрим задачу: Для прикладного решения 1С:Управление торговлей версии 10.3.7.9 создать отчет, показывающий остатки товара на выбранную дату, по складу (или складам), свободные и находящиеся в резерве, с ценами в выбранной цене и суммами остатков в выбранной цене. В отчете возможен отбор по складу, номенклатуре и реквизитам номенклатуры. В отчете возможны группировки по складам, номенклатуре и реквизитам номенклатуры. В отчет возможен вывод любых произвольных реквизитов номенклатуры. Замечу что задача не выдумана, вполне реальна.

Итак, что есть Универсальный отчет и с чем его едят. Откроем конфигурацию, раздел Отчеты. В разделе отчеты и находится объект «Универсальный отчет»:

 Универсальный отчет - объект конфигурации, который можно использовать как самостоятельно, так и в других отчетах. Данный отчет присутствует во многих конфигурациях фирмы 1С: Управление торговлей, Бухгалтерия предприятия, Управление производственным предприятием и пр. Разбираться в его работе нет нужды, достаточно разобраться, как его можно использовать.

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

Итак, сохраним данный отчет как внешний и откроем в конфигураторе:

Как видим, у данного отчета только один реквизит - Универсальный отчет. Зададим новое имя нашему отчету - «Товары на остатках и в резерве»:

Откроем форму отчета:

Форма отчета абсолютна безлика, нет даже названия в шапке. Зато есть две даты. Обратим внимание на это, ведь нам нужна одна дата. Но не спешим убирать одну из дат, это настраивается в модуле отчета, откроем его. Для этого закрываем форму, нажимаем «Действия - Открыть модуль объекта». Модуль объекта выглядит на диво лаконично, Вот он весь:

Обратим внимание на строки в конце модуля:

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

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

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

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

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

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

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

Замечание 1: Если у кого-то возникают вопросы вроде «Что такое левое соединение», то данные вопросы выходят за рамки статьи. Предполагается, что читатель знает язык SQL в той интерпретации, в которой он используется в платформе 1С 8.1.

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

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

Очистим среднюю часть и выберем необходимые нам таблицы: Товары на складах остатки, Товары в резерве на складах остатки и Цены номенклатуры срез последних:

Заполним поля (правая часть). Из таблицы Товары на складах выберем поля СкладНоменклатураХарактеристика номенклатурыСерия номенклатурыКоличество остаток. Из таблицы Товары в резерве на складах выберем Количество остаток (это другой остаток - резерв), из таблицы Цены номенклатуры Тип цен и Цена:

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

Это Сумма на складе, аналогично, Сумма в резерве.

В итоге, в полях у меня получилось следующее:

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

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

Дальше, зададим псевдонимы для выбранных полей на закладке «Объединения / псевдонимы»:

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

Установим связи между таблицами на закладке «Связи»:

На закладке «Итоги» выберем числовые поля, - по ним будут рассчитываться итоги. По полю Цена берем максимум, по остальным - считаем суммы.

Теперь выберем те поля, которые будут использованы в настройках построителя.  Перейдем на закладку «Построитель». На закладке «Построитель» находятся еще пять закладок. На закладке «Поля» выберем те поля, которые будут использоваться при настройке отчета. В нашем случае выберем все поля:

Галочки в средней колонке «Использовать дочерние» означают, что мы можем выбирать не только Склад, Номенклатуру и т.п., но и любое дочернее поле - Тип склада у склада, ставку НДС, артикул у номенклатуры и т.д. Дочерние можем использовать только у сложных типов данных, у простых (Цена, Количество, Сумма) - нет.

На закладке «Условия» выберем те поля, на которые можно будет установить отбор. В нашем случае - поля Тип цен, Склад, Номенклатура:

На закладке «Порядок» выберем поля упорядочивания. Выберем поле  Номенклатура:

Ну и наконец, закладка «Итоги». Выберем Склад, Номенклатура, - по этим полям будут вычисляться итоги:

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

Нажимаем Ок, - наш запрос сформирован.

После текста запроса находится настройка Свойств и Категорий. Закомментируем для простоты:

Ниже находится раздел, в котором настраиваются представление полей. Настроим представления для полей Склад, Номенклатура, Характеристика номенклатуры, Серия номенклатуры, Тип цен:

При этом первое поле - то, как мы настроили представление на закладке «Объединения / псевдонимы», второе поле - то, как оно будет отображаться в отчете. Например характеристика в запросе указана как «ХарактеристикаНоменклатуры», а представление укажем «Характеристика номенклатуры».

Настроим вычисляемые поля, - показатели:

При этом первое поле - то, как мы настроили представление на закладке «Объединения / псевдонимы». Второе поле - то, как оно будет отображаться в отчете. Третье - будет ли данный показатель включен по умолчанию. Четвертое - формат поля. Пятое и шестое - наименование группы и представление (можно несколько полей объединить в одно поле).

Для поля Цена, - ставим формат Число 15.2, группа Цена. Для остатков - формат 15.3, группа Количество. Для сумм формат 15.2, группа Сумма.

Настроим предопределенные группировки:

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

Теперь предопределенные отборы:

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

Ну и наконец, дополнительные поля. Что это такое? Мы указали, что в отчете будем использовать Номенклатуру, а так же указали, что будем использовать любые дочерние поля этого поля. Если требуется указать, что обязательно будет выводится Артикул, то это будет дополнительным полем и мы должны были бы написать:

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

Собственно, это все. Можем запускать отчет. Сохраним изменения и откроем в режиме предприятия:

Как видите, дата одна и она не заполнена (расчет производится на конец текущего дня), три предопределенных отбора. Щелкнув по кнопке «Настройка» откроем настройки:

Есть показатели, настроены группировки. А если щелкнуть по кнопке «Расширенная настройка», то увидим в дополнительных полях Артикул:

Характеристику и Серию я выбрал сам. Выводиться данные поля будут с группировками (это у нас номенклатура) причем, показаны будут после Наименования.

Выберем Тип цены в отборе и сформируем отчет:

Замечание 2: В настройка запроса мы указали параметр ДатаКон. Кроме этого показателя есть еще три предопределенных: ДатаНачДатаНачала,ДатаКонца. Чем они отличаются? ДатаНачала и ДатаКонца это именно даты, первая - дата начала периода (если дата пустая, то начало ведения учета), вторая - дата конца периода (если дата пустая, то конец текущего дня). ДатаНач и ДатаКон - это границы периодов (дата + указание включения или исключения пограничного значения). Чем это грозит? К примеру, нужно отобрать документы по датам. Если в тексте запроса указать Документ.Дата >= &ДатаНачала, то все будет хорошо, если же сравнивать не с ДатаНачала, а с ДатаНач, то выполнение отчета будет прервано с ошибкой, ибо нельзя сравнивать Границу и Дату! Таблицы данных понимают все эти параметры.

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

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

Процедура СформироватьОтчет должна быть такой:

ТипЦен должен быть реквизитом отчета, иначе этот параметр не будет виден в модуле объекта!

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

  1. Указали настройку периода;
  2. Сформировали запрос и указали, какие поля мы будим настраивать построителем и как (по каким можно группировать данные, по каким сортировать, как итоги рассчитывать);
  3. Настроили представление полей;
  4. Задали начальные настройки.

Как видите, всего четыре пункта.

Начать дискуссию

Общество

👍 Президент подписал закон, упрощающий принятие решений на общих собраниях членов СНТ и ОНТ

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

Патентная активность российских изобретателей выросла на 7%

Более 15 000 заявок на патентование изобретений и полезных моделей подали отечественные разработчики в Федеральную службу по интеллектуальной собственности (Роспатент) с января по июнь 2024 года.

Опубликованы поручения Президента по итогам Петербургского международного экономического форума-2024

Владимир Путин утвердил перечень поручений по итогам ПМЭФ-2024, который прошел 5–8 июня.

Курсы повышения
квалификации

18
Официальное удостоверение с занесением в госреестр Рособрнадзора

Нацбюро кредитных историй назвало средний размер автокредита

По данным кредиторов, передающих сведения в Национальное бюро кредитных историй (НБКИ), в июне 2024 года средний размер выданных автокредитов составил 1,47 млн рублей.

МВД: если поменяли сим-карту, открепите номер от Госуслуг и мобильного приложения

Киберпреступники приобретают старые сим-карты, которые уже были использованы и поступили в повторную продажу.

1
УК РФ

Ответственность за цифровые преступления ужесточат

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

Опытом делятся эксперты-практики, без воды

Как разработать детальный финансовый план и бюджет для бизнеса

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

Инвестиции

Пополнил брокерский счет на 300 000 в июле. Что купил? Часть 2

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

Пополнил брокерский счет на 300 000 в июле. Что купил? Часть 2

Новые функции и улучшения на «Клерке»: обновления за июль. Выпуск #1

В июле представили обновления: сортировка главной страницы одним кликом, новый инструмент для самозанятых, возможность монетизации для авторов в "Трибуне" и продвижение материалов в блогах компаний. Также улучшен сервис "Клерк.Работа" и введены новые функции для Бизнес Аккаунта и личного кабинета.

Новые функции и улучшения на «Клерке»: обновления за июль. Выпуск #1
2
Обзоры новостей

Налог на бездетность, Ивлеева уплатила долг, НДФЛ при манипуляциях с землей в обзоре

Интересные события в налоговой сфере.

Бухгалтеры не видят актуальных данных ЕНС и не могут сформировать электронные подписи в ЛК. 🔨«Ночной бухгалтер» № 1733

Никогда такого не было... Бухгалтеры жалуются, что в личных кабинетах невозможно посмотреть актуальную информацию по сальдо ЕНС. Данные стоят на 15, 18, 19 июля. Если написать через ЛК налоговикам, сведения обновляются, но не всем. Формировать электронные подписи многие также не могут, не отправить 3-НДФЛ, не обновить электронные подписи.

Иллюстрация: Вера Ревина/Клерк.ру
Инвестиции

Физлицам и компаниям ЕС запретили участвовать в российской схеме обмена активами

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

ОСАГО

ОСАГО можно оформить онлайн через Сбер

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

Для россиян тоже установят лимит на количество сим-карт

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

Сотрудников не могут заставить сдавать отпечатки пальцев

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

Бухгалтеры

НДС на УСН в 2025 году, выбор налогового режима, топ претензий от ФНС, и господдержка бизнеса — какие вебинары пройдут в августе 2024 года

Подготовили для вас анонс предстоящих вебинаров в августе.

НДС на УСН в 2025 году, выбор налогового режима, топ претензий от ФНС, и господдержка бизнеса — какие вебинары пройдут в августе 2024 года
Новости ФНС

ФНС начнет регистрировать личные фонды россиян

Полномочия по регистрации личных фондов для управления бизнесом, имуществом и активами перешли от Минюста к ФНС.

Личные финансы

Цены на туры в Турцию выросли до 300 000 рублей за среднюю путевку

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

Бесплатно с Трудовое право

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

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

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

Интересные материалы

Кадровый учет

Перемещение работника

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

Иллюстрация: Вера Ревина/Клерк.ру