Главная страница Visual 2000 · Общий список статей

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

Андрей Колесов

© Андрей Колесов, 2000
Авторский вариант. Статья была опубликована c незначительной литературной правкой в еженедельнике PC Week/RE (N 38/2000, с. 28)

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


Сегодня о существовании фирмы "1С"...

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

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

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

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

В начало статьи

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

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

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

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

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

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

Следует также отметить, что, создавая собственный инструментарий, разработчики "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. Тренировочная система "Учет основных средств", создаваемая в течение 5 дней слушателями учебных курсов, имеет размер конфигурации около 350 Кбайт. "Комплексная конфигурация", поставляемая "1С" (Бухгалтерия, Заплата и Кадры, Торговый и складской учет"), — почти 9 Мбайт.

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

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

    Рис. 2. "Конфигуратор" — среда разработки приложения

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

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

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

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

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

В начало статьи

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

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

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

Рис. 3. Приложение "Адресная книга2 можно создать с "нуля" за несколько минут

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

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

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

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

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

В начало статьи

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

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

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

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

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

В начало статьи

Таблица. Состав библиотек и объектов системы "1С:Предприятие"

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

В начало статьи