Использование парсера для вычисления строк отчёта
Предыдущая статья по теме построения парсера выражений была написана здесь: life1c.ru/post/1117.
Для построения регламентированных отчётов (в том числе регламентированного отчёта по движению денежных средств) и сложных отчётов СКД можно использовать концепцию вычисления строк отчёта по определённым формулам. При этом расшифровки вычисляемых строк могут быть получены как слагаемые алгоритмической таблицы. Желательно, чтобы формулы можно было использовать так же просто, как на листе таблицы в MS Excel.
Основными преимуществами данного подхода являются:
- Легко менять алгоритм расчёта под новые требования.
- Не нужно долго изучать код построения сложного отчёта, чтобы сделать необходимые изменения.
- Функционал построения отчёта разделён с функционалом вычисления итоговых значений. Необходимые формулы можно прописать отдельно в макете отчёта.
- Функция по вычислению результата вполне универсальна и может быть использована в разных отчётах. Это снижает количество написанного кода и трудозатрат.
Рассмотрим данную концепцию подробнее. У нас есть начальные данные – это, в данном случае, движения регистра бухгалтерии по статьям ДДС. Такие данные легко получить с помощью обычного запроса к регистру бухгалтерии. Единственное условие к начальным данным – это то, что они должны содержать детализированные суммы, которые можно собрать и из которых можно полностью построить итоговый отчёт по ДДС. Далее есть алгоритм построения отчёта в виде специальной алгоритмической таблицы, где указаны все формулы для вычисления. Берутся начальные данные, алгоритмическая таблица и на выходе получается таблица с результатом (в виде соответствий параметр – сумма).
Представленная ниже обработка 1С выполняет следующие действия для построения отчёта:
- По каждой строке алгоритмической таблицы производится отбор исходных данных по заданным значениям. В данном случае отбор производится по полям «Счёт» и «Статья ДДС».
- Вычисляются значения формул условий, которые прописаны в колонке «Условие».
- Делается отбор строк алгоритмической таблицы только по выполненным условиям.
- По оставшимся строкам алгоритмической таблицы вычисляются значения основных формул.
- Формируется расшифровка отчёта.
- Результат сворачивается в итоговую таблицу, где данные представлены в виде соответствий: Параметр – сумма.
Структура отчёта
Регламентированный отчёт по статьям ДДС имеет следующую структуру (на рисунке приведена часть отчёта):
Определённому коду строки в отчёте соответствует сумма за соответствующий период формирования. Каждая сумма имеет свою расшифровку и свой алгоритм построения.
Программная реализация
Алгоритм работы парсера выражений смотрите в статье life1c.ru/post/1117.
Функция по вычислению итоговой таблицы называется «РасчётАлгоритмическойТаблицы». В обработке она выполняется со следующими параметрами:
СтруктураКолонок = Новый Структура;
СтруктураКолонок.Вставить(«КолонкаПоказатель», «ИдентификаторПараметра»);
СтруктураКолонок.Вставить(«КолонкиОтбор», «Счёт»);
СтруктураКолонок.Вставить(«КолонкаИдентификатор», «КодДДС»);
СтруктураКолонок.Вставить(«КолонкиСумма», «СуммаФормула»);
СтруктураКолонок.Вставить(«КолонкиАТСумма», «Сумма»);
СтруктураКолонок.Вставить(«ОтборНаУсловие», Истина);
РасчитаннаяТаблица = РасчётАлгоритмическойТаблицы(АлгоритмическаяТаблица, ОсновнаяТаблица, СтруктураКолонок);
Разные колонки алгоритмической таблицы выполняют разные роли и разбиваются в соответствии с этим на группы, что и указывается в структуре «СтруктураКолонок»:
- КолонкаПоказатель – В этой колонке указывается идентификатор итоговой строки отчёта. В отчёте по ДДС этот показатель представлен номером строки 4110, 4111, 4112 и т.д.
- КолонкиОтбор – Список колонок общий для алгоритмической таблицы и таблицы движений, которые выступают в качестве отбора. Для отчёта по ДДС такая колонка – это «Счёт». Если колонки для отбора не заданы, то предварительного отбора не выполняется, что ускоряет вычисление итоговой таблицы.
- КолонкаИдентификатор – Общая для алгоритмической таблицы и таблицы движений колонка, выполняющая роль фиксированного идентификатора для формулы. В отчёте по ДДС такая колонка содержит кода статей ДДС, в привязке к которым вычисляются значения формул и суммируются полученные данные.
- КолонкиСумма – Список колонок алгоритмической таблицы, в которых содержаться формулы вычисления значений. В отчёте по ДДС такая колонка с формулами называется «СуммаФормула».
- КолонкиАТСумма – Список колонок, в которые сохраняется результат вычисления соответствующих колонок с формулами.
- ОтборНаУсловие – Определяет применять ли результат отбора к вычислению формул по колонке «Условие». Если колонки отбора не заданы, то значение этого параметра не важно.
Обработка 1С
Обработка демонстрирует функционирование построения отчёта по ДДС (Отчёт о движении денежных средств). В окне обработки есть следующие вкладки:
- Статьи ДДС – Таблица движений по статьям ДДС. Здесь есть счёт движения регистра бухгалтерии, статья ДДС, сумма оборот, сумма дебет и сумма кредит. В реальном отчёте ДДС таблицу движений легко получить с помощью запроса.
- Алгоритм – Последовательность вычисления сумм по строкам отчёта ДДС. В алгоритме есть следующие основные столбцы: Идентификатор параметра, счёт, статья ДДС, сумма, условие. Столбцы «Счёт» и «Статья ДДС» выступают в качестве отбора по данной строке. В столбце «Сумма» задаётся формула вычисления итогового значения параметра. В столбце «Условие» задаётся условие включения или исключения данной строки в алгоритм расчёта.
- Результат – Получаемый в итоге расчётов результат. Здесь есть колонки: группа (тот же «Идентификатор параметра» в алгоритме) и сумма.
Чтобы протестировать выполнение обработки 1С, делаем следующее:
1. Открываем обработку, на вкладке «Статьи ДДС» нажимаем кнопку «Получить движения». Движения по статьям ДДС для проверки алгоритма появятся ниже в табличном поле. Для тестирования можно изменить или добавить свои движения.
2. На вкладке «Алгоритм» представлена последовательность вычисления результата. Для тестирования можно поменять строки алгоритма, изменить формулы и условия выполнения.
3. Нажимаем кнопку «Выполнить» и переходим на вкладку «Результат», смотрим что получилось в результате вычислений.
Название файла |
Версия |
Ссылка |
Отчёт по статьям ДДС |
1.0 |
Свежие комментарии