Архивы: по дате | по разделам | по авторам

Семь раз отмерив

Архив
автор : Федор Скрыпник   03.10.2003

Не так давно фирма «1С» выпустила новую версию своего программного продукта «1С:Предприятие 8.0: Управление торговлей». Не самое громкое событие — если не учитывать, что это решение реализовано на новой технологической платформе.

Не так давно фирма «1С» выпустила новую версию своего программного продукта «1С:Предприятие 8.0: Управление торговлей». Не самое громкое событие — если не учитывать, что это решение реализовано на новой технологической платформе.

Возможностей предыдущей платформы 7.7 мне, как разработчику, перестало хватать уже давно. Больше всего нареканий вызывала производительность системы. Солидные объемы данных и неуклонно растущее число пользователей сводили на нет все старания по оптимизации. Единственным выходом было — разнести автоматизируемые задачи по отдельным информационным базам. Удобным такое решение назвать нельзя — работу оно ускоряет, но головной боли в вопросах синхронизации информации добавляет будь здоров.

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

Увы, вариантов не так уж и много. Бо,льшую часть рынка занимает «1С», оставшуюся часть делят «Парус» (www. parus.ru), «Инфо-Бухгалтер» (www. ib.ru), «Инфин» (www.infin.ru), «БЭСТ» (www.mrpii.ru) и «Турбо Бухгалтер» (www.dic.ru). Такой перекос обусловлен не только объективными достоинствами программ от «1С», но и тем, что любая, даже самая распрекрасная экономическая софтина без поддержки существовать не может. А вот тут «1С» даст солидную фору конкурентам. На сегодняшний день у нее самая разветвленная и мощная партнерская сеть.

Фирм, предлагающих платформы для автоматизации компаний среднего уровня, и того меньше. Приобретение и поддержка таких решений влетает в копеечку. Во время поисков я столкнулся с продуктами фирмы Microsoft Business Solutions (бывшая Navision, www.navision.ru). Возможности ее платформы Microsoft Business Solutions-Axapta компанию, в которой я работаю, устраивали вполне, чего не скажешь о цене. В расчете на одно рабочее место стоимость программы колебалась в пределах 1600–2500 евро.

В тот момент «1С» выпустила бету «восьмерки», раздобыть которую не составило большого труда. Несмотря на программные глюки и скудость документации, определенное представление о ней составить удалось. Решено было дождаться финального релиза и приобрести.

Грустная бухгалтерия по «1С»

Сюрпризы начались уже на этапе покупки. Для восьмой версии «1С» разработала новую структуру поставок. Теперь продается типовая конфигурация и программная платформа в однопользовательском варианте. Если понадобится добавить пользователей, придется покупать дополнительные лицензии. Сейчас они существуют в вариантах на 1, 5, 10, 20 и 50 рабочих мест. То есть типовая торговля (7.7, сетевая, для SQL), без лимита одновременно работающих пользователей обойдется в 1920 долларов. А поставка «Управления торговлей» восьмой версии на полсотни пользователей стоит уже 6220 долларов. Так что к планированию рабочих мест придется подходить ответственно. Предприятия, которые могут распределять по времени сеансы работы, окажутся в выигрыше.

Для большей наглядности позволю себе лирическое отступление. Около года назад нелегкая судьба внедренца занесла меня в очередной «Урюпинск». Тамошние клиенты использовали для учетных нужд систему, разработанную компанией «Галактика». Количество рабочих мест, по условиям лицензии, было ограничено, а «специальное» ПО, решающее подобные проблемы, местные компьютерщики по какой-то причине не применяли2. В этой ситуации руководство вынуждено было организовать работу с программой в две смены. До обеда за компьютерами сидели бухгалтеры и кладовщики, после обеда — менеджеры, экономисты и кадровики.
После того как все формальности разрешились, была получена поставка, которая включала в себя:

- «1С:Предприятие 8.0: Управление торговлей» с комплектом документации;
- лицензию на пять рабочих мест;
- лицензию на сервер «1С:Предприятия 8.0».

Первым делом нужно было разобраться с HASP-ключами. Они теперь работают через USB. Для того чтобы клиенты могли видеть их присутствие в сети, на компьютер-носитель ключа устанавливается HASP License Manager.
Если же ключей нет, можно пойти другим путем. Умельцы уже подсуетились и выпустили соответствующую заплатку. Точнее, две — первый крэк ломал «1С» не полностью, поэтому был выпущен патч для крэка, окончательно исправивший ситуацию3. Тем не менее, стабильность работы взломанной программы вызывает большие сомнения.

Мы пойдем своим путем

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

Теперь пираты могут сколько угодно ломать «1С», но если, не дай бог, с данными что-нибудь случится, выковырять их руками уже не удастся4. Программы тестирования и лечения БД справляются со сложными случаями далеко не всегда. Единственное, что может помочь в таких случаях, — это горячая линия «1С», которая первым делом потребует доказать, что продукт был приобретен легально. Таким образом, и овцы целы, и волки малость накормлены — для обучения взломанную версию «1С» использовать можно сколько угодно, но ставить ее на реальное предприятие решится не каждый. На специализированных форумах уже слышны стоны по поводу утерянных данных и файлов конфигурации, и это только начало.

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


