Семь раз отмерив
 
30.09.2003
Сергей Скрынник


 
<< стр. 1
стр. 2
стр. 3 >>

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

Еще одно интересное новшество касается языка программирования и среды разработки. По мнению системных программистов и прочих слуг Ваала, «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
стр. 2
стр. 3 >>

<<Когда цифровые аудио-, видео- и фотоустройства превзойдут по качеству аналоговые?
Все материалы номера
Голубиная почта >>