Рекламодатель: АО «Топ Системы»

ИНН 7726601967 ОГРН 1087746953557

Рекламодатель:
ООО «С3Д Лабс»

ИНН 7715938849 ОГРН 1127747049209

11 - 2024

FastReport в системе БАЗИС: «скрытые» данные и возможности

Павел Бунаков, Александр Лопатин, Михаил Федоров

Статья посвящена возможностям работы с популярными форматами хранения и обработки данных CSV, XML и FDB, реализованным в версиях системы БАЗИС 2023 и 2024, при автоматизации документооборота на мебельном предприятии.

Качественная техническая и иная документация — это основа успешного функционирования мебельного предприятия. Интеграция FastReport в систему БАЗИС стала тем рубежом, после которого не осталось никаких ограничений возможностей по формированию документов любой формы и содержания. В результате каждое предприятие работает с привычными ему формами, а сотрудники избавляются от множества рутинных операций, получая возможность сконцентрироваться на своей основной деятельности. Дополнительно уменьшается влияние человеческого фактора, практически к нулю сводится количество ошибок, а качество выпускаемых изделий повышается.

FastReport предлагает большой выбор инструментов для автоматизации формирования отчетной документации, а модули системы БАЗИС предоставляют широкий набор параметров, которые используются в качестве основы для построения отчетов. Об основных принципах работы в подобной интегрированной среде рассказывалось в предыдущих публикациях [1-3]. Тем не менее часто возникает потребность в применении дополнительных данных, которые массовому пользователю, как правило, не нужны, но которые могут представлять ценность для конкретного производства с точки зрения «тонкой» настройки шаблонов FastReport на специфические особенности документооборота.

Начиная с версии БАЗИС-2023 потенциал использования системы генерации отчетов «тихо и незаметно» вырос: в версии БАЗИС 2023 был добавлен импорт данных из CSV- и XML-форматов, в БАЗИС 2024 — поддержка работы с форматом FDB (Firebird database). О том, какие возможности открывает соответствующая функциональность системы, и пойдет речь в данной статье.

XML-формат и его возможности

Сегодня XML является самым популярным форматом для хранения и передачи данных между различными системами и приложениями в самых разных областях деятельности, рекомендованным Консорциумом Всемирной паутины (W3C). Он изначально разрабатывался таким образом, чтобы быть понятным и программистам, и специалистам в конкретных областях, порой весьма далеких от программирования. Это стало одной из причин его популярности. Другая важная причина — представление информации в структурированном виде. Структура XML — древовидная, а данные просто заключаются в теги. Иными словами, в XML-документах иерархическая подчиненность элементов данных реализуется «правильно» вложенными теговыми наборами. Правильность вложений подразумевает, что каждый элемент должен быть закрыт тегом, до того как начнется следующий элемент.

В интегрированной системе БАЗИС — FastReport также используется древовидная структура. Верхним (корневым) уровнем является FastReportDataList — родительский узел для всех последующих объектов. Соответствующим тегом начинается и заканчивается любой документ. Всё, что расположено ниже него, — это промежуточные узлы и листья дерева.

Вторым уровнем иерархии являются объекты Dataset, представляющие собой конкретные наборы данных. Атрибутами этих узлов являются пользовательские имена (UserName), указатели на источник соответствующего набора данных (FormatFile) и дата экспорта (Date). На третьем уровне располагаются непосредственно данные (Item), то есть строки набора данных.

Наконец, третья существенная причина: XML — это открытый и расширяемый формат данных. Он не фиксирует структуру документа, а оставляет это пользователю; контролируется только правильность синтаксиса. Таким образом, пользователи могут использовать генератор отчетов для обработки данных, сформированных не только системой БАЗИС, но и другими производственными системами.

Естественно, это далеко не единственные преимущества XML, просто они важны в контексте интеграции с системой БАЗИС.

Подключение и взаимодействие с базой данных

База материалов в системе БАЗИС является одним из важнейших элементов, поскольку практически все технико-экономические расчеты выполняются автоматически на основе 3D-моделей изделий и хранящейся в ней информации, а именно, структурированного перечня материалов, фурнитуры и комплектующих со всеми их параметрами. Обеспечение корректности и актуальности базы материалов является залогом успешной работы. Помимо нее, есть и другие базы, которые также всегда должны оставаться корректными. Следовательно, все действия с любой базой пользователь должен осуществлять очень аккуратно и на свой страх и риск. Однако при создании шаблонов документов в системе БАЗИС все функциональные возможности запросов ограничиваются только запросом на выборку данных (метод SELECT). Иными словами, добавить, удалить или изменить записи в базе данных посредством генератора отчетов нельзя.

