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

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

Сценарии использования
Расширения незаменимы тогда, когда прикладное решение работает в режиме разделения данных. Например, в модели сервиса. Один из абонентов хочет иметь пару дополнительных отчётов. В то время как остальные абоненты хотят работать с неизмененной типовой конфигурацией.
Тогда именно для этого абонента можно разработать расширение, в котором и реализовать все его пожелания. Абонент подключит себе это расширение и будет работать с изменённой конфигурацией. В то время как для остальных абонентов никаких изменений не произойдет. Потому что все расширения подключаются и запускаются в разрезе текущих значений разделителей. При этом существует возможность применить расширение и для всех областей разделённой информационной базы.
Другая ситуация — это доработки типовой конфигурации под конкретного заказчика у него на внедрении. Или же доработки типовой конфигурации, которые выполняют для себя IT специалисты заказчика собственными силами. Если все эти доработки выполнить в расширении, то типовая конфигурация останется на полной поддержке, что значительно упростит её дальнейшее сопровождение.
Информация о расширении
В расширениях реализованы свойства для хранения информации о самом расширении и его поставщике: «Краткая информация», «Подробная информация», «Авторские права», «Адрес информации о поставщике», «Адрес информации о конфигурации». Значения этих свойств отображаются в диалоге «О программе».
Устройство
Расширение очень похоже на обычную конфигурацию. Оно также представляется в виде дерева объектов. Для работы с расширением используются те же приёмы работы, что и с обычной конфигурацией.

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

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

Этот файл можно передать заказчику. Заказчик самостоятельно загрузит его в свою информационную базу в режиме 1С:Предприятие с помощью стандартной функции Управление расширениями конфигурации.

Проверка возможности применения
- с помощью интерактивных команд в конфигураторе;
- при пакетном запуске конфигуратора;
- из встроенного языка;
- в стандартной обработке Управление расширениями конфигурации перед добавлением или перед загрузкой расширения, автоматически или с помощью интерактивных команд.
Порядок применения расширений
Важной характеристикой расширения является его назначение. Оно выбирается из нескольких фиксированных значений, предусмотренных в платформе. Назначение должно соответствовать той функциональности, которая реализована в расширении, потому что порядок применения расширений к информационной базе определяется именно их назначением. В первую очередь применяются расширения с назначением Исправление, затем Адаптация, после этого Дополнение. Такой подход позволяет избежать конфликтов между функциональностью расширений с разным назначением.
Деактивация расширений
Деактивированные расширения не применяются к конфигурации, при этом оставаясь в информационной базе. Это позволяет посмотреть, как конфигурация работает без расширения. Такая возможность особенно востребована для расширений, дорабатывающих прикладные объекты конфигурации, так как удаление таких расширений влечёт за собой потерю расширенных данных.
1С расширение конфигурации. Адаптация.
Механизм расширения конфигурации 1C
Приветствую уважаемый читатель, в данной статье предлагаю ознакомиться с Механизмом расширения конфигурации 1С 8.3, в частности мы познакомимся с его работой в режиме Адаптация, а также рассмотрим пример программного изменения Формы объекта при помощи расширения. Ну, а сейчас немного теории…
Как указано в описании: «Механизм расширения конфигурации – это специальный механизм, предназначенный для доработки расширяемой конфигурации без изменения этой конфигурации (в том числе без снятия с поддержки).»
Основным назначением расширения конфигурации является доработка прикладных решений (конфигураций) под нужды клиента. При этом нет необходимости в снятии дорабатываемой конфигурации с поддержки. В результате сохраняется простота сопровождения и обновления типового прикладного решения, стоящего на поддержке.
При разработке расширений следует учитывать следующие факты:
— в системе могут функционировать более одного расширения.
— расширяемая конфигурация в любой момент может быть изменена, например, в результате обновления и разработчик расширения никак не может повлиять на возможность или невозможность обновления
Расширение может иметь одно из следующих назначений:
Исправление — предназначено для оперативного исправления ошибок в прикладном решении. В таких расширениях часто применяется метод с помощью аннотации Вместо. Как правило это назначение предназначено для определенной версии прикладного решения. При выходе следующей версии этого решения автор расширения должен проводить анализ применимости созданных расширений в новой версии.
Адаптация — предназначено для адаптации прикладного решения под условия конкретного заказчика. Предполагается, что в каждый момент времени в информационной базе существует минимальное количество таких расширений. Если в одно расширение невозможно включить весь набор изменений, то рекомендуется расширения с назначением Адаптация разбивать по максимально крупным блокам расширяемого прикладного решения.
Дополнение — предназначено для реализации новых возможностей прикладных решений, которые минимально привязаны к конкретной версии прикладного решения. В качестве примера можно привести создание нового набора отчетов, который отсутствует в прикладном решении. Предполагается, что таких расширений может быть произвольное количество.
Расширение создается в конфигураторе, хранится в информационной базе и может быть выгружено в файл. Для подключения расширения, сохраненного в файл, в прикладное решение нет необходимости использовать конфигуратор. Подключить расширение можно с помощью стандартного функционала (Все функции Стандартные Управление расширениями конфигурации). Подключить расширение также используя программный интерфейс, предоставляемый платформой.
Ограничения использования расширений:
Расширения конфигурации не поддерживают создание следующих собственных объектов:
— Подписки на события.
— Функциональные опции и параметры функциональных опций.
— Бизнес-процессы и задачи.
— Внешние источники данных.
Не поддерживается расширение следующих объектов:
— Нельзя создавать подчиненные подсистемы.
— Если объект не может быть собственным объектом расширения его расширение также не поддерживается.
— Состав значений перечислений;
Не поддерживается добавление реквизитов и табличных частей для:
— План видов характеристик;
— План видов расчетов.
Не поддерживается изменение структуры регистров всех видов. Поддерживается только расширение состава регистраторов.
В базовых версиях прикладных решений работа с расширениями не поддерживается.
Стоит помнить, что Механизм расширения конфигурации – это перспективный постоянно развивающийся механизм и с выходом новых версий платформ их функционал только расширяется и лишается текущих недочетов.
Как добавить расширение конфигурации 1С 8.3
Предлагаю рассмотреть задачу добавления нового Справочника «Категория должности по Классификатору Предприятия» с выводом его значения на Форму Справочника Должности, на базе Конфигурации ЗУП 3.1
Для создания расширения необходимо запустить 1С в режиме конфигуратора.
В конфигураторе необходимо зайти в меню «Конфигурация» и выбрать пункт «Расширения конфигурации». Откроется окно со списком расширений (если они есть). Далее нажмем кнопку «Добавить». Мы увидим диалоговое окно создания расширения:

