*1

_____

*1Окончание. Начало см. PC Week/RE, N46/2004, c.40, N 47/2004, c.31

Взгляд на прикладную платформу с другой стороны

Сергей Нуралиев,

руководитель отделения разработки экономических программ фирмы "1С"

Интеллектуальные механизмы подготовки отчетов

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

Технология подготовки отчетов, примененная в "1С:Предприятии", содержит, по нашему мнению, целый ряд уникальных решений, не имеющих прямых аналогов в других продуктах. Прежде всего следует отметить, что в этой платформе нет традиционного для большинства систем отдельного "генератора отчетов". Для их подготовки разработчику предлагается набор механизмов, которые можно использовать в различных комбинациях и в сочетании с другими механизмами. Благодаря этому в "1С:Предприятии" отчеты органично вписываются в общий интерфейс приложения. Думаю, что в современной экономической прикладной системе и не должно быть иначе: ведь аналитическая информация сегодня отображается во всех режимах и формах, а отчеты по большей части формируются уже не для вывода их на печать, а для интерактивного анализа.

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

Нам хотелось добиться того, чтобы разработчик или пользователь мог кратко описать, какую информацию необходимо проанализировать, а все остальное для получения полнофункционального управляемого отчета делал бы построитель.

Выборка исходной информации осуществляется на основе описаний, выполненных с помощью языка запросов "1С:Предприятия". Поскольку при этом активно используются готовые виртуальные таблицы учетных механизмов, текст запроса для весьма сложного отчета будет занимать всего несколько строчек. Его вовсе не обязательно писать вручную. В большинстве случаев запрос формируется средствами визуального конструктора, и зачастую вся процедура сводится к выбору источника данных и указанию полей итогов. Этот инструмент позволяет визуально формировать логические конструкции практически неограниченной сложности, включая объединения запросов и вложенные запросы.

На основании всестороннего анализа текста запроса построитель самостоятельно формирует всю инфраструктуру, необходимую не только для генерации отчета, но и для тонкой его настройки пользователем, а также для навигации между отчетами. В результате создается форма, содержащая как собственно отчет, так и разнообразные средства для управления им. Отображаться отчет может в виде таблицы с многоуровневой иерархией строк и колонок, диаграммы, сводной диаграммы или сводной таблицы. Кроме того, в данной форме есть средства для выбора включаемых в отчет полей, фильтрации информации по сложным критериям, группировки по строкам и колонкам, настройки упорядочивания данных. Построитель автоматически включает в сформированный отчет всю информацию, необходимую для последующей детализации (drill-down), сохраняет текущие настройки и ведет историю изменения их версий.

Очень важно, что все эти возможности, представляемые в готовом виде, разработчик может использовать в различных комбинациях. Скажем, он указывает в тексте запроса, по каким полям пользователь имеет право устанавливать фильтрацию, упорядочивание, группировки и т. д. Сами элементы управления отчетом включаются в форму также по усмотрению разработчика. Поскольку все компоненты данного механизма могут использоваться независимо, разработчик вправе применять построитель не только для подготовки отчетов, но и для решения многих других задач. Например, он может создать процедуру группового изменения данных, в которой для управления выборкой данных будут задействованы все механизмы построителя, а затем полученная выборка будет обработана нужным образом. Такой метод, в частности, удобен для корректировки цен на группу товаров.

Весьма важным эффектом использования этого механизма мы считаем и то, что на его основе в прикладных решениях "1С:Предприятия" реализуются инструменты, в которых "продвинутые" пользователи действительно могут самостоятельно создавать достаточно сложные отчеты. На базе этого механизма построена специальная консоль, используемая в большинстве прикладных решений и предоставляющая пользователю возможность проектировать собственные отчеты, тут же их формировать, настраивать и даже создавать систему связанных, детализирующих друг друга отчетов.

