Отчет 1с посчитать строки таблицы в 1с
Войдите как ученик, чтобы получить доступ к материалам школы
Система компоновки данных 1С 8.3 для начинающих: представление отчёта в виде таблицы
Автор уроков и преподаватель школы: Владимир Милькин
На всех прошлых уроках мы выводили данные в отчет в виде списка. Сегодня разберёмся со вторым типом отчета: "Таблица".
Ставим цель
- Написать отчёт, который выводит информацию о заказе еды клиентами в виде таблицы.
- В строках таблицы должна выводиться еда, в колонках - клиенты, а на пересечении количество данной еды заказанной данным клиентом.
- Информацию будем брать из документов "ЗаказКлиента".
Создаём новый отчёт
Открываем базу "Гастроном" в конфигураторе и через меню "Файл"->"Новый. " создаём новый отчёт:
Вид документа - "Внешний отчет":
В новой форме отчёта указываем имя "Урок8" и нажимаем кнопку "Открыть схему компоновки данных":
Имя схемы компоновки данных оставляем по умолчанию:
Составляем запрос
Добавляем новый набор данных - запрос:
Выделяем новый набор данных и вызываем конструктор запроса:
Будем выбирать из табличных частей документа "ЗаказКлиента" следующие поля:
Получился следующий текст запроса:
Сначала пробуем список
Перейдём на закладку "Настройки" и нажмём волшебную палочку, чтобы вызвать конструктор:
Вначале попробуем по старинке выбрать тип отчета "Список. ":
Укажем поля, которые будут отображаться в отчете:
Сохраним наш отчёт в конфигураторе и сформируем в режиме пользователя:
Получился привычный нам список с тремя колонками: Клиент, Еда и Количество.
Выводим в виде таблицы
Ах как замечательно было бы представить эти же самые данные в виде таблицы, в строках которой перечислена еда, в колонках - клиенты, а на пересечении количество данной еды, которое заказал данный клиент:
Сделать это действительно легко. Для этого вернёмся на закладку "Настройки" и вновь вызовем конструктор настроек через волшебную палочку:
На этот раз в качестве типа отчета выберем "Таблица..":
Из полей, которые будут отображаться в отчёте уберём "Клиент" и "Еда", так как эти поля по нашей задумке уйдут в столбцы и строки соответственно:
Оставим только количество, которое будет отображаться на пересечении строк и столбцов:
Здесь нужно указать конструктору какие поля будут отображаться в строках, а какие в столбцах. Для нас очевидно (см. рисунок выше), что строки - это еда, а колонки - клиенты:
Получилось вот так:
Итоговая структура отчёта будет такой:
Сохраняем наш отчёт в конфигураторе и формируем в режиме пользователя:
Вроде бы неплохо. Еда отображаться в строках, а клиенты - в столбцах. Но показатели количества, которые мы ожидали увидеть на пересечении строк и столбцов почему-то оказались все слепёшены в одном столбце.
А причина в том, что строки и столбцы у нас сгруппированы, а показатели нет! Поэтому и такой разлад.
Чтобы сгруппировать количество нужно подвести по нему итоги (вычислить ресурсы). Это мы уже делать умеем.
Забыли подвести итоги
Переходим на закладку "Ресурсы" и перетаскиваем поле "Количество" из левой колонки в правую:
Выражение "Сумма(Про. " оставляем без изменения:
Снова сохраняем отчет и формируем в режиме пользователя:
То, что надо! Мы хорошо поработали. А на следующем уроке - мы модифицируем этот отчёт (вернее его копию) и представим эти же данные в виде диаграммы.
Эталонная обработка, после выполнения всех шагов этого урокаВойдите на сайт как ученик
Для учеников
Прибегайте к изучению эталонного варианта только после самостоятельного выполнения всех шагов.
На вопросы учеников — отвечаю по почте, но прежде загляните в ЧАВО (ссылка) .
Как выдавать в итоги по строкам таблицы ресурсы, отличные от ресурсов в колонках таблицы
Иногда возникает потребность вывести в таблице некоторые ресурсы только в итоге по строкам. Например, требуется вывести в колонках таблицы номенклатуру с указанием суммы оборота и суммы по количеству проданной номенклатуры, а в итоге по строке требуется видеть только итог по сумме.
Если просто добавить в настройки таблицу, и указать, что нужно выводить ресурсы Сумма оборот и Количество оборот,
то результат отчета будет следующим:
Для того чтобы итог по строке содержал только определенный ресурс, можно воспользоваться детальными записями, в которых выводятся только ресурсы (см. раздел "Особенности использования детальных записей").
Для этого, добавим в колонки группировку без полей группировки:
Результат исполнения такого отчета:
Мы добились того, что в правой части таблицы появился еще один итог по строке, в котором выводятся все ресурсы.
Нам требуется, чтобы в итоге по строке выводилось только поле "Сумма оборот", поэтому перейдем в выбранные поля только что добавленной нами группировки (в конструкторе схемы компоновки данных для этого нужно выделить группировку и переключить текущие редактируемые настройки на "Детальные записи").
В выбранных полях нашей группировки добавим поле СуммаОборот, и удалим авто поле, т.к. мы точно знаем, какие поля нам нужны.
Результат такого отчета будет выглядеть так:
Теперь, для того, чтобы итог по строке не выдавался два раза, уберем вывод общего итога из группировки Номенклатура. Для этого установим параметр вывода "Расположение общих итогов" в значение "Нет".
Вычисление строк отчёта по формулам. Отчёт по статьям ДДС.
Использование парсера для вычисления строк отчёта
Для построения регламентированных отчётов (в том числе регламентированного отчёта по движению денежных средств) и сложных отчётов СКД можно использовать концепцию вычисления строк отчёта по определённым формулам. При этом расшифровки вычисляемых строк могут быть получены как слагаемые алгоритмической таблицы. Желательно, чтобы формулы можно было использовать так же просто, как на листе таблицы в MS Excel.
Основными преимуществами данного подхода являются:
- Легко менять алгоритм расчёта под новые требования.
- Не нужно долго изучать код построения сложного отчёта, чтобы сделать необходимые изменения.
- Функционал построения отчёта разделён с функционалом вычисления итоговых значений. Необходимые формулы можно прописать отдельно в макете отчёта.
- Функция по вычислению результата вполне универсальна и может быть использована в разных отчётах. Это снижает количество написанного кода и трудозатрат.
Рассмотрим данную концепцию подробнее. У нас есть начальные данные – это, в данном случае, движения регистра бухгалтерии по статьям ДДС. Такие данные легко получить с помощью обычного запроса к регистру бухгалтерии. Единственное условие к начальным данным – это то, что они должны содержать детализированные суммы, которые можно собрать и из которых можно полностью построить итоговый отчёт по ДДС. Далее есть алгоритм построения отчёта в виде специальной алгоритмической таблицы, где указаны все формулы для вычисления. Берутся начальные данные, алгоритмическая таблица и на выходе получается таблица с результатом (в виде соответствий параметр – сумма).
Представленная ниже обработка 1С выполняет следующие действия для построения отчёта:
- По каждой строке алгоритмической таблицы производится отбор исходных данных по заданным значениям. В данном случае отбор производится по полям «Счёт» и «Статья ДДС».
- Вычисляются значения формул условий, которые прописаны в колонке «Условие».
- Делается отбор строк алгоритмической таблицы только по выполненным условиям.
- По оставшимся строкам алгоритмической таблицы вычисляются значения основных формул.
- Формируется расшифровка отчёта.
- Результат сворачивается в итоговую таблицу, где данные представлены в виде соответствий: Параметр – сумма.
Структура отчёта
Регламентированный отчёт по статьям ДДС имеет следующую структуру (на рисунке приведена часть отчёта):
Определённому коду строки в отчёте соответствует сумма за соответствующий период формирования. Каждая сумма имеет свою расшифровку и свой алгоритм построения.
Программная реализация
Функция по вычислению итоговой таблицы называется «РасчётАлгоритмическойТаблицы». В обработке она выполняется со следующими параметрами:
Разные колонки алгоритмической таблицы выполняют разные роли и разбиваются в соответствии с этим на группы, что и указывается в структуре «СтруктураКолонок»:
- КолонкаПоказатель – В этой колонке указывается идентификатор итоговой строки отчёта. В отчёте по ДДС этот показатель представлен номером строки 4110, 4111, 4112 и т.д.
- КолонкиОтбор – Список колонок общий для алгоритмической таблицы и таблицы движений, которые выступают в качестве отбора. Для отчёта по ДДС такая колонка – это «Счёт». Если колонки для отбора не заданы, то предварительного отбора не выполняется, что ускоряет вычисление итоговой таблицы.
- КолонкаИдентификатор – Общая для алгоритмической таблицы и таблицы движений колонка, выполняющая роль фиксированного идентификатора для формулы. В отчёте по ДДС такая колонка содержит кода статей ДДС, в привязке к которым вычисляются значения формул и суммируются полученные данные.
- КолонкиСумма – Список колонок алгоритмической таблицы, в которых содержаться формулы вычисления значений. В отчёте по ДДС такая колонка с формулами называется «СуммаФормула».
- КолонкиАТСумма – Список колонок, в которые сохраняется результат вычисления соответствующих колонок с формулами.
- ОтборНаУсловие – Определяет применять ли результат отбора к вычислению формул по колонке «Условие». Если колонки отбора не заданы, то значение этого параметра не важно.
Обработка 1С
Обработка демонстрирует функционирование построения отчёта по ДДС (Отчёт о движении денежных средств). В окне обработки есть следующие вкладки:
- Статьи ДДС – Таблица движений по статьям ДДС. Здесь есть счёт движения регистра бухгалтерии, статья ДДС, сумма оборот, сумма дебет и сумма кредит. В реальном отчёте ДДС таблицу движений легко получить с помощью запроса.
- Алгоритм – Последовательность вычисления сумм по строкам отчёта ДДС. В алгоритме есть следующие основные столбцы: Идентификатор параметра, счёт, статья ДДС, сумма, условие. Столбцы «Счёт» и «Статья ДДС» выступают в качестве отбора по данной строке. В столбце «Сумма» задаётся формула вычисления итогового значения параметра. В столбце «Условие» задаётся условие включения или исключения данной строки в алгоритм расчёта.
- Результат – Получаемый в итоге расчётов результат. Здесь есть колонки: группа (тот же «Идентификатор параметра» в алгоритме) и сумма.
Чтобы протестировать выполнение обработки 1С, делаем следующее:
1. Открываем обработку, на вкладке «Статьи ДДС» нажимаем кнопку «Получить движения». Движения по статьям ДДС для проверки алгоритма появятся ниже в табличном поле. Для тестирования можно изменить или добавить свои движения.
2. На вкладке «Алгоритм» представлена последовательность вычисления результата. Для тестирования можно поменять строки алгоритма, изменить формулы и условия выполнения.
3. Нажимаем кнопку «Выполнить» и переходим на вкладку «Результат», смотрим что получилось в результате вычислений.
Для некоторых начислений в аналитических отчетах необходимо видеть разбивку не только по месяцам начисления, но и по периодам, за которые произведено начисление. Например, для отпускных, т.к. они могут быть начислены за период, переходящий на другой месяц. Возможно ли настроить подобный отчет?
Перейдем в режим Изменения варианта отчета ( Еще – Прочее – Изменить вариант отчета ).
В структуре отчета удалим все группировки для строк и колонок таблицы. Затем добавим Новую группировку ( Добавить – Новая группировка ).
Для строк таблицы добавим группировку по полю Период действия , а для колонок – по полю Месяц начисления .
Затем выделим общую группировку Отчет , перейдем на вкладку настроек Отбор и добавим отбор по реквизиту Группа . Т.к. нам необходимо анализировать в отчете только начисления, укажем условие равенства значению Начислено .
После этого отчет будет формироваться в таком виде.
Скорректируем оформление отчета:
- Изменим заголовок отчета. Для этого в режиме Изменения варианта отчета выделим общую группировку Отчет , перейдем на вкладку Дополнительные настройки и изменим текст Заголовка .
- Скорректируем формат, в котором выводятся Периоды действия . Например, вместо «01.10.2019 00:00:00» будет выводиться «Октябрь 2019». Для этого в режиме Изменения варианта отчета выделим общую группировку Отчет , перейдем на вкладку Условное оформление . Добавим новое условное оформление по кнопке Добавить .
В открывшемся окне необходимо отредактировать Формат . Для открытия Конструктора форматной строки нужно сделать двойной щелчок по пустому значению Формата . После этого появится кнопка с обозначением «…», нажимаем ее.
В Конструкторе форматной строки перейдем на вкладку Дата и введем с клавиатуры Формат даты : ММММ yyyy.
Далее в окне Редактирования элемента условного оформления на вкладке Оформляемые поля укажем Период действия .
После завершения редактирования настроек оформления отчет будет формироваться в следующем виде.
Если необходимо анализировать разбивку по периодам действия для отдельных начислений, тогда можно вывести отбор по Виду расчета в шапку отчета. Для этого по кнопке Настройки откроем окно редактирования настроек отчета.
В нижней части окна установим переключатель в положение Расширенный вид.
Добавим новый отбор по кнопке Добавить отбор и укажем для поля Вид расчета видимость В шапке отчета .
После завершения настройки отбор по Виду расчета будет выведен в шапке отчета.
См. также:
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
Карточка публикации
Данную публикацию можно обсудить в комментариях ниже.Обратите внимание! В комментариях наши кураторы не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно по ссылке >>
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Вы можете задать еще вопросов
Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8
Вы можете оформить заявку от имени Юр. или Физ. лица Оформить заявкуНажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>
Читайте также: