Что такое катомизация?
Кастомизация – это изменение программного обеспечения согласно требованиям конкретного пользователя. Естественно, невозможно написать программу, которая удовлетворяла запросы всех без исключения пользователей. Поэтому кастомизация появилась практически одновременно с программным обеспечением. Заложить в программу возможность изменения гораздо проще, чем написать новую. Особенно актуально это для разработчиков бизнес-приложений, потому что в каждой отрасли и даже в разных компаниях бизнес-процессы могут быть разными.
Стратегии кастомизации
Изменение исходного кода
Исходный код можно переписать в том случае, если приложение поставлялось в исходных кодах. Но переписывание исходного кода может повлечь за собой серьезные проблемы при переходе на новую версию. Так как при переходе происходит слияние измененных исходных кодов в версии клиента с исходными кодами новой версии. Это может стать непростой задачей для разработчика, особенно, если исходный код сильно кастомизировали.
Плагины
В исходном приложении плагин может пользоваться стандартным набором интерфейсов и возможностью регистрации в приложении. После установки новой версия плагины продолжают работать при условии, что интерфейс не был изменен. Стоит обратить внимание, что плагины будут вести себя в новой версии по-другому, если разработчики изменили поведение интерфейса. Плагины используются в офисных и бизнес-софтах, различных редакторах и средах разработки.
Подписки
Подписка оформляется на события приложения и выполнения пользовательского кода. Важно, чтобы во время событий код выполнялся на общеизвестном или проприетарном языке. Под событиями понимаются такие действия как открытие окна, обработка заказа в бизнес-системе или загрузка изображения в графическом редакторе.
Разновидностью подписки является встраивание в программу возможности выполнения пользовательских скриптов на VBA (Visual Basic for Application).
Кастомизация в продуктах 1С
Из всех предложенных стратегий кастомизации для продуктов 1С подходит изменение исходного кода. Причина такого выбора очевидна: прикладные решения поставляются именно в исходных кодах.
Как проходит изменение исходного кода прикладных решений 1С?
Приложения 1С регулярно обновляются и «обзаводятся» новыми функциями, об этом следует помнить клиенту, решившему изменить исходный код. Следует правильно провести слияние катомизированной и новой версии приложения, чтобы не были потеряны изменения, сделанные по запросу клиента.
Для безболезненного проведения процедуры слияния в компании «1С» был разработан механизм поставки и поддержки. Для того чтобы понятнее было, как работает механизм, расскажем о том, как устроены продукты 1С.
Исходные коды и метаданные конфигурации 1С (прикладного решения) находятся в базе данных, в ней же хранятся все данные приложения. Эта база называется инфобазой (информационной базой).
Какие объекты можно менять, а какие нет, решает поставщик прикладных приложений.
Настройка прикладного приложения на стороне поставщика
Механизм поставки и поддержки позволяет клиенту определять, как будет осуществляться поддержка внедренного решения. Если клиент сам способен модифицировать какой-либо объект, он вправе отказаться от поддержки со стороны поставщика. Или, во избежание случайного изменения конфигурации, может запретить вносить в нее какие-либо правки.
Поддержка на стороне клиента, ее настройка
Если клиент вносит изменения в конфигурации, в инфобазе появляется две конфигурации. Одна из них – конфигурация поставщика, вторая – конфигурация с внесенными клиентом изменениями.
Новая версия поставляется поставщиком в виде приложения, также измененные объекты могут быть собраны в один пакет. Что происходит в этом случае? У клиента уже есть три конфигурации, на их основе осуществляется трехстороннее слияние конфигураций: устаревшей конфигурации, измененной конфигурации клиента и новой версии от поставщика.
В некоторых случаях измененные поставщиком объекты обновляются автоматически. Это либо объекты, которые не подвергались изменениям со стороны продавца, либо простые изменения на стороне клиента.
Иногда требуется ручное вмешательство. Необходимо оно, если объект подвергался изменениям и на стороне клиента, и в новой версии поставщика. И, несмотря на наличие качественного механизма сравнения и объединения, задача эта может оказаться достаточно сложной.
Механизм внешних отчетов и обработки
Если стратегия изменения исходного кода кажется вам небезопасной, можно применить механизм внешних отчетов обработок. Внешние отчеты и обработки хранятся не в прикладном приложении, а в отдельных файлах. Поэтому, в отличие от исходных кодов, отчеты и обработки никак не затрагиваются при переходе на новую версию прикладного решения. Есть только одно но: если обработки или отчет обращаются к удаленному объекту, без переделки обойтись будет невозможно.
Внешние отчеты и обработки похожи на плагины, но способны выполнять не все сценарии кастомизации. Поэтому при добавлении какого-либо специфического кода все равно нужно вносить изменения в исходный код документа.
Кастомизация в облаках
Облачные технологии позволили вывести кастомизацию на новый уровень. В облаке пользователи, принадлежащие к разным организациям, работают с одной инфобазой, а механизм разделения данных позволяет им видеть лишь те данные, которые принадлежат их организации. Поэтому в облаке не требуется изменение исходного кода, ведь организации пользуются исключительно своими кастомизациями. Стратегии, которые используются для кастомизации в облаке – механизм внешних отчетов и обработок.
Расширение прикладного решения
Итак, мы познакомили вас с основными стратегиями и убедились, что среди них нет того, который бы полностью удовлетворял все требования к кастомизации. Перечислим их:
- возможность быстрого обновления кастомизированного решения при переходе на новую версию;
- возможность включения кастомизации на некоторое время или в определенных обстоятельствах;
- снижение вероятности того, что после установки новой версии кастомизированные элементы перестанут работать.
- возможность при необходимости отключить кастомизацию с целью сохранить работоспособность приложения.
Механизм, который соответствовал бы озвученным требованиям, успешно применялся бы как в облачных версиях, так и при установке новой версии текущей конфигурации.
В компании «1С» был создан такой механизм, ему дали название – расширения. Такой механизм представляет собой своеобразное совмещение двух стратегий кастомизации – механизма подписок и плагины.
Расширение предоставляет возможность хранить все изменения, внесенные в конфигурацию, и собственно конфигурацию раздельно. Расширения внешне похожи на конфигурацию: объекты расположены в виде дерева. Работать с расширениями несложно, так как приемы работы с ними такие же, как и с обычной конфигурацией.
Если возникла необходимость использовать в расширении один из объектов основной конфигурации, следует переместить объект в расширение посредством команды «Добавить в расширение». Объект, добавленный в расширение, обладает лишь теми свойствами, которые у него есть в конфигурации. Также из основной конфигурации можно добавить в расширение форму и изменить ее. Реквизиты к объектам в расширении добавить нельзя, но в скором времени компания «1С» обещала исправить эту ситуацию.
Расширение с документом СчетактураВыданный и основная конфигурация
В расширении есть возможность обработать события объектов кастомизированной конфигурации. Можно указывать, каким образом может быть вызван код в расширении, а также вызвать код перед записью документа.
При этом, если в новой версии осуществление записи будет иным, код в расширении будет функционировать. Типовая конфигурация своеобразно складывается с расширением, создавая измененную, кастомизированную версию. Ее и используют пользователи.
Выполнение расширения
Разрабатывая расширение, стоит помнить: платформа, если вы добавили несколько расширений, не всегда может обеспечить одинаковый порядок их выполнения.
То есть, если вы добавили несколько расширений, каждый из которых содержит обработку одного и того же документа с директивой «&После», можете быть уверены: все действия будут выполнены, но неизвестно, каков порядок их выполнения.
Если в нескольких расширениях присутствует одно и то же событие с директивой «&Вместо», выполняться будет лишь один обработчик, какой именно – неизвестно. Поэтому крайне важно проследить, чтобы расширение к конфигурации с обработчиком «&Вместо» для одного объекта было только одно.
Кастомизация форм
В расширение можно добавить форму, взятую из конфигурации. В расширении в визуальном редакторе она будет выглядеть так же, как и в конфигурации. Но код для формы есть лишь в основной конфигурации.
К форме можно добавить одну или несколько новых кнопок. Если форме добавить кнопки разных расширений, всеми ими можно будет пользоваться при работе с итоговой формой. Убирать же кнопки с формы не стоит, так как есть риск повреждения кода в оригинальной конфигурации. Если неиспользуемые элементы мешают, можно сделать их невидимыми (свойство «Видимость»).
Стоит отметить, что большинство приложений на «1С:Предприятие» описаны в виде декларативных моделей. При этом для каждой задачи выбраны разные виды. В зависимости от вида модели в расширениях используется определенный способ кастомизации, который делает любое изменение более комфортным.
Расширения и их преимущества
Расширение и механизм поставки и поддержки кардинально отличаются. В механизме разработчик сначала изменяет конфигурацию поставщика, а при установке новой версии синхронизирует изменения. Расширение же разрабатывается специалистом изначально, поэтому система хранит его как дополнение и обновление проходит максимально безболезненно для системы.
Установка новой версии конфигурации
Так как конфигурация остается на поддержке поставщика, обновления выполняются автоматически. Платформа объединит обновленную конфигурацию с расширением после запуска прикладного приложения. В некоторых случаях могут произойти ошибки, например в том случае, когда объекты или их реквизиты из расширения были переименованы в новой версии.
Неоспоримое достоинство расширений – это то, что кастомизации находятся отдельно от конфигурации, поэтому нет нужды сравнивать две версии, чтобы понять, какие были внесены изменения. И уже неоднократно повторялось, что расширение заимствует объект из основной конфигурации, поэтому в расширении можно найти ссылку на этот объект.
Для того чтобы узнать, какие объекты из конфигурации были изменены, а какие заимствованы, достаточно нажать кнопку «Изменённые и добавленные в расширении». В дереве останутся лишь заимствованные, модифицированные в данном расширении и новые объекты, непосредственно созданные в расширении.
Оповещение об ошибках
Представим ситуацию. Из конфигурации в расширение был заимствован объект Контракты, после обновления этот объект стал называться Договора. Соответственно, отчет, в котором мы использовали этот объект, не будет работать. При использовании стратегии внешних отчетов ошибка обнаружиться во время выполнения отчета. Если же используется расширение, с помощью design-time можно проверить правильность функционирования расширения. Если будет обнаружена ошибка, исправить ее нетрудно до того, как пользователи начнут работать с расширением.
Этот вариант очень удобен, если используется инфобаза со множеством расширений, а обновления проводятся централизованно. Примером такой ситуации может быть облачное внедрение, где использующие одну конфигурацию организации работают с разными расширениями. После проверки функционирования расширения обновленной конфигурации администратор уведомляет об обнаруженных ошибках владельцев расширений. Соответственно, к работе пользователи приступят только после того, как расширение будет приведено в рабочее состояние.
Планы на будущее
Расширение – приоритетное направление развития кастомизации в платформе «1С». Несмотря на то, что расширения пока не позволяют кастомизировать все объекты, специалисты компании работают над развитием возможностей и с каждой новой версией «1С: Предприятие» их становится все больше.