Расширения конфигураций. Адаптация прикладных решений с сохранением поддержки в облаках и на земле. Разработка в системе «1С:Предприятие 8.3». 3-е стереотипное издание
Қосымшада ыңғайлырақҚосымшаны жүктеуге арналған QRRuStore · Samsung Galaxy Store
Huawei AppGallery · Xiaomi GetApps

автордың кітабын онлайн тегін оқу  Расширения конфигураций. Адаптация прикладных решений с сохранением поддержки в облаках и на земле. Разработка в системе «1С:Предприятие 8.3». 3-е стереотипное издание

Е. Ю. Хрусталева

Расширения конфигураций
Адаптация прикладных решений с сохранением поддержки в облаках и на земле
Разработка в системе 1С:Предприятие 8.3
3-е стереотипное издание

Е. Ю. Хрусталева

Расширения конфигураций
Адаптация прикладных решений с сохранением поддержки в облаках и на земле
Разработка в системе 1С:Предприятие 8.3
3-е стереотипное издание

Электронная книга в формате ePub; ISBN 978-5-9677-3205-8.

Версия издания от 25.05.2022.

Электронный аналог издания "Расширения конфигураций. Адаптация прикладных решений с сохранением поддержки в облаках и на земле. Разработка в системе 1С:Предприятие 8.3. 3-е стереотипное издание" (ISBN 978-5-9677-3171-6, М.: ООО "1С-Паблишинг", 2022; артикул печатной книги по прайс-листу фирмы "1С": 4601546146342; по вопросам приобретения печатных изданий издательства "1С-Паблишинг" обращайтесь к партнеру "1С", обслуживающему вашу организацию, или к другим партнерам фирмы "1С".)


Книга адресована специалистам по внедрению прикладных решений системы «1С:Предприятие 8», а также разработчикам, адаптирующим типовые прикладные решения к требованиям заказчика. Она рассказывает о новой технологии – расширениях конфигурации.
Расширения конфигурации позволяют дорабатывать функциональность прикладных решений, не внося изменений в сами прикладные решения.
В результате прикладное решение остается на полной поддержке поставщика, что значительно упрощает его дальнейшее сопровождение.
Также при работе в модели сервиса, например, в 1С:Фреш (1cfresh.com), расширения конфигурации позволяют дорабатывать функциональность прикладного решения только для пользователей одной организации. При этом другие организации, работающие в этом же сервисе с этим же прикладным решением, этих доработок не увидят.
Книга описывает возможности расширений конфигурации, реализованные в платформе версии 8.3.13, в том числе расширение прикладных данных.
В первой и второй главах рассматривается общая архитектура расширений, и на большом количестве простых примеров показываются возможности доработки тех или иных элементов прикладного решения. Например, добавление учета товаров по характеристикам или адаптация внешнего вида прикладного решения к корпоративному стилю.
В третьей главе книги показан пример разработки расширения для ведения управленческого учета на предприятии. Это учебное расширение, демонстрирующее общий подход к доработке прикладной функциональности.
В четвертой главе показан полный процесс разработки «настоящего» расширения для тарификации, которое можно использовать совместно с типовой конфигурацией «1C:Зарплата и кадры государственного учреждения».
Книга содержит большое количество рисунков и примеров кода на встроенном языке, снабженных подробными комментариями. Для создания демонстрационных примеров использована версия 8.3.13.1472 платформы «1С:Предприятие 8».

Данное 3-е издание является стереотипным, не отличается по содержанию от 2-го издания книги с тем же названием, выпущенного в 2018 году издательством «1С-Паблишинг» (ISBN 978-5-9677-2834-1, артикул «1С» 4601546137920).


Расширения, разрабатываемые в книге, опубликованы на портале 1С:ИТС. Вы можете скачать их по адресу http://its.1c.ru/download/book_demo/.

© ООО «1С-Паблишинг», 2022
© Оформление. ООО «1С-Паблишинг», 2022

Все права защищены.
Материалы предназначены для личного индивидуального использования приобретателем.
Запрещено тиражирование, распространение материалов, предоставление доступа по сети к материалам без письменного разрешения правообладателей.
Разрешено копирование фрагментов программного кода для использования в разрабатываемых прикладных решениях.


Фирма "1С"
123056, Москва, а/я 64, Селезневская ул., 21.
Тел.: (495) 737-92-57, факс: (495) 681-44-07.
1c@1c.ru, http://www.1c.ru/
Издательство ООО "1С-Паблишинг"
127473, Москва, ул. Достоевского, 21/1, строение 1.
Тел.: (495) 681-02-21, факс: (495) 681-44-07.
publishing@1c.ru, http://books.1c.ru/

Приложение к книге Расширения конфигураций. Адаптация прикладных решений с сохранением поддержки в облаках и на земле. Разработка в системе 1С:Предприятие 8.3. Издание 2

Приложение содержит демонстрационные конфигурации, которые можно установить на коммерческую или учебную версию 1С:Предприятия, и другие материалы.

Скачайте дополнительные материалы (498 Kб), раскройте архив.

Учебную версию платформы "1С:Предприятие 8.3" можно бесплатно скачать здесь.

Глава 1. Общее описание

Назначение

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

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


Рис. 1.1. Автоматическое обновление конфигурации на новую версию

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

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


Рис. 1.2. Обновление измененной конфигурации на новую версию

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

При этом все изменения выполняются в расширении, а не в самой конфигурации. Затем в режиме 1С:Предприятие расширение применяется к конфигурации, и оно автоматически объединяется с ней. В результате заказчик работает с типовым решением, содержащим все необходимые ему доработки. Этот процесс можно представить на следующей схеме (рис. 1.3).


Рис. 1.3. Объединение конфигурации с расширением

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

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

Во время запуска обновленного прикладного решения платформа снова автоматически объединит обновленную конфигурацию с расширением. И вся функциональность, созданная по желанию заказчика, продолжит работать. Этот процесс можно представить на следующей схеме (рис. 1.4).


Рис. 1.4. Объединение обновленной конфигурации с расширением

Типичные сценарии использования

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

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

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

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

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

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

Кроме того, преимущество расширений заключается в том, что доработки, внесенные с помощью расширения в одно прикладное решение, можно потом использовать еще раз в другом похожем прикладном решении. Для этого нужно всего лишь подключить к нему уже разработанное расширение. А раньше бы для этого пришлось в другом прикладном решении еще раз повторять те же изменения, что и в первом.

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

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

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

Устройство

Основой расширения являются объекты, заимствованные из конфигурации. Чтобы доработать какой-то объект конфигурации, его нужно сначала заимствовать (то есть специальным образом скопировать из конфигурации в расширение) и затем, уже в расширении, выполнить необходимые изменения.

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

Заимствование объектов из конфигурации выполняется с двумя целями.

Во-первых, чтобы расширение можно было применить к конфигурации. Заимствовать нужно те объекты, которые жизненно необходимы для работы расширения – когда они необходимы для визуального конструирования (форм, запросов и т. п.) или когда они используются во встроенном языке или языке запросов. Тогда, если при применении они не будут обнаружены в конфигурации, расширение не применится. При этом вы узнаете об ошибке сразу, при старте прикладного решения, а не во время исполнения. Такой подход является методологически правильным.

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

Есть возможность и более тонкого контроля, когда можно проконтролировать не просто наличие, например, справочника Номенклатура, но и то, что его код должен иметь тип Строка. В этом случае разработчик может установить у этого свойства в расширении флажок

(с подсказкой «Проверять значение при подключении расширения»). Такое свойство становится контролируемым (рис. 1.5).


Рис. 1.5. Флажок контролируемого свойства в расширении

Это значит, что для применения расширения к конфигурации необходимо, чтобы в конфигурации тип реквизита был таким же, как и в расширении. Иначе расширение не будет применено.

Если для работы расширения не важно, какое значение имеет свойство заимствованного объекта, то можно снять у этого свойства флажок

, и тогда значение свойства не будет контролироваться при применении расширения.

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

(с подсказкой «Модифицировать значение при подключении расширения»). Свойства с таким флажком являются модифицируемыми (рис. 1.6).


Рис. 1.6. Флажок модифицируемого свойства в расширении

Значение такого свойства в результате применения расширения к конфигурации будет получаться из расширения. Если флажок

у свойства снят, значение этого свойства будет получаться из конфигурации.

Заимствованный и доработанный в расширении объект становится расширяющим объектом. Свойство заимствованного объекта не может быть одновременно и контролируемым, и модифицируемым.

На момент написания книги (по версии платформы 8.3.13.1472) механизм расширений значительно продвинулся и сейчас предоставляет весьма широкие и вариативные возможности по расширению конфигураций. В расширении можно дорабатывать почти все объекты (в т. ч. справочники и документы), добавлять собственные объекты, в том числе прикладные объекты, содержащие данные. Но имеются некоторые ограничения и особенности.

В расширении конфигурации не поддерживается создание следующих собственных объектов:

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

Не поддерживается расширение следующих объектов:

  • Нельзя создавать подчиненные подсистемы.
  • Состав значений перечислений.
  • Не поддерживается добавление реквизитов и табличных частей для следующих объектов:
    • план видов характеристик;
    • план счетов;
    • план видов расчетов.
  • Не поддерживается изменение структуры регистров всех видов. Поддерживается только расширение состава регистраторов.

ПРИМЕЧАНИЕ

Состав расширяемых и собственных объектов может со временем изменяться. Подробнее см. документацию «1С:Предприятие 8.3.13. Глава 33.1.3. Расширение конфигурации. Общая информация. Особенности и ограничения».

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

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

Создание и отладка

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

Чтобы создать расширение конфигурации, нужно вызвать команду главного меню Конфигурация – Расширения конфигурации и в открывшемся списке расширений нажать кнопку Добавить. Затем необходимо указать имя расширения, его синоним, префикс и назначение расширения (рис. 1.7).


Рис. 1.7. Создание расширения

Префикс

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

Назначение

Назначение расширения используется для того, чтобы задать порядок применения расширений к конфигурации (в случае если в информационную базу прикладного решения загружено несколько расширений). Назначение расширения может принимать значения Исправление, Адаптация и Дополнение.

Расширение с назначением Исправление предназначено для исправления ошибок в конфигурации. Поэтому оно применяется к конфигурации первым. Затем применяется расширение с назначением Адаптация. Оно содержит доработки конфигурации при внедрении у конкретного заказчика. И последним применяется расширение с назначением Дополнение. Оно содержит различные дополнительные сервисы, предназначенные для конфигурации (например, набор дополнительных отчетов).

Предполагается, что расширения с одинаковым назначением не должны «пересекаться» по функционалу и «мешать друг другу».

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

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