Scala в своем составе имеет большое количество отчетов. Их можно условно разделить на отчетные формы и первичные документы.
К сожалению, логика и внешний вид большинства отчетных форм зашита в коде. При большом желании их тоже можно изменить, я даже видел такое решение - сделано было на основе постпроцессора. В двух словах: в настройках канала вывода указана программа (это и есть постпроцессор), Скала формирует отчет в виде текстового файла и запускает постпроцессор, передавая ему путь к файлу. Всего-то и остается написать программу, которая будет парсить файл и делать то, что вам нужно. Еще, как вариант, можно добраться до таких отчетов с помощью VBA, но это тоже будет разборка уже готового текста. В общем - мазохизм. Если уж требуется изменить такой отчет, то я бы лучше просто попробовал повторить его в виде внешнего отчета.
Но не все так плохо. Первичные документы можно менять в широких пределах. Для того, чтобы посмотреть список таких отчетов, запускаем команду "Системные Утилиты - Документы - Изменение Определения Документа - Редактор Формата Отчета". В дереве вверху слева дерево отчетов. В этом же окне, если выбрать отчет, то можно увидеть список кодов, которые можно использовать в этом конкретном отчете в разрезе секций.
Отчеты хранятся по пути \iScala\WinDS\Resources\Reports\. В ветке Standard\Модуль трогать ничего не надо, там лежат стандартные варианты. Свои наработки выкладываем в ветку Custom\Модуль.
Имя отчета
Формируется по правилу MMKKCCDDLLL.EXT, где:
- MM - модуль (GL, PL, SL….)
- KK - код документа внутри модуля
- CC - код компании (документ с кодом компании 01 будет использоваться по умолчанию для всех компаний, если, конечно, для самой этой компании не определен свой документ)
- DD - код документа (работает в случае, если в заголовке конкретного документа есть поле "Код документа", это поле будет определять какой из шаблонов брать, по умолчанию берется отчет с кодом 00)
- LLL - код языка (ENG, RUS… - в iScala; 00, 01… - в Scala)
- EXT - расширение файл зависит от типа отчета (DDF, RTF, RPT)
Например, GL040100RUS.DDF - Модуль GL, документ Cash Receipt/Приходный кассовый ордер, компания 01, код документа 00, язык русский, типа отчета DDF.
Сам отчет может быть сделан с использованием нескольких технологий. Какой конкретный вариант будет использоваться определяется настройками канала вывода. Дальше рассмотрим эти варианты.
DDF
Представляет из себя текстовый шаблон отчета. Отчет разбит на секции, список и порядок вывода секций изменить нельзя. Внутри секций используются коды полей для подстановки данных из системы. Имеется небольшой набор способов форматирования данных.
RTF
На самом деле это тоже DDF, и все правила подстановки полей там такие же. Просто внутри секции используется формат RFT, он ведь тоже текстовый. До iScala это был практически единственный способ сформировать красивый документ. При этом редактирование такого документа не самая простая задача. Если у вас iScala, то я бы избегал использования RTF отчетов. Единственный случай, когда это может быть оправдано, это унаследованные отчеты. Зачем ломать то, что работает? В остальных случаях я бы предпочел использовать Crystal Reports.
RPT
Это отчет на Crystal Reports. Здесь тоже без DDF не обошлось. Видимо для целей совместимости, такой отчет формируется в два этапа. Сначала отрабатывается специально заполненный DDF отчет, на основе его формируется набор данных(датасет), который и передается в RPT. Описание структуры передаваемых данных делается на основе TTX файла, этот файл необходим только во время дизайна отчета. RPT отчеты, на мой взгляд, сейчас самый удобный вариант для кастомизации, т.к. позволяют наиболее гибко настроить выходную форму.