Стоит отдельно выделить поле Назначение – необходимо выбрать его значение в зависимости от решаемой задачи – т.к. мы выполняем добавление объектов по требованиям конкретного заказчика – нам подойдет вариант «Адаптация».
После нажатия на кнопку «ОК» — двойным кликом по появившейся строке откроем Конфигурацию расширения. Мы увидим практически пустое дерево конфигурации.

Добавим в расширение справочник Категория должности по Классификатору Предприятия. Стоит обратить внимание, что в название всех объектов процедур и функций созданных в расширении, добавляется его префикс (в нашем случае Расш1_);

Разместим наш новый Справочник в Подсистеме «ШтатноеРасписание» для этого необходимо добавить эту подсистему в Расширение – Перейдем в дерево основной Конфигурации и нажмем правой кнопкой мыши на строке с нужной подсистемой и выберем пункт «Добавить в расширение».

Теперь мы можем управлять ее составом, добавим наш новый объект в подсистему.

Далее добавим в расширение Справочник Должности и добавим для него новый реквизит КатегорияДолжности с типом СправочникСсылка.Расш1_КатегорияДолжностиПоКлассификаторуПредприятия

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

Далее добавим новый Реквизит в подходящую Группу на форме.

Запустив 1С в режиме Предприятия убедимся, что новый Справочник появился в интерфейсе

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

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

Перейдем в Общий модуль УправлениеСвойствами где находится данная процедура, и кликнем правой кнопкой мыши по процедуре ПриСозданииНаСервере. В выпадающем меню выберем пункт «Добавить в расширение»

Система предложит нам выбрать одну из аннотаций, подробнее о каждой из них рассмотрим в следующих публикациях, а сейчас выберем «Вызывать после»

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