Не были забыты и вопросы эффективности изобразительных средств. В "1С:Предприятии" для визуализации и печати отчетов используется прежде всего метафора табличного документа (без средств вычислений).

В отличие от большинства электронных таблиц документ "1С:Предприятия" может содержать таблицы очень больших размеров как по вертикали, так и по горизонтали. У него богатый набор изобразительных возможностей, позволяющий, с одной стороны, создавать хорошо оформленные аналитические отчеты, а с другой - подготавливать регламентированные бланки с точной привязкой содержащихся в них объектов к локальным координатам. В отличие от стандартных электронных таблиц здесь разрешается описывать строки с различными настройками ширины колонок. Это необходимо для создания сложных отчетов, включающих несколько разноформатных таблиц.

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

Важно, что средство генерации табличных документов служит не только для получения статических печатных форм. В нем имеется мощный интерактивный механизм для управления многоуровневыми группировками, детализации, автонастройки ширины колонок и т. д. Допускается сохранение отчета в различных форматах (html, xls, txt). Кроме того, для интерактивного анализа многомерной информации в табличном документе можно использовать сводную таблицу, которая позволяет непосредственно управлять группировкой информации и составом отображаемых данных, не обновляя отчета.

Чрезвычайно важной особенностью табличного документа является возможность использования его в качестве полнофункционального механизма ввода и редактирования информации. Такой документ может содержать любые элементы управления, применяемые в формах "1С:Предприятия", - как в самих ячейках и рисунках, так и поверх ячеек. Это особенно полезно в тех случаях, когда одна и та же форма должна представлять собой и отчет, и инструмент для редактирования информации. Примером может служить отчет о плановых показателях, которые разрешается корректировать.

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

Весьма полезен также механизм интеллектуального анализа данных (data mining), с помощью которого прикладное решение можно с минимальными затратами оснастить такими аналитическими инструментами, как кластерный анализ, дерево решений и т. д.

Важная особенность платформы "1С:Предприятие" состоит в том, что для формирования отчетов любой сложности разработчику не придется подключать дополнительные внешние механизмы. При этом все внутренние инструменты хорошо интегрированы, базируются на единой системе понятий и максимально используют возможности друг друга. Например, чтобы автоматически модифицировать запрос к базе данных по мере того, как пользователь визуально указывает новые уровни группировки, сводная таблица, располагаемая в табличном документе, обращается к функциям построителя отчетов. Разумеется, в системе есть и конструктор отчетов, который позволяет проектировать их интерактивно; однако важно, что он только "собирает" отчет из имеющихся механизмов ("кубиков"), применяемых и для решения множества других задач. Как показала практика, при таком подходе на разработку достаточно сложного отчета уходит всего несколько минут.

Построение распределенных и интегрированных информационных систем

Есть у платформы "1С:Предприятие" и еще одна "козырная карта" - механизмы обмена данными.

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

Сегодня в распоряжении разработчика приложений имеется мощный набор механизмов обмена, способный решать самые разнообразные задачи. Кроме традиционной поддержки территориально распределенных информационных систем с его помощью осуществляется интеграция с другими прикладными программами, а также строятся сложные гетерогенные информационные системы, которые наряду с решениями на платформе "1С:Предприятие" включают в себя еще и внешние приложения.

Использование технологий обмена для решения столь широкого спектра задач объясняется тем, что разработчику предлагается не монолитное решение, а набор механизмов, которые он может применять в любых сочетаниях. Эти механизмы поддерживают работу с XML-документами, XML-сериализацию данных, инфраструктуру сообщений, службу регистрации изменений, планы обмена, управление распределенной информационной базой.

