|
||
|
||
Что лежит в красно-жёлтой коробке?V7 со стороны разработчика. Никита Зайцев aka WildHare Когда программисту нужно сделать что-то не очень фундаментальное, причём сделать нужно срочно, а оптимальность кода особой роли не играет, он берёт в руки Delphi или VB и делает. Это называется Rapid Application Development, то есть быстрая разработка приложений. Соответственно, используемый в этом процессе инструмент называется средой быстрой разработки приложений или RAD-средой. В этой статье я собираюсь рассказать о программном продукте, который, может быть, формально и не является RAD-средой, но идеально подходит для быстрой разработки приложений, решающих задачи хранения и обработки структурированных данных. Речь пойдёт о платформе V7, более известной под своим «рыночным» именем «1С:Предприятие». «Упс… а при чём тут 1С? — спросит кое-кто из читателей, — Это ведь бухгалтерская программа… или как правильно назвать — экономическая? В любом случае, это из другой сказки» . Так? Не совсем. Если заглянуть в красно-жёлтую коробку со стороны конечного пользователя, там можно найти ряд готовых приложений для решения неких типовых задач — бухгалтерского, кадрового, или ещё какого-нибудь учёта. И эти готовые приложения снабжены какими-то средствами настройки — для пущего удобства. Как говорят агенты по продажам, «система снабжена гибкими средствами конфигурирования, и вы можете буквально все переделать под свои нужды» — и это действительно так, другое дело, что ни один нормальный пользователь не будет ничего переделывать просто в силу своей природы, но это уже тема для отдельного разговора. Если же посмотреть на ту же самую коробку, но уже со стороны разработчика, мы получим совсем другую картину — в коробке лежит мощная предметно-ориентированная среда быстрой разработки приложений, снабжённая несколькими примерами (наподобие того, как в поставку MS Access и MS SQL Server входит база данных мифической компании Northwind). Нельзя же назвать V7 бухгалтерской (экономической, etc.) системой только потому, что кто-то сделал на ней бухгалтерское приложение — как нельзя посмотреть на «Борей» и назвать MS Access системой учёта для торговли продуктами питания. Возникает неопределённость. Одни называют «1С:Предприятием» набор готовых приложений, учётную систему для конечного пользователя. А другие (и их этих других не так уж и мало) называют этим же именем среду разработки. Производитель платформы, фирма «1С», вносит свою лепту, употребляя одно и то же название во всех случаях, вне зависимости от контекста. Во избежание путаницы я вообще не буду употреблять термин «1С:Предприятие», и заменю его (применительно к платформе) более точным технологическим названием V7. Вопрос о том, что первично — дух или материя, платформа или созданные на ней приложения, я здесь рассматривать не буду (ответ, ImHO, очевиден ;-). Как у всякого порядочного инструмента, у V7 есть чёткая область применения. С этой платформой имеет смысл работать в ситуациях, когда:
Как показывает практика, область применения V7 весьма широка — при соблюдении указанных условий на ней можно сделать практически что угодно, от системы финансового анализа до генератора отчётов к биллинговой системе или сетевой игры в монополию. Причём создаваемые приложения вовсе не обязательно должны быть связаны с учётом, например, вот вполне жизненная задача: выкачивать из Сети содержимое некоего форума и сохранять его в локальной базе данных с возможностью последующего обновления, индексации, поиска, подсчёта статистики и т.п. вещей. Реализация этой задачи на V7 заняла у меня едва ли не меньше времени, чем его потребовалось на изучение имеющихся на рынке оффлайн-браузеров (которые всё равно не умеют скачать топик форума, разобрать его на отдельные части, выделить в них авторов/темы/дату-время а потом еще и выполнять запросы вида «все треды автора "Вася Пупкин" за последние две недели, в которых слово "пиво" встречается более двух раз»). Из основных технических особенностей V7 я бы отметил следующие:
V7 является предметно-ориентированной средой. Что это такое? Это объектно-ориентированная среда, урезанная до неузнаваемости с целью оптимизации под конкретную предметную область. В V7 есть классы, экземпляры классов и методы классов, применяемые к экземплярам. Но нет никакой возможности (во всяком случае, нет штатной возможности, а про нештатные мы сейчас говорить не будем) ни модифицировать существующие классы, ни переопределять их методы, никакого ООП нет и в помине. Хорошо это или плохо? Лично мне кажется, что это нормально. Да, разработчик лишён возможности перекраивать мир по своему разумению, функциональность инструментария ограничена «сверху» (используя дополнительные внешние компоненты, можно добавить какие-то новые сервисные возможности, сделать шлюз в базу данных Oracle, научить платформу распознавать рукописный текст или общаться с кассовым аппаратом — но изменить «прошитые» в платформу механизмы невозможно). Но при этом урезание «пространства возможных решений» парадоксальным образом влияет (в лучшую, ясное дело, сторону) на скорость, а иногда и на качество разработки — а что нам нужно от RAD-среды, как не скорость? Если разобраться, то ничего парадоксального тут нет — можно дать хирургу спирт, пилу и скальпель, он бодро оттяпает пациенту руки-ноги и возьмётся за следующего. А вот если тому же самому хирургу дать в руки толстенный каталог медицинского оборудования — к тому времени, когда он прочитает хотя бы краткое описание каждого предмета, пациент уже давно перестанет нуждаться в какой-либо помощи. Разумеется, о по-настоящему сложных и уникальных проектах в данном случае речь не идёт, там-то как раз потребуется не только изучить все существующие инструменты, но и заняться изготовлением новых. Но ведь на свете существуют не только сложные и уникальные проекты, правда? Довольно часто программисту, создающему Нечто Гениальное, время от времени приходится спускаться на землю и заниматься банальной халтурой — и вот тут скорость разработки играет критическую роль. Другой положительный момент — низкий «порог вхождения» . Начинать работать с V7 может любой, кто имеет представление о программировании хотя бы на уровне VBA-макросов для MS Word. V7 вполне можно рекомендовать как платформу для обучения, не в последнюю очередь благодаря русской нотации кода. «Потолка» практически нет — начав с тупого нажатия кнопки «Next» в «мастере запросов» можно со временем придти к написанию библиотек на C++ (а потом, само собой, изучить Oracle и уехать к чёртовой бабушке в Канаду или Австралию ;-). А можно и наоборот — мне известны случаи, когда люди пересаживались на V7 с более мощных инструментов (VC++ или Delphi). Причины? По их собственному выражению — «чтобы не изобретать велосипед», или «чтобы тратить меньше времени на всякую фигню» (под фигней, конечно же, понималось основное место работы, а не Проект Всей Жизни). Теперь нужно разбавить дифирамбы чем-то конкретным. Ядром проекта (конфигурации) V7 является так называемое «дерево метаданных» (фрагмент приведён на скриншоте, в реальном приложении полностью развёрнутое дерево метаданных может занимать пару десятков экранов). Проектируя структуру данных конфигурации V7, разработчик абстрагируется от физического воплощения этой структуры (таблиц, полей, индексов и прочего, всё это система берёт на себя) и работает с объектами, максимально приближенными к предметной области — такими, как «документ» или «календарь». Не стоит обращать внимание на обилие объектов явно бухгалтерского происхождения — всё-таки предком V7 (идеологическим предком, но ни в коем случае не технологическим) была «1С:Бухгалтерия 6.0» . На самом деле использовать эти объекты вовсе не обязательно и они имеют смысл только в том случае, если конечное приложение должно предоставлять функции классической двойной записи. Хранится всё это хозяйство в одном-единственном файле формата Compaund и при желании до структуры метаданных можно достучаться из внешних приложений: Не каждый объект дерева метаданных является экземпляром класса, к методам которого можно обращаться из программных модулей, точно так же и в дерево метаданных помещаются объекты далеко не всех классов, существующих в V7. Подробное же описание того, какие классы и в каком контексте доступны программисту, какие объекты дерева метаданных для чего служат и как всё это между собой связано, потянет на небольшую (страниц так в полсотни) книжку, и в статью при всём желании не влезет. Помимо средств управления структурой данных и автоматической генерации физических хранилищ для этих данных, в платформу встроено еще несколько весьма полезных механизмов:
Ключевой функцией V7 я бы назвал практически абсолютную «программную управляемость», т.е. практически любая операция доступна как интерактивно, так и из программного кода. Например, можно запросто создавать «виртуальных» пользователей, которые будут в заданное время производить рутинные работы, да еще и отчитываться по электронной почте. У этой медали есть и обратная сторона — виртуальный пользователь может производить не только полезные действия. Вездесущая «Лаборатория Касперского» уже зарегистрировала первую потугу создать вирус для V7 (средствами самой V7) и хотя этот «вирус» был не более чем чьей-то неудачной шуткой, создание настоящего деструктивного вируса для V7 не является такой уж нереальной задачей. Развивать эту скользкую тему мне не хочется — общеизвестно, что к такого рода информации вирусмейкеры проявляют значительно больший интерес, нежели пользователи и системные администраторы. Что можно сказать о «бытовых» качествах собственно среды разработки? V7 снабжена стандартным набором инструментальных средств: редактор текстов программных модулей, редактор печатных форм, визуальный редактор экранных форм, отладчик, десяток «визардов», помогающих создать объект метаданных или сгенерировать отчёт. Конечно, возможности у этих инструментов заметно беднее, чем, скажем, в Delphi — нет автоподсказки, нет генерации кода при работе с конструктором экранных форм, однопроходный интерпретатор языка V7 не может обеспечить ничего, кроме минимальной проверки синтаксиса и отлова стоящих не месте скобок и точек. Но это и понятно, всё-таки опыта и возможностей у компании Borland несколько больше, нежели у 1С ;-). Разумеется, у V7 помимо достоинств есть и слабые стороны, и было бы довольно странно не рассказать про них. К откровенным недостаткам платформы я бы отнёс вот что:
Подведём итоги. По моему мнению (которое разделяет довольно-таки много народа), достоинства V7 как среды быстрой разработки многократно перевешивают недостатки и что в своём классе V7 является лучшей системой по соотношению «цена/качество» . Вот так вот скромно. Это если не принимать во внимание «побочных» факторов — таких, как сотни тысяч инсталляций продукта по всей стране и за её пределами, или многочисленная и очень активная community, сосредоточенная вокруг нескольких ключевых сайтов. Остаётся последний вопрос — сколько стоит и где взять посмотреть. Это, на самом деле, вовсе не тривиальные вопросы. В прайс-листе 1С раздел «1С:Предприятие» занимает не одну страницу и с ходу разобраться в обилии версий и вариантов поставок не так и просто. Если отбросить терминологию 1С и выражаться простым человеческим языком, то Personal (без сетевых возможностей) обойдётся конечному пользователю $250-$500 (в зависимости от набора компонент и функционала), Professional (с сетевыми возможностями) $500-1500, а Enterprise (с возможностью хранить данные под MS SQL Server) $1000-$3000. Некоторые компоненты V7 подходят к любой версии, но их нужно покупать отдельно, причём цены самые разные (от $16 за каркасы библиотек дополнительных функций, до $480 за шлюз к MS IIS). Где взять посмотреть? Как вариант — можно зайти в бухгалтерию вашей фирмы и поискать там под столами красно-жёлтую коробку ;-). А если серьёзно, то с этим сложно. 1С не выпускает ни demo-версий с ограниченной функциональностью, ни trial-версий с ограничением по времени использования. Собственно, в этой политике (несомненно, выгодной с точки зрения объёма продаж — ведь отправить демоверсию в Recycle Bin куда как проще, нежели вернуть деньги за купленный товар), ImHO, и кроется одна из причин столь активного распространения контрафактных копий, с которым «1С» не перестаёт бороться уже который год. Но это уже совсем другая история… Источник - SoftТерра, http://www.softerra.ru
|
||
|
||
Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com |