“1С:Предприятие” - платформа разработки бизнес-приложений

ТЕХНОЛОГИИ

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

В этой статье речь пойдет именно о технологической платформе разработки приложений. Но сначала хотелось бы отметить один принципиальный момент.

В начале 90-х годов российские пользователи из числа серьезных клиентов явно отдавали предпочтение зарубежным программным разработкам, что объяснялось достаточно простыми соображениями - надежностью поставщиков. (Главный аргумент против российских разработок звучал так: “А вы гарантируете, что ваша фирма будет существовать через пару лет?”.)

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

Создание платформы

Сегодня широкий круг приложений имеет внутренние механизмы программирования, которые можно условно разделить на два типа:

1) механизмы, действующие в рамках базовых функций конкретного приложения (таковым, например, был в свое время WordBasic, изначально учитывающий специфику Word);

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

В этом окне видны все объекты, доступные разработчику

Средства адаптации ПО к задачам конкретного пользователя появились уже в самых первых версиях бухгалтерских программ “1С”. В 1996 г. фирма выпустила “1С:Торговлю”. Она была реализована на новой технологической платформе V7, которая сегодня известна под торговой маркой “1С:Предприятие”. Этот инструментарий можно смело отнести к средствам разработки второго типа.

Описывая данную платформу разработки приложений, интересно сравнить ее с подобными средствами. Но нужно подчеркнуть, что, в отличие от универсальных систем быстрой разработки типа VB и Delphi, платформа “1С:Предприятие” - специализированное средство создания приложений для решения экономических задач. По-видимому, более близким ориентиром для сравнения являются пакеты семейства MS Office.

Кроме того, выпуская собственный инструментарий, разработчики “1С” учитывали особенности не только предметной области, но также и российской действительности (не очень высокий уровень затрат на ИТ, длительный этап перехода от ручных методов к автоматизированным и пр.).

Далее я буду проводить некоторые аналогии с VB и Office/VBA, но не с точки зрения оценки лучше - хуже, а просто чтобы на фоне этих широко известных систем была более понятна логика работы платформы “1С:Предприятие”.

Проблемы роста

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

“Конфигуратор” - среда разработки приложения

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

Как ни странно, но одна из проблем смены позиционирования системы “1С:Предприятия” заключается в необходимости корректировки используемой в ней терминологии. “1С:Предприятие” сейчас означает несколько понятий, различаемых только в конкретном контексте, что создает серьезную путаницу: во-первых, это название коробочного продукта, во-вторых, наименование программы, с которой работает конечный пользователь, в-третьих, средство разработки, в-четвертых, название технологической базы.

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

Другой аспект этой же проблемы - некоторое несоответствие внутренней терминологии “1С” и общепринятой в среде разработчиков (это будет показано ниже). Конечно, тут большую роль играет наследуемый информационный ресурс, однако при планировании расширения сферы применения продуктов желательно устранить подобные расхождения.

Общая логика работы системы

В общем случае функционирование системы “1С:Предприятие” определяется взаимодействием трех ее ключевых составляющих частей:

1. приложения “1С:Предприятие” (название то же, но суть уже другая) - программная среда для макропрограммы, называемой “Конфигурация”. Фактически данное приложение - это специализированный интерпретатор, исходный интерфейс которого предназначен для управления режимами трансляции и для запуска минимально необходимого набора функций (в какой-то степени здесь уместна аналогия между средой VB и работающим в этой среде VB-проектом).

2. макропрограммы “Конфигурация”, работающей в среде “1С:Предприятие” и полностью определяющей функциональность решаемых пользователем задач (в том числе и настройку интерфейса). Физически “Конфигурация” хранится в виде специального файла-контейнера 1cv7.md. Конфигурация тренировочной системы “Учет основных средств”, создаваемой в течение пяти дней слушателями учебных курсов, имеет объем около 350 Кб. Комплексная конфигурация, поставляемая “1С” (“Бухгалтерия”, “Зарплата и Кадры”, “Торговый и складской учет”), - почти 9 Мб.

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

3. приложения “Конфигуратор” - основной среды разработки конфигурации (пользовательской программы). Кроме нее в состав пакета входят еще программы для отладки конфигураций.

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

Приложение “Адресная книга” можно создать “с нуля” за несколько минут

Отметим некоторые особенности разработки приложений в системе “1С:Предприятие”.

1. В данном случае, в отличие от известных систем RAD и MS Office/VBA, физически разнесены среды написания программы и ее исполнения. Очевидно, что это экономит ресурсы, но несколько замедляет процедуру отладки (при каждом тестовом запуске происходит загрузка среды исполнения).

2. Лицензионная политика фирмы “1С” подразумевает комплексную поставку всех трех программных составляющих. В частности, пользователь не может купить только инструментальные средства без какой-то конфигурации. И он не может создавать с помощью пакета автономные тиражируемые приложения - новые конфигурации будут работать лишь в среде “1С:Предприятия”. В данном случае имеется полная аналогия с приложениями MS Office.

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

Разработка конфигурации

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

- структура метаданных;

- набор пользовательских интерфейсов;

- набор прав пользователя.

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

Состав библиотек и объектов системы “1С:Предприятие”

Например, объект “Справочник” предназначен для ведения любых списков однородных данных: справочников, картотек и пр. По содержанию подобный объект в какой-то степени соответствует понятию “Таблица” в таких базах данных, как Access, FoxPro и пр. Однако в этом случае разработчик фактически вообще не имеет дела с понятием “база данных” - все вопросы хранения информации, в том числе создания и коррекции файлов, решаются самим объектом.

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

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

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

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

Завершая краткий обзор

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

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

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

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