Никита Зайцев
25 сентября 2009 г. фирма «1С» объявила о выпуске версии 8.2 технологической платформы «1С: Предприятие 8». В пресс-релизе подчеркивается, что версия 8.2 – наиболее существенное развитие технологической платформы «1С: Предприятие 8» с момента ее выпуска. Спектр новых функциональных возможностей и архитектурных изменений настолько широк, что можно говорить не просто о новой версии, а о новом поколении технологической платформы. «1С: Предприятие 8.2» предоставляет разработчикам, специалистам по внедрению и конечным пользователям принципиально новые, по сравнению со всеми предыдущими версиями, модели пользовательского интерфейса и клиент-серверного взаимодействия. Эти новшества должны не только коренным образом повлиять на процессы разработки и внедрения прикладных решений, но и существенно расширить область прикладных задач, решаемых при помощи «1С: Предприятия 8».
В статье дан краткий обзор тех новых возможностей «1С: Предприятия 8», которые не претерпели существенных изменений по сравнению с бета-версией, рассмотрены новшества, реализованные в финальной версии, а также изменения в подходе к разработке типовых и отраслевых решений на новой версии технологической платформы. Подробный обзор функциональных возможностей и архитектурных моделей, реализованных в бета-версии «1С: Предприятия 8.2», можно найти в статьях «Управляемое приложение: интерфейсная модель» и «Управляемое приложение: новые возможности», опубликованных в журналах PC Magazine/RE 9/2008 и 10/2008.
В предыдущих версиях «1С: Предприятия 8» для работы пользователей с любыми информационными базами использовался единственный вид клиентского приложения, который назывался «клиент». Это клиентское приложение могло функционировать только под управлением операционной системы семейства MS Windows, требовало существенных аппаратных ресурсов и не имело подключения к информационной базе через Интернет.
«1С: Предприятие 8.2» предоставляет три варианта работы пользователей с информационной базой.
• Толстый клиент – не только унаследовал всю функциональность клиентского приложения предыдущих версий «1С: Предприятия», но и поддерживает новый режим управляемого приложения (интерфейсные новшества «1С: Предприятия 8.2» будут рассмотрены ниже).
• Тонкий клиент – нетребователен к аппаратным ресурсам, позволяет работать с информационной базой через Интернет по протоколу HTTP, в том числе по низкоскоростным каналам связи.
• Web-клиент – тоже нетребователен к ресурсам и позволяет работать через Интернет. Но в отличие от тонкого клиента не требует установки ПО на компьютер пользователя, работа осуществляется посредством обычного браузера.
Благодаря наличию тонкого и Web-клиента «1С: Предприятие 8.2» позволяет существенно упростить организацию дистанционной работы пользователей с информационными базами.
В версии 8.2 реализована поддержка новой для «1С: Предприятия 8» системы управления базами данных – Oracle Database. Таким образом, при внедрении прикладного решения технологическая платформа предоставляет выбор из пяти вариантов хранения данных:
• файловая база данных;
• база данных Microsoft SQL Server;
• база данных PostgreSQL;
• база данных IBM DB2;
• база данных Oracle Database.
На выбор СУБД при внедрении могут повлиять различные факторы: предполагаемый объем данных и число пользователей, наличие у заказчика лицензий на ту или иную СУБД и специалистов по ее администрированию и поддержке. Весомым фактором могут стать даже личные предпочтения ключевых специалистов заказчика, у каждой из современных промышленных СУБД есть убежденные сторонники и не менее убежденные противники. Сравнительная оценка возможностей различных СУБД не входит в компетенцию специалиста по внедрению «1С: Предприятия 8», его дело – предоставить заказчику возможность выбрать наиболее привлекательный с точки зрения заказчика вариант.
С появлением технологии Web-клиента можно говорить о полноценной поддержке Linux «1С: Предприятием 8» – все основные компоненты могут работать под управлением этой ОС. Более того, в конкретной информационной системе различные компоненты могут работать под управлением разных операционных систем. На выбор ОС для компонента будут влиять почти те же факторы, что и на выбор СУБД: лицензионная политика, принятая на предприятии, наличие специалистов по администрированию и поддержке и т. д. Важно, что и в этом случае технологическая платформа не загоняет предприятие в узкие рамки, а предоставляет возможность выбора.
В предыдущих версиях «1С: Предприятия 8» кластер серверов мог располагаться на нескольких физических компьютерах, но один из этих компьютеров должен был играть роль центрального сервера, координирующего работу всего кластера. Такая архитектура накладывала ряд довольно существенных ограничений на работу кластера серверов «1С: Предприятия 8».
• Выход из строя центрального сервера приводил к разрыву всех клиентских соединений и полностью парализовывал любую работу с информационными базами, обслуживаемыми кластером.
• Плановое техническое обслуживание, например установка обновлений ОС с последующей перезагрузкой, требовало остановки работы пользователей со всеми информационными базами кластера.
• Все общие данные и все сервисные функции кластера (такие, как управление транзакционными блокировками, журналирование событий, полнотекстовый поиск, нумерация объектов, и т. п.) располагались в единственном процессе, могли создавать существенную нагрузку на центральный сервер, но не могли масштабироваться.
Модель клиент-серверного взаимодействия, реализованная в предыдущих версиях «1С: Предприятия 8», также обладала рядом особенностей работы клиентских приложений с кластером.
• Обрыв связи между клиентским приложением и рабочим процессом кластера приводил к аварийному завершению клиентского приложения.
• Отказ рабочего процесса кластера приводил к аварийному завершению всех клиентских приложений, которые обслуживались рабочим процессом.
• Не было возможности перераспределять клиентские соединения между рабочими процессами кластера – обслуживающий рабочий процесс назначался клиентскому соединению «пожизненно». Соответственно нельзя было и передать часть нагрузки с одного рабочего сервера на другой.
«1С: Предприятие 8.2» содержит ряд кардинальных улучшений архитектуры кластера серверов, призванных улучшить масштабируемость и отказоустойчивость информационных систем, построенных на этой технологической платформе.
Во-первых, «горячее» резервирование кластера серверов. У администратора информационной системы появилась возможность объединить несколько кластеров в группу резервирования. Обслуживанием пользователей занимается первый кластер из группы, а остальные поддерживают у себя в актуальном состоянии все важные данные первого кластера. В случае выхода из строя первого кластера, активным становится следующий кластер из группы резервирования. Для рабочих процессов, функционирующих внутри кластера, реализована другая схема – рабочие процессы подразделяются на активные и резервные. В случае плановой или аварийной остановки активного процесса кластер запускает один из резервных процессов и переводит на него имеющуюся нагрузку.
Практически это означает, что при грамотно спроектированной структуре кластера завершение любого из серверных процессов и даже отключение любого из физических компьютеров кластера не приведет к сбою в работе пользователей. Это особенно важно для тех информационных систем, которые работают в режиме «24×7» и остановка которых даже на короткое время может привести к серьезным финансовым потерям предприятия.
Во-вторых, масштабирование управляющих процессов (менеджеров) кластера. Общие данные и сервисные функции кластера теперь могут быть распределены между несколькими процессами-менеджерами, функционирующими на разных физических компьютерах. Эта позволяет существенно разгрузить главный менеджер кластера и переложить часть «сервисной» нагрузки на другие процессы.
В-третьих, новая модель клиент-серверного взаимодействия. Теперь платформа обладает устойчивостью к обрывам каналов связи между клиентом и сервером: в случае, если клиентское приложение не было завершено штатным образом, но перестало подавать признаки жизни, пользовательский сеанс продолжает поддерживаться на стороне сервера в течение довольно длительного времени (20 мин). Если за это время связь будет восстановлена, пользователь сможет продолжить работу с того самого места, где она была прервана.
Следует отметить, что устойчивостью к обрыву связи в любом случае обладают тонкий и Web-клиент, а в случае толстого клиента «воскрешение» пользовательского сеанса зависит главным образом от того, какая именно операция выполнялась клиентским приложением в момент обрыва связи. Некоторые операции (например, работа с транзакциями), к сожалению, требуют непрерывной связи между клиентом и сервером и не могут быть временно прерваны.
В-четвертых, динамическая балансировка нагрузки между рабочими процессами кластера. Кластер постоянно отслеживает загруженность своих рабочих процессов и вычисляет интегральную доступную производительность каждого процесса. Если доступная производительность разных процессов существенно различается, происходит переключение части пользовательских сеансов с более нагруженных процессов на менее нагруженные.
В предыдущих версиях «1С: Предприятия 8» анализ загруженности рабочих процессов тоже выполнялся, но только в момент возникновения нового клиентского соединения – кластер принимал решение, какому из рабочих процессов передать это соединение для обслуживания. Но на практике разные пользователи создают непропорциональную нагрузку на кластер – например, одни просто листают список документов, а другие формируют «тяжелые» отчеты. И при неблагоприятном стечении обстоятельств (несколько «тяжелых» пользователей попали в один рабочий процесс) возникали проблемы производительности информационной системы. Конечный пользователь вовсе не обязан знать о существовании рабочих процессов и тонкостях распределения нагрузки между ними, но на ситуацию «вдруг все стало тормозить» он обязательно отреагирует, причем реакция будет строго негативной.
Механизм динамической балансировки нагрузки на рабочие процессы, появившийся в версии «1С: Предприятие 8.2», позволяет насколько это возможно равномерно распределять активность пользователей по рабочим процессам кластера и использовать аппаратные ресурсы наиболее эффективно.
В предыдущих версиях «1С: Предприятия 8» пользовательский интерфейс целиком и полностью создавался разработчиком прикладного решения. Платформа практически никогда не принимала самостоятельных решений о выводе того или иного элемента на какую-либо форму, а изменения в структуре метаданных конфигурации никоим образом не влияли на интерфейсную часть. Разработчик должен был в явной форме создать командный интерфейс (главное меню и панели инструментов) и в буквальном смысле «нарисовать» все необходимые формы. При этом разработчик получал полную свободу действий – можно было поместить любой элемент в любое место любой формы, придать любой размер, раскрасить в любые цвета и т. д. К сожалению, у полной свободы действий есть и своя оборотная сторона – при работе через Интернет или по медленным каналам связи передача информации о такой форме между клиентом и сервером стала бы очень затратным мероприятием. Более эффективный способ – передача не собственно формы, а правил ее формирования.
В «1С: Предприятии 8.2» реализована принципиально новая интерфейсная модель, называемая управляемым приложением. Управляемое приложение базируется на следующих концепциях.
• Оконная система. Каждое окно «1С: Предприятия 8» в режиме управляемого приложения – независимо и представлено отдельном элементе на панели задач ОС (или же отдельное окно браузера при работе с Web-клиентом). Основное окно предназначено для навигации по функциям конфигурации и данным информационной базы, а вспомогательные окна используются для доступа к данным (например, через формирование отчетов) и модификации объектов информационной базы.
• Декларативное описание интерфейса. Управляемое приложение позволяет разработчику перейти от конструирования интерфейса к декларированию, т. е. к явному или неявному указанию платформе, какой элемент и в какой ситуации выводить или не выводить в пользовательский интерфейс. Наиболее простой пример такого декларирования – настройка прав доступа к объектам конфигурации. Платформа автоматически исключит из интерфейса функции, выполнять которые текущий пользователь не имеет права. Могут применяться и более сложные способы – например, механизм функциональных опций, при помощи которого разработчик может описать зависимость между элементами интерфейса и данными информационной базы.
• Управляемый командный интерфейс. В режиме управляемого приложения «1С: Предприятие 8» формирует командный интерфейс прикладного решения на основании правил, описанных разработчиком. Структура разделов командного интерфейса и состав команд каждого раздела формируются платформой «на лету» (автоматически). При формировании командного интерфейса учитывается иерархия подсистем прикладного решения, права доступа пользователя, функциональные опции информационной базы, а также настройки порядка следования и видимости элементов, установленные разработчиком конфигурации по умолчанию и конкретным пользователем лично для себя.
• Управляемые формы. Как и все остальные элементы пользовательского интерфейса, управляемые формы объектов конфигурации создаются путем декларативного описания. Разработчик не «рисует» форму, а задает состав элементов формы и правила их отображения. Разработчик может также предоставить пользователю возможность изменять форму по своему предпочтению, причем как для всей формы вообще, так и для отдельных элементов и групп элементов. Функциональность управляемой формы распределена между клиентом и сервером «1С: Предприятия», причем главную роль играет сервер. Подготовка формы, бизнес-логика формы, модификация данных информационной базы – все это выполняется на стороне сервера, а на стороне клиента производятся только отрисовка формы и некоторые самые простые операции (арифметические вычисления, вывод сообщений и вопросов и т. п.).
Дизайн визуального интерфейса финальной версии «1С: Предприятия 8.2» по сравнению с бета-версией был почти полностью переработан, изменились цветовые палитры, текстуры, обводки, внешний вид элементов и кнопок, были перерисованы практически все иконки и картинки.
Следует отметить очень важный момент: в отличие от предыдущих версий, разработчики прикладных решений больше не могут произвольно изменять элементы визуального стиля в своих конфигурациях. В управляемом режиме все прикладные решения, разработанные на платформе «1С: Предприятие 8», будут иметь схожий внешний вид и полностью идентичный визуальный дизайн приложения. Можно привести ряд аргументов как «за», так и «против» такого решения разработчиков платформы, но это стало бы пустой тратой бумаги. Решение было принято осознанно, и оно – вот такое.
Очевидно, что отчеты, а точнее представленная в отчетах информация, – это «лицо» информационной системы, решающей задачи учета и управления бизнесом. Фактически это конечный продукт, выдаваемый информационной системой потребителю. В семействе программ «1С: Предприятие 8» механизмам формирования отчетов традиционно уделяется самое пристальное внимание.
Какие требования предъявляются к отчетам пользователями? Основных требований три: высокая скорость формирования, гибкость и универсальность настроек, максимальная простота в использовании. Со скоростью все ясно и понятно, это чисто техническая задача. А вот найти разумный компромисс между универсальностью и внешней простотой – уже из разряда серьезных концептуальных проблем. Эта проблема последовательно решалась на всех этапах развития технологической платформы, и некоторые новшества предыдущих версий «1С: Предприятия 8», призванные сделать механизм отчетности более функциональным и гибким, вызывали у пользователей реакцию, близкую к легкой панике. «Пожалуйста, спрячьте это окно настроек от нас подальше, мы не хотим знать о его существовании» – с такой просьбой после перевода типовых решений на механизм «универсального отчета» сталкивался едва ли не каждый специалист по внедрению.
В «1С: Предприятии 8.2» сделан серьезный шаг к увязыванию максимальных гибкости и внешней простоты в рамках одного механизма. Теперь сущность «настройка отчета» является иерархической и состоит из вариантов отчета, настроек варианта отчета и пользовательских настроек отчета. Таким образом, управление настройками отчета производится на трех уровнях:
• разработчик прикладного решения создает схему компоновки данных и варианты отчета. Он также определяет, какие из настроек отчета будут доступны пользователю при работе с отчетом;
• специалист по внедрению выполняет модификацию вариантов отчета или создает новые варианты под требования конкретного заказчика, причем эти операции не нуждаются в изменении конфигурации информационной базы и могут производиться в пользовательском режиме;
• пользователь выбирает один из существующих вариантов отчета и просто нажимает на кнопку «сформировать отчет». Если пользователю требуется что-то изменить в отчете, он оперирует теми настройками (как правило, несложными), доступ к которым ему предоставили разработчик конфигурации и специалист по внедрению.
При таком подходе баланс «гибкости» и «простоты» становится управляемым, один и тот же отчет может быть представлен для разных пользователей в различных вариантах и с разным «уровнем сложности». Причем управлять этим можно «на лету», не внося никаких изменений в собственно конфигурацию.
«1С: Предприятие 8.2» содержит также ряд новшеств, призванных серьезно увеличить производительность системы при формировании отчетности. Во-первых, при работе в режиме управляемого приложения отчеты формируются исключительно на стороне сервера, клиентскому приложению передаются только готовые результаты. Во-вторых, появился абсолютно новый (даже по отношению к бета-версии) механизм агрегатов.
Отчеты, формируемые учетной или управленческой системой, можно условно разделить на три категории.
• Регламентированная отчетность. Состав отчета, периодичность формирования, а часто и внешний вид диктуются извне. Например – бухгалтерский баланс.
• Операционная отчетность. Состав отчета и периодичность его формирования диктуются процессами предприятия. Как правило, такие отчеты формируются довольно часто и служат основой для принятия рутинных управленческих решений. В качестве примера можно привести отчет по остаткам товаров на складе, отчет по текущей дебиторской задолженности или платежный календарь предприятия.
• Аналитическая отчетность. Состав отчета и периодичность его формирования зависят только от сотрудника, занятого вдумчивым анализом деятельности предприятия. В поисках ответов на вопросы «почему упали продажи?» или «как повысить отдачу на инвестиции?» аналитик может многократно «прокручивать» одни и те же исходные данные в разных разрезах и группировках.
Механизм агрегатов разработан в первую очередь для сокращения времени формирования аналитической отчетности в информационных базах большого объема (сотни тысяч и миллионы записей в оборотных регистрах накопления). Физически агрегат представляет собой дополнительное хранилище, в котором содержатся те же записи оборотного регистра накопления, но уже агрегированные в таких разрезах, которые требуются для быстрого формирования отчетов.
Агрегат может быть создан одним из двух способов.
• Разработчиком прикладного решения. Разработчик, исходя из специфики решения, может представить, какие аналитические отчеты и в каких разрезах будут наиболее востребованы пользователями, и определить необходимые агрегаты в конфигурации.
• Специалистом по внедрению. В платформе есть функция, которая позволяет проанализировать таблицу конкретного регистра, статистику обращений к этому регистру и на основании полученных данных предложить такие агрегаты, которые с точки зрения платформы будут эффективными. Технически рекомендации оформляются в виде XML-файла. От специалиста в этом случае требуется просто получить файл рекомендаций, а затем загрузить его в режиме Конфигуратора.
Очевидно, что максимальную пользу механизм агрегатов должен принести на крупных внедрениях, которые характеризуются как большими объемами данных, так и потребностью в разнообразных аналитических отчетах.
Практически все типовые и отраслевые, а также многие специализированные решения, разрабатываемые на платформе «1С: Предприятие 8», содержат некоторую общую стандартную функциональность. К «стандартным» можно отнести, например, следующие функции:
• справочники пользователей и физических лиц, управление правами пользователей, хранение контактной и адресной информации;
• справочник валют, хранение курсов, получение курсов валют из Интернета;
• работа с внешними файлами, хранение внешних файлов в информационной базе;
• настройка и использование полнотекстового поиска;
• первоначальное заполнение информационной базы и модификация данных при обновлении конфигурации;
• управление блокировкой доступа к информационной базе, принудительное завершение пользовательских сеансов;
• вывод документов на печать и их отправка по электронной почте;
• создание и хранение дополнительных свойств объектов информационной базы, в первую очередь – документов и элементов справочников;
• хранение пользовательских настроек информационной базы, в первую очередь вариантов отчетов и настроек отчетов;
• различные универсальные сервисные и вспомогательные функции, используемые при разработке прикладной функциональности.
Перечень далеко не полный, но перегружать статью сугубо технически деталями было бы не очень хорошей идеей. Важно то, что эти функции были реализованы почти в каждом решении, причем реализация одной и той же функции в разных решениях, даже типовых, могла существенно различаться. Как следствие – каждый из разработчиков затрачивал существенное количество ресурсов на реализацию одного и то же функционала, а о стандартизации конфигураций не могло быть и речи.
Особенно ярко проблема неунифицированных стандартных функций проявлялась в тех случаях, когда информационная система создавалась путем интеграции нескольких прикладных решений от разных поставщиков. Имеется две конфигурации, в каждой есть справочник пользователей, предусмотрены обработка для управления пользователями, механизм хранения пользовательских настроек, и даже объекты называются одинаково, но устроены они немного по-разному. Процесс объединения и обновления таких конфигураций становился нетривиальной задачей и принес немало головной боли специалистам по внедрению.
Выпуск новой версии технологической платформы стал очень удачным моментом для того, чтобы решить проблему стандартизации таких функций – для работы в режиме управляемого приложения все эти функции в любом случае необходимо было реализовать заново. В качестве решения фирма «1С» предложила специальную конфигурацию «1С: Библиотека стандартных подсистем 8.2» – фактически это готовый «каркас прикладной конфигурации». Библиотека содержит ряд подсистем (на момент написания статьи – 24 подсистемы), в рамках которых реализованы наиболее важные из стандартных функций.
Фирма «1С» собирается использовать библиотеку стандартных подсистем для разработки всех своих типовых решений и настоятельно рекомендует использование этой библиотеки как своим партнерам, так и независимым разработчикам. Выгода, которую получает разработчик прикладного решения, очевидна: во-первых, не нужно тратить время на то, что уже сделано другими, а во-вторых, что гораздо важнее, при внедрениях предпочтение будет отдаваться совместимым и унифицированным конфигурациям.
Для версии 8.2, как и ранее для версии 8.1, поддерживается совместимость с прикладными решениями, разработанными для более ранних версий технологической платформы. Но, поскольку новая версия содержит ряд принципиально новых функций и механизмов, перевод информационных баз с предыдущих версий на «1С: Предприятие 8.2» осуществляется в несколько этапов, на каждом из которых задействуется очередной пласт новых возможностей. Методика адаптации прикладных решений для работы с «1С: Предприятием 8.2» выходит за рамки статьи, поэтому отметим наиболее важный момент: для того, чтобы задействовать новые возможности в полном объеме, потребуется выполнить определенные доработки прикладного решения.
Подведем некоторые итоги. При всем многообразии новых возможностей «1С: Предприятия 8.2» они все нацелены на решение нескольких, вполне определенных, стратегических задач. А именно:
• существенно повысить производительность, масштабируемость и стабильность многопользовательских информационных систем, построенных на базе платформы «1С: Предприятии 8»;
• сделать работу пользователей в таких информационных системах более удобной и продуктивной;
• увеличить производительность труда разработчиков прикладных решений и специалистов по внедрению;
• и (последнее по порядку, но не последнее по важности) получить возможность решать при помощи технологической платформы такие задачи, о которых раньше в контексте «1С: Предприятия» никто даже и не задумывался.