Готовое расширение можно выгрузить в файл перейдя в конфигураторе в меню «Конфигурация» и выбрать пункт «Расширения конфигурации». В открывшемся списке расширений по правой кнопкой мыши можно вызвать выпадающее меню, либо выбрать пункт командной панели «Конфигурация» и выбрать пункт «Сохранить конфигурацию в файл…». На выходе мы получим Файл типа *.cfe который можно передать заказчику.

Таким образом, мы научились создавать собственные расширения на примере конкретного кейса.
Расширения конфигурации для 1С 8.3
В конфигурациях на управляемых формах появилась новая функция — расширения конфигурации.
Расширение конфигурации — дополнения к программе, позволяющие добавлять новые возможности в программу без ее прямого изменения.
ОСОБЕННОСТИ РАСШИРЕНИЯ КОНФИГУРАЦИИ
— расширение — это и есть мини-конфигурация, подключаемая отдельным независимым модулем к основной конфигурации 1С. Чтобы добавить готовое расширение нужно в режиме 1С Предприятие зайти в меню:
Компания — Администрирование — Печатные формы, отчеты, обработки — Расширение возможностей программы
— в некоторых конфигурациях на управляемых формах, таких как УНФ 1.6 теперь можно добавить только расширение. Т.е. теперь нельзя добавить внешнюю печатную форму как раньше. Если вам нужна внешняя печатная форма, нужно создать расширение.
— функция расширений работает на платформе 8.3.10 и выше.
— совместимость основной конфигурации и расширения должна быть одинаковой.
Чем расширение отличается от внешних отчетов, обработок и печатных форм, которые работали раньше и которые также не модифицировали конфигурацию пока не известно. Будем наблюдать. Но точно знаем. что в расширении есть функция подмены выполнения стандартного кода кодом расширения. Своего рода надстройка над основной конфигурацией, исполняемая из вне.
КАК СОЗДАТЬ РАСШИРЕНИЕ
На примере печатной формы товарного чека для конфигурации УНФ 1.6 создадим расширение печатной формы для документа расходная накладная, печатная форма Товарный чек.
1. В режиме конфигуратора заходим в меню:
Конфигурация — Расширения конфигурации
2. С помощью кнопки Плюс (Добавить) добавляете новое расширение со следующими параметрами:
— Имя — Расширение1 (произвольный текс)
— Синоним — произвольный текст
— Префикс — уникальный тест, например, «расш1»
— назначение — дополнение

3. Добавляете в расширение объекты из основной конфигурации. Для этого правой кнопкой мышки нажимаете на объекте основной конфигурации и выбираете пункт «добавить в расширение». Для создания печатной формы нам понадобиться добавить в наше расширение объекты:
— расходная накладная. Потому что а ее основе формируется печатная форма Товарный чек
— макет товарный чек. Наш макет находится в основной конфигурации в документе Чек ККМ.
При нажатии по макету Добавить в расширение добавится и макет и документ Чек ККМ. Видимо одно без другого не добавляется.

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

В теле процедуры нужно оставить только ту часть кода, которая отвечает за вывод на печать именно нашей печатной формы — Товарный чек. Все остальное можно удалить. Это касается первых двух (ДобавитьКомандыПечати, Печать). Код последней процедуры должен быть полностью такой же как в основной конфигурации.
Процедуры как и объекты можно добавлять в расширение с помощью нажатия правой кнопки мышки.
Для вызова из модуля менеджера именно наших функций и процедур программа намерено в автоматическом режиме добавляет перед названием процедуры префикс нашего расширения. Если префикс не добавился, рекомендуем добавить его вручную.
После того как расширение собрано и работает в макет печатной формы можно вносить какие-либо изменения. Например, скрыть колонки или подписи, уменьшить ширину и т.д.
Если вам нужна помощь в создании расширения или внешнего отчета для вашей конфигурации, обращайтесь в нашу службу поддержки. Наши специалисты обработают вашу задачу и постараются выполнить работы качественно и в срок.
1С 8.3 Расширения — Программист 1С Минск. Автоматизация бизнеса.

Результат = 1 ;
Для Индекс = 1 По КолСтрок Цикл
// с помощью директив препроцессора #Вставка … #КонецВставки и #Удаление … #КонецУдаления
// выделяются части кода, которые необходимо добавить и удалить
#Удаление
Сумма = Цена / Количество ;
#КонецУдаления
#Вставка
Сумма = Цена * Количество ;
#КонецВставки
КонецЦикла;