Рассмотрим алгоритм подключения к базе данных на примере базы материалов системы БАЗИС.

Шаг 1: подключение к базе

Для подключения к базе данных необходимо в запущенном редакторе отчетов перейти на вкладку Данные (рис. 1).

Рис. 1. Вкладка Данные генератора отчетов

Рис. 1. Вкладка Данные генератора отчетов

Далее добавляем на страницу объект FDDatabase, предназначенный для подключения к базе данных. Отметим, что на данный момент из компонентов доступа к базам данных в системе БАЗИС используется только библиотека FireDAC. У установленного объекта FDDatabase необходимо указать свойство DatabaseName — путь к базе данных (рис. 2).

Рис. 2. Указание пути к базе данных

Рис. 2. Указание пути к базе данных

Далее для отдельных свойств указываем предопределенные значения:

  • для свойства User_Name (Логин) — sysdba;
  • для свойства Password (Пароль) — masterkey;
  • для свойства DriverID (идентификация базы) — FB (база данных Firebird).

Обязательно следует указать корректную кодировку. В случае базы материалов системы БАЗИС выбирается csUTF8 — распространенный стандарт кодирования символов, позволяющий более компактно хранить и передавать символы в кодировке Юникод. В противном случае текст может отображаться некорректно.

Для проверки корректности установленных параметров подключения к базе данных следует нажать кнопку Test.

Шаг 2: построение запроса

Далее у объекта FDDatabase устанавливаем свойство Connected в значение True. Это позволит осуществить подключение к базе данных, а также даст возможность использовать построитель запросов и обращаться к любым таблицам и полям.

Для ускорения процесса можно сразу разместить компоненты FDQuery и FDTable:

  • компонент FDTable применяется для работы с данными одной конкретной таблицы;
  • компонент FDQuery позволяет строить произвольные запросы с обращением к произвольным полям одной или нескольких таблиц.

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

Рис. 3. Подключение к данным с использованием FDTable

Рис. 3. Подключение к данным с использованием FDTable

Подключение к данным с применением FDQuery выполняется несколько сложнее. При двойном щелчке по объекту отображается редактор запроса (рис. 4), в котором можно вводить запросы непосредственно с помощью редактора, или использовать визуальный построитель SQL-запросов к базам данных Fast Query Builder. Последовательность шагов для этого следующая:

  1. Вызвать построитель запросов, нажав на соответствующую кнопку.
  2. Выбрать таблицу (или несколько таблиц для построения перекрестного запроса) базы данных.
  3. Указать поля, содержащие необходимые поля данных. На рис. 4 — поля «Наименование материала» и «Артикул материала».
  4. Указать ограничения на данные (видимость, условия отбора, поля для типа сортировки, агрегатные функции, поля для группировки).

Рис. 4. Окно редактора запросов

Рис. 4. Окно редактора запросов

Рассмотрим несколько реальных примеров построения запросов, взятых из практики работы пользователей системы БАЗИС.

Получение идентификатора для синхронизации из базы

Рассмотрим ситуацию, когда у пользователя уже настроена некая система управления производством (например, 1С-БАЗИС: Производство, или иная система на платформе 1С, или собственная разработка и т.п.) и для синхронизации производственных процессов необходимо передавать информацию по конкретному материалу.

В этом случае структура отчета будет максимально простой. Создаем два набора данных первого и второго уровня: список панелей и таблица Material базы данных соответственно. Далее необходимо передать системе информацию о том, идентификатор какого материала необходимо уточнить по базе. В данном случае это будут материалы панелей, которые определяются наименованием и артикулом. Таким образом, для второго набора данных следует установить фильтр (рис. 5):

Рис. 5. Структура запроса материалов панелей

Рис. 5. Структура запроса материалов панелей

(<Панели.»Материал»> = ) and (<Панели.»Артикул материала»> = )

Определение примерной стоимости изделия

C помощью генератора отчетов в модуле БАЗИС-Мебельщик можно определить стоимость материалов для любого изделия. Однако необходимо отметить, что это будет только оценочное, весьма приблизительное значение. Дело в том, что фактическая стоимость изделия может существенно отличаться от стоимости материалов, из которых оно состоит, поскольку должны быть учтены затраты на операции сверловки, фрезерования, облицовывания кромок, стоимость отходов при распиловке полного листа материала, из которого изготавливаются детали, и многое другое. Полную и точную стоимость изделия можно узнать только в модуле БАЗИС-Смета, причем делать это желательно после получения данных о раскрое материалов.

