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