Хотелось бы обратить внимание на то, что данным механизмом обеспечивается очень высокий уровень готовности системы, а организация обмена в распределенной среде практически не требует дополнительных затрат на разработку. Нужно просто указать в интерактивном режиме набор данных, участвующих в обмене, а механизм сам будет формировать и загружать сообщения. При этом система автоматически организует передачу измененной информации, отслеживает получение сообщений, определяет необходимость повторной отправки данных, разрешает коллизии и проверяет целостность загружаемой информации. Гибкие возможности настройки позволяют сформировать практически любую топологию схемы узлов обмена (звезда, снежинка, схемы без центрального узла). Механизмы обмена, с одной стороны, сводят к минимуму объем передаваемых данных (пересылаются только измененные объекты), а с другой - гарантируют устойчивость к потере сообщений. Иными словами, система способна функционировать как в условиях гарантированной доставки сообщений, так и без таковой.

Тем, что платформа обладает эффективными, не требующими сложной настройки механизмами обмена, она обязана прежде всего общей архитектуре построения прикладных решений. Мы уже говорили о том, что органичный переход к распределенным и интегрированным системам обеспечивается объектной техникой манипулирования данными, используемой в "1С:Предприятии". Система соответствующих объектов обеспечивает штатные возможности сохранения любых прикладных данных в формате XML. Кроме того, благодаря стандартным прототипам прикладных объектов платформа способна для каждого объекта автоматически задавать необходимую гранулярность передачи изменений и стратегию обмена в соответствии с его назначением. Основной проблемой большинства известных систем обмена и репликации является то, что в заложенной в них семантике описания данных не содержится сведений о том, какими порциями следует выполнять обмен, как разрешать коллизии, как обеспечивать логическую целостность и непротиворечивость данных. Из-за этого разработчику при использовании подобных механизмов обычно приходится детально описывать процедуры обмена для каждого информационного массива. Механизмы обмена в "1С:Предприятии" функционируют на уровне стандартных прототипов прикладных объектов и потому имеют в своем распоряжении всю необходимую информацию такого рода изначально. Разработчику надо только указать, что в обмене участвуют объекты определенного вида. Далее все действия по регистрации изменений, формированию сообщений, загрузке данных и разрешению коллизий будут выполняться автоматически. Разработчик, конечно, имеет возможность выполнить "тонкую настройку", но она требуется лишь в отдельных случаях.

Другая важная особенность механизмов обмена "1С:Предприятия" - их соответствие передовым мировым концепциям интеграции информационных систем. Мы прекрасно понимаем, что сегодня ни один разработчик экономического софта не может считать себя "царем горы", которому нет необходимости думать о тесном взаимодействии с системами других вендоров. Под взаимодействием мы понимаем не просто умение вызвать какую-то функцию из другой программы или экспортировать в нее какие-либо данные. Речь идет о построении сложных гетерогенных систем, в которых несколько разнородных прикладных решений образуют слаженный ансамбль. Очевидно, что в обозримом будущем эта тенденция станет одной из доминирующих на рынке экономических систем. Уже сегодня механизмы обмена "1С:Предприятия" позволяют осуществлять взаимодействие не только с отдельными приложениями, но и с перспективными интеграционными платформами.

Поставка и обновление прикладных решений

Практически все производители прикладных программ предусматривают в них механизмы для обновления версий. Однако для таких систем, как "1С:Предприятие", подобные задачи представляют особую сложность. Это объясняется, во-первых, тем, что экономические системы обновляются гораздо чаще, чем другие, а во-вторых, тем, что сегодня нередко практикуется изменение прикладных решений "1С:Предприятия" на местах с целью адаптации тиражного продукта к потребностям конкретного клиента. Последнее обстоятельство представляет особую сложность, так как при выпуске разработчиком любого обновления прикладного решения возникает необходимость синхронизации сделанных им изменений с теми, что были внесены в процессе внедрения у заказчика.

Для решения этих и множества других задач, связанных с поставкой и обновлением приложений, в "1С:Предприятии" реализован целый комплекс механизмов, ориентированных как на разработчиков, так и на пользователей. Они охватывают весь технологический процесс поставки и поддержки: подготовку дистрибутивных файлов, инкрементных обновлений и установочных комплектов поставки, публикацию обновлений в Интернете, автоматический их поиск и выполнение, управление составом поддержки на уровне объектов конфигурации и т. д.