Однако и оценочная стоимость часто бывает полезной. Для определения стоимости конкретной части площадного материала можно использовать стандартный компонент Memo, добавив в него формулу вида (рис. 6):

Рис. 6. Структура запроса стоимости материалов

Рис. 6. Структура запроса стоимости материалов

[ *<Панели.»Заготовка (L)»>*<Панели.»Заготовка (W)»> /1000000]

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

О защите данных

В разработанном отчете ценность могут представлять три элемента пользовательской информации:

  • выходные данные отчета (спецификации материалов и фурнитуры, сметные расчеты и т.п.);
  • дизайн и структура выходных данных, то есть собственно шаблон;
  • код скриптов, который может применяться как для форматирования, так и для наполнения отчета.

Весьма очевидно, что данные, в случае применения интегрированного комплекса БАЗИС — FastReport, особой ценности, как правило, не представляют, поскольку у каждого мебельного производства свой набор материалов, свои конструкционные особенности изделий и технологические процессы, а готовая продукция и так представлена в различных мебельных салонах и каталогах. Внешнюю часть шаблона отчета также довольно легко воссоздать, получив, например, любой вариант распечатанного отчета. В результате наиболее «уязвимым» и ценным остается код скриптов, который может быть использован для формирования собственных отчетов.

В генераторе отчетов есть два способа защиты данных:

1 Применение встроенного алгоритма шифрования. Для шифрования при создании шаблона отчета в главном меню надо выбрать команду Отчет|Настройки. В появившемся диалоговом окне на вкладке Основные в поле Пароль необходимо задать пароль, который будет запрошен у пользователя при открытии отчета (рис. 7).

Рис. 7. Настройка общих параметров отчета

Рис. 7. Настройка общих параметров отчета

2 Фрагментирование кода и использование собственных модулей в отчете. При генерации отчета первым этапом является выполнение глобального пользовательского скрипта, который может содержать в том числе запуск на выполнение фрагментов кода из других модулей. Далее выполняется обработка событий, назначенных на отдельные элементы отчета.

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

uses SecretModule;

begin

  FillMyReport(page1);

end.

В указанном фрагменте кода:

  • SecretModule — пользовательский файл с произвольным именем (например, SecretModule) и расширением pas, хранящийся в одной директории с исполняемой программой (любой модуль системы БАЗИС) или по указанному пути;
  • FillMyReport — пользовательская процедура (имя выбрано в качестве примера), которая выполняет необходимые действия по наполнению отчета. Она может содержать скрытые поля, данные для отчета, функции для выполнения расчетов и т.п.

В случае применения фрагментации кода файл отчета будет бесполезен без файла, содержащего процедуру с указанным выше кодом (FillMyReport).

Заключение

Использование FastReport в составе системы БАЗИС значительно повышает эффективность процессов документирования всех этапов жизненного цикла мебельных изделий, в том числе резко сокращает время создания документов и снижает количество ошибок в них. Опыт, приобретенный пользователями системы БАЗИС, показал, что грамотная работа с FastReport позволяет гибко адаптировать отчеты под специфические требования конкретного предприятия, а обширная номенклатура импортируемых параметров из системы БАЗИС обеспечивает динамическое обновление и актуальность документации. Таким образом, FastReport доказал свою ценность как эффективный инструмент для автоматизации документооборота, способствующий решению стратегических задач мебельного производства. Растущий интерес к нему вызвал необходимость разработки соответствующих курсов повышения квалификации, которые уже почти год проводятся в АНО ДПО «Научно-учебный центр БАЗИС».

Литература:

  1. Бунаков П.Ю. Как создать идеальную документацию для мебельного производства // САПР и графика. 2023. № 2 (318). С. 42-49.
  2. Лопатин А.К. Современные инструменты оптимизации процесса создания конструкторских документов в мебельном производстве // САПР и графика. 2023. № 10 (326). С. 44-49.
  3. Бунаков П.Ю., Лопатин А.К. Документация для мебельного производства: завершающая глава // САПР и графика. 2023. № 11 (327). С. 34-39.

Регистрация | Войти

Мы в телеграм:

Рекламодатель:
ООО «Нанософт разработка»

ИНН 7751031421 ОГРН 5167746333838

Рекламодатель: ООО «ПЛМ Разработка»

ИНН 6658560933 ОГРН 1236600010690

Рекламодатель: АО «Топ Системы»

ИНН 7726601967 ОГРН 1087746953557

Рекламодатель: ООО «АДЕМ-инжиниринг»

ИНН 9718084250 ОГРН 5177746329569