1 (назад)Как правило, внедренцы «1С» (работники франчайзи и вольные художники) о смене платформы не задумываются — в конце концов, она их кормит. Исключение составляют специалисты, в чью задачу входит автоматизация предприятия, на котором они работают.
2 (назад) Не факт, что такое ПО вообще существует. — В.Г.
3 (назад) Существующие крэки ломают только локальную версию «восьмерки». Впрочем, для отладки конфигураций ее обычно более чем достаточно.
4 (назад) Разумеется, если наши умельцы не разберутся-таки с форматом файла и не выпустят соответствующие утилиты.

Язык мой — враг мой

Еще одно интересное новшество касается языка программирования и среды разработки. По мнению системных программистов и прочих слуг Ваала, «1С»-программисты всегда были людьми второго сорта. Это, впрочем, не слишком логично — относительная простота языка программирования еще не говорит о том, что программировать на нем просто5.

Ставшая классической примитивность средств программирования от «1С» вызвана желанием разработчиков платформы дать шанс менять конфигурацию под себя самому бухгалтеру — человеку, с искусством программирования не знакомому. Однако уже несколько лет назад стало очевидно, что с большинством задач по конфигурированию системы бухгалтер справиться не в состоянии. И реверансы в сторону непрофессионалов приносят больше вреда, чем пользы. Поэтому возврат к нормальной программерской логике был неизбежен. И неудивительно, что многое в новой платформе от «1С» покажется знакомым тому, кто работал с другими языками программирования. Конечно, никаким ООП здесь пока и не пахнет — «1С» проповедует предметно-ориентированное программирование, а вовсе не универсальное средство разработки6. Но многие вещи на сей раз сделаны почти как надо. И в самом языке, и в среде программирования. Формально создать конфигурацию средствами многочисленных конструкторов, не написав при этом ни строчки кода, в «восьмерке» можно и сейчас. Вот только практическая ценность такой конфигурации представляется сомнительной.

Анализировать все изменения во встроенном языке — задача в рамках статьи непосильная. Его описание, входящее в поставку, занимает два тома общим объемом 1326 страниц. Подробное оглавление и предметный указатель изданы отдельной книгой в 204 страницы. Даже краткое описание изменений в объектах платформы «1С:Предприятие 8.0» вряд ли у кого-то оставит сомнения в том, что встроенный язык останется неизменным. Скажу больше, языки версии 7.7 и 8.0 несовместимы. Сохранилась некоторая наследственность понятий, но не более того. Когда впервые пришлось разбираться с куском кода «восьмерки», я был сильно озадачен. Пришлось лезть в справочники. На мой взгляд, язык стал более громоздким. Перед разработчиками стояла непростая задача: приблизить встроенный язык к языкам программирования высокого уровня и сохранить его предметную ориентированность. Удалось им это или нет, судить рано. Все, что сейчас возможно, — это остановиться чуть подробней на некоторых отличиях.

Появились новые литералы и типы данных, такие как Истина, Ложь, Неопределенно, Null. Исчезла функция Пу  стоеЗначение(). Для создания объектов введен оператор Новый. Для всех объектов переработаны предопределенные процедуры. Теперь они называются Событиями.

Язык запросов сильно изменился. Однако тем, кто работал с SQL, понять его будет просто, так как языки практически идентичны. Появились вложенные запросы, можно объединять несколько запросов, соединять таблицы. Результат запроса можно выгружать в сводную таблицу.

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

Сами объекты претерпели значительные изменения. Если углубиться во встроенный язык, сразу становится ясно, что разработчики старались максимально унифицировать функции объектов. То есть единожды вникнув в методы работы со справочниками, разбираться с документами или даже с константами, перечислениями, регистрами и отчетами будет значительно легче. Все это началось в версии 7.x, и в «восьмерке» получило достойное продолжение.

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

Кроме того, программисты «1С» реализовали трехуровневый механизм доступа к данным. Теперь между клиентом и БД может быть посредник — сервер «1С:Предприятия 8.0». Такое нововведение нельзя оставить без внимания.

Первое, что бросилось в глаза: для работы в клиент-серверном режиме «восьмерка» использует только Microsoft SQL Server 2000 SP2. Не уверен, что это оправданно технически. Скорее тут свою роль сыграли бонусы, получаемые от реализации Microsoft SQL Server 2000.

«Семерка», предназначенная для работы с SQL Server, силами клиентской машины обрабатывала информацию, полученную в результате запросов к БД. В восьмой версии обработку информации может взять на себя сервер «1С:Предприятия 8.0». Он получит запрос от клиента, перенаправит его в БД и, обработав полученные данные, вернет их клиенту. Преимущества такого подхода очевидны, если клиентские машины слабы. Дешевле увеличить мощность сервера, чем обновлять парк компьютеров. Однако недостатки тоже не спрячешь. Чем больше распределенных центров обработки данных, тем сильнее нагружается сеть, которая участвует в их согласовании. Тем более если разнести сервер «1С:Предприятия» и базу данных по разным компьютерам (такую возможность разработчики тоже предусмотрели).

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