Одним из наиболее существенных элементов технологии обновления является механизм, который обеспечивает синхронизацию изменений, сделанных поставщиком прикладного решения, с теми изменениями, что были внесены при внедрении на конкретном предприятии. Он предоставляет мощные функции сравнения и анализа изменений, а также средства управления их синхронизацией. Администратор или разработчик может детально настроить синхронизацию обновлений вплоть до отдельных объектов, свойств и процедур модулей. Например, если он отметит объекты, которые в дальнейшем намерен поддерживать самостоятельно, то они обновляться не будут. Если объекты необходимо объединить, то для упрощения синхронизации изменений можно настроить приоритеты такого объединения.

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

Поскольку механизм обновления в значительной мере основан на том, что все прикладное решение описывается с помощью метаданных, а бизнес-логика приложения строится на стандартных прототипах прикладных объектов, система способна поддерживать стратегию обновления с учетом специфики архитектуры прикладного решения, контролировать его логическую целостность и предоставлять пользователю информацию об изменениях в наглядной форме.

А также...

Допускается реализация всего интерфейса прикладного решения на нескольких языках. Каждый пользователь может работать с одним из заложенных в него языков. При этом не нужно выносить все строки в отдельные файлы. Элементы интерфейса редактируются на нескольких языках "по месту" - в формах, макетах печатных документов, в меню и т. д. Разработчик может в любой момент переключиться и редактировать интерфейс форм на другом языке. Допускается также поочередное редактирование конкретной надписи на всех поддерживаемых языках. Если необходимо расширить языковую базу, можно собрать все текстовые элементы в общий список, с тем чтобы перевод одинаковых надписей отражался сразу во всех компонентах интерфейса. Общая стратегия интернационализации включает также перевод системного интерфейса, хранение всех строк в кодировке UNICODE, форматирование дат и чисел в соответствии с особенностями различных стран и языков, построение правил сортировки с учетом национальных стандартов и т. д.

Выполнение алгоритмов бизнес-логики разработчик волен по своему усмотрению переносить на сервер "1С: Предприятия". Благодаря этому он может управлять распределением нагрузки между клиентом и сервером, не имея специальных навыков построения трехуровневых архитектур, не обладая знанием сетевых протоколов и пр. Всю рутинную работу система берет на себя и обеспечивает рациональное использование серверных ресурсов за счет поддержки stateless-модели, кэширования и т. д.

В системе защиты прав доступа "1С:Предприятия" реализована возможность настройки ограничений на уровне отдельных записей, а также полей таблиц. Это позволяет, например, предоставить пользователю доступ к именам сотрудников только в пределах своего департамента, а к сведениям об окладе и семейном положении - только о тех из них, кто является его подчиненными. Настройка таких ограничений требует лишь задания формального условия, после чего система будет контролировать все действия пользователей автоматически, а разработчику впоследствии не придется учитывать эти ограничения в явном виде.

Одним из мощных инструментов разработчика в "1С:Предприятии" является средство сравнения и объединения прикладных решений. Мы уже упоминали о нем, когда говорили о механизме поддержки. Данный инструмент может использоваться как для анализа различий, так и для переноса части функций из одного приложения в другое. Он обеспечивает удобное визуальное представление различий между прикладными решениями и имеет гибкие возможности настройки логики сравнения. При сравнении родственных конфигураций данный механизм автоматически сопоставляет даже переименованные объекты, прибегая для этого к внутренней идентификации метаданных. Соответствие сравниваемых объектов независимо от совпадения их имен можно настроить и вручную, после чего оно будет учтено и во всех ссылках на такие объекты, имеющихся в других объектах прикладного решения. Кроме того, механизм сравнения содержит средства для визуального представления различий форм интерфейса и макетов печатных документов. Благодаря использованию структуры метаданных и средств визуального сравнения интерфейсных объектов с помощью нашей платформы удается решать гораздо больше задач, чем в тех системах, где механизмы сравнения базируются на сопоставлении файлов исходных кодов программ.

