рубрики: Платформа 8.3 | Дата: 1 мая, 2018
Начиная с редакции 8.3.6 платформы 1С:Предприятия в ней появился механизм расширения конфигураций.
Он позволяет вносить новый и переопределять существующий функционал без изменения основной (расширяемой) конфигурации. Таким образом у нас появляется масса новых возможностей, недоступных ранее.
Конечно есть и ограничения:
Давайте рассмотрим на примере как можно переопределить процедуру общего модуля с использованием расширения конфигурации. То есть это тот случай, когда нам надо оперативно исправить какую-то ошибку без выпуска релиза и обновления основной конфигурации. Итак пусть у нас есть общий модуль professia1c_ry_Расширения.
И в нем простейшая процедура, которая выводит сообщение:
Процедура ВывестиСообщение() Экспорт
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Это основная конфигурация";
Сообщение.Сообщить();
КонецПроцедуры
А теперь давайте выведем другое сообщение с помощью расширения. В первую очередь нам конечно же надо создать само расширение. В меню конфигуратора выбираем Конфигурация — Расширение конфигурации
В открывшемся окне жмем кнопку Добавить и заполняем поля со свойствами расширения. Поля Имя и Синоним комментариев не требуют. Префикс будет использоваться имени расширяющей процедуры, которая будет замещать исходную. А в списке Назначение из трех возможных вариантов (Исправление, Адаптация, Дополнение) выберем Исправление:
Далее в списке расширений убираем флажки «Безопасный режим, имя профиля безопасности» и «Защита от опасных действий»:
Таким образом мы создали расширение. Но если мы откроем его двойным щелчком, то увидим, что дерево метаданных у него пустое. И теперь нам надо добавить в расширение общий модуль.
Для этого в дереве метаданных основной конфигурации щелкаем правой кнопкой по нужному общему модулю и выбираем пункт «Добавить в расширение»:
И теперь наше расширение будет выглядеть следующим образом:
Но если мы посмотрим на код общего модуля расширения, то увидим, что он пустой. И следующим шагом надо добавить в него процедуру. Снова идем в основную конфигурацию, открываем код общего модуля, щелкаем правой кнопкой по процедуре, снова выбираем пункт «Добавить в расширение» и в открывшемся окне выбираем тип вызова Вызывать вместо:
В итоге в общий модуль расширения будет добавлена процедура со следующим кодом:
&Вместо("ВывестиСообщение")
Процедура Сообщения_ВывестиСообщение()
// Вставить содержимое метода.
ПродолжитьВызов();
КонецПроцедуры
Как видим в имени процедуры присутствует префикс, который был указан при создании расширения. Теперь остается только доработать код процедуры так как нам нужно:
&Вместо("ВывестиСообщение")
Процедура Сообщения_ВывестиСообщение_()
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Это расширение";
Сообщение.Сообщить();
КонецПроцедуры
И теперь можно легко убедиться, что у нас будет выполняться код расширения вместо кода основной конфигурации, если выполнить следующий код:
professia1c_ry_Расширения.ВывестиСообщение();
в стандартной обработке Управление расширениями конфигурации перед добавлением или перед загрузкой расширения, автоматически или с помощью интерактивных команд.