Наверное, уже понятно, что всерьез говорить о переносе конфигураций из 7.7 в 8 не приходится. Средства для экспорта данных есть, но со структурой хранения информации и программным кодом все не так безоблачно. Тексты программных модулей при переносе конвертируются в комментарии и могут служить только в качестве напоминаний о прежней функциональности. Конвертер неплохо справляется с переносом данных, их структуры, форм объектов, интерфейсов пользователей, записей регистров. За бортом остаются периодические константы и реквизиты справочников. В любом случае, смысл этой миграции мне не совсем понятен. Чтобы воспользоваться преимуществами «восьмерки», необходимо написать конфигурации специально под нее. С нуля. Впрочем, разработчиков платформы можно понять. Они решили перестраховаться и избежать претензий, которые могли возникнуть, не окажись конвертера в наличии.

Конфигуратор

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

Для более удобного написания кода введена контекстная подсказка. Если в тексте написать «Документ.Р», дальше появится меню, в котором будут перечислены все документы, чье название начинается с «Р». В текстовом редакторе можно сворачивать процедуры, функции и комментарии. Мне не приходилось встречать такой удобной возможности в средствах разработки других языков программирования7.

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

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


5 (назад) Взять хотя бы ассемблер — язык-то сам по себе несложный.
6 (назад) Упоминаемые далее объекты к объектам в ООП практически никакого отношения не имеют. Это просто схожие термины.
7 (назад) В других средах программирования похожие возможности реализованы иначе.
8 (назад) Удивительно, что такая возможность появилась только сейчас, во всех уважающих себя средах программирования это считается само собой разумеющимся.

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

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

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

Отчетность

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

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

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

Какие же отчеты без объектов накопления данных? Появившиеся в версии 7.7 регистры получили в «восьмерке» дальнейшее развитие. Теперь для регистров остатков и оборотов можно создавать различные формы, например форму списка. Появились наборы записей, с помощью которых можно работать над одной и более записью. Вначале вносятся необходимые изменения, а потом они в пакетном режиме записываются в регистр. Тот, кто знаком с ADO, без труда узнает в наборе записей подобие ADO RECORDSET. Ради оптимизации производительности документы привязываются к конкретным регистрам. Для более удобного извлечения информации описание структуры регистров тесно связано с таблицами. Программистам, работавшим с Microsoft SQL Server, это облегчит освоение продукта.

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

Меньше всего изменились регистры остатков и оборотов, отнесенные разработчиками в группу регистров накопления. Появились два новых объекта — регистры бухгалтерии и регистры расчета. В момент написания статьи они находились в режиме бета-тестирования, поэтому говорить о них пока рано.

Производительность

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

Делать окончательные выводы на основании подобных результатов, конечно, не следует. Как всякая новинка, «1С:Предприятие 8.0» сейчас проходит стадию активной доработки. А вот через полгода-год можно будет сказать что-то более определенное.  

Мы попросили ответить на несколько вопросов автора единственного на сегодняшний день работоспособного крэка «1С:Предприятие 8.0».

Насколько хорошо защищена восьмая версия, если сравнивать с седьмой.
— Восьмая версия «1С:Предприятия» достаточно профессионально спроектирована и защита в ней сделана на высоком уровне. Мне так и не удалось полностью взломать ее, в результате чего пришло много недовольных писем, что программа зависает и падает. Хочу сказать, что такие жалобы мне не нравятся, так как незаслуженно бросают тень на платформу и в очередной раз доказывают теорему БЖ-Соболя. Хочу заверить: платформа 1С v8.0 — одна из самых устойчивых и безглючных, а большинство ошибок возникает из-за некорректной работы патчера.

Если можно, вкратце принцип взлома.
— Мне не хотелось бы об этом говорить. Я не хочу, чтобы кто-нибудь продолжал это уголовно наказуемое дело. Неграмотный взлом, как показал опыт, может сказаться на репутации платформы, чего мне бы не хотелось допустить.

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

Насколько ваш крэк надежен? Можно ли его рекомендовать для реальной работы предприятия или он пригоден, скорее, для обучения и отладки конфигураций на дому.
— Вы шутите? О реальной работе не может быть и речи. Да, основная цель патча — помочь в ознакомлении с новой платформой тем, кто собирается ее купить, и для обучения программистов, которые собираются с ней работать. Как я уже говорил, защита взломана не до конца, и если использовать в взломанную платформу 1С v8.0, возможны сбои, которые могут привести к большим финансовым потерям.
Хочу также попросить, чтобы мне не писали писем с просьбой помочь во взломе сервера приложений 1C v8.0. Ни за деньги, ни просто так я не собираюсь этого делать. Также я не собираюсь писать патч для следующих версий платформы 1C, поскольку считаю, что для ознакомления достаточно и текущей платформы.


9 (назад) Нечто подобное, но менее комфортно можно было реализовать в 7.7, размещая на форме отчета список значений и затем подставляя его в запрос в качестве параметра условия.

© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.