В "1С:Предприятии" поддерживается протоколирование действий пользователей в журнале регистрации. Система имеет несколько уровней протоколирования, которые могут функционировать автоматически, не требуя дополнительных усилий со стороны разработчика. Прежде всего, разумеется, фиксируются начало и окончание сеансов работы пользователей, административные операции с информационной базой, а также регистрируемые ошибки. За счет того, что все изменения в БД выполняются исключительно в объектной технике (через объекты, отвечающие за манипулирование данными), система может автоматически регистрировать их в журнале, причем будет делать это независимо от того, как они выполнялись (интерактивно или программно). Разработчик может дать распоряжение о внесении в журнал любых других записей, которые система не способна фиксировать автоматически, например, информации об отправке факса или формировании отчета. Важно заметить, что журнал регистрации реализован как отдельный системный механизм. Он не использует для хранения информации базу данных "1С:Предприятия", а следовательно, не создает дополнительной нагрузки на приложение и не замедляет работу пользователей.

Итак...

В этой статье мы попытались перечислить наиболее интересные технологические новшества платформы "1С:Предприятие". Однако при этом мы старались показать, что все реализованные в ней решения основаны на единой модели и единой архитектуре.

Важно и то, что все механизмы платформы в той или иной степени используют средства других механизмов. Например, почти все они опираются на структуру метаданных и прототипы прикладных объектов. Таким образом, хотя каждая возможность "1С:Предприятия" может быть достаточно любопытна сама по себе, наибольший интерес представляет рассмотрение всей их совокупности в рамках целостной модели.

Сформулируем еще раз несколько общих принципов, лежащих в основе модели "1С:Предприятия".

- Архитектура платформы и ее инструментальные средства реализованы так, чтобы разработчик бизнес-приложения мог, максимально абстрагируясь от низкоуровневых технологий, сосредоточиться на решении прикладных задач той или иной предметной области.

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

- Платформа содержит готовые ответы практически на все вопросы, возникающие у разработчика прикладного решения, начиная от того, как отражать в БД информацию предметной области, и кончая процедурами поставки, поддержки и администрирования.

Наличие единой, сквозной высокоуровневой модели и реализующих ее технологий позволяет, по нашей оценке, на порядок сократить затраты на создание и поддержку прикладных решений.

Начав в 1996 г. работы в этом направлении и даже выпустив первую версию платформы, мы, конечно, не были абсолютно уверены в правильности выбранного пути. За прошедшее с тех пор время концепция системы успешно развивалась, и сегодня она воплощена в платформе "1С:Предприятие 8.0". Строго говоря, в мире не так уж много специализированных технологий, ориентированных на быстрое создание именно бизнес-приложений. Однако становится все более очевидным, что данный путь совпадает со стратегическим направлением развития бизнес-софта.

По оценкам многих специалистов, с которыми нам приходилось общаться, ситуация в России и в странах бывшего СССР, где сложилась целая индустрия разработки и поддержки бизнес-решений, основанная на специализированной технологической платформе, по мировым меркам является уникальной. Как нам представляется, аналогичной специализированной платформы, на которой различными фирмами создавалось бы такое количество разнообразных массовых бизнес-приложений, покрывающих потребности значительной части рынка какого-либо региона, сегодня просто не существует.

Разумеется, все изложенные выше соображения (включая и анализ современных тенденций) являются только нашим мнением и результатом наших исследований. Мы ни в коем случае не претендуем на абсолютную истину, которой в этих вопросах, по-видимому, и не может быть. Наверняка у многих читателей есть своя, отличная от нашей точка зрения на проблемы, затронутые в статье. Мы открыты для их обсуждения и дальнейших дискуссий.