&ИзменениеИКонтроль в расширениях 1С

Курс

Начиная с версии платформы 8.3.15 в расширениях можно использовать аннотацию &ИзменениеИКонтроль. При этом важна именно версия платформы, а не режим совместимости. То есть, если у Вас платформа 8.3.15, а режим совместимости установлен 8.3.12, то аннотация &ИзменениеИКонтроль будет работать.

На платформе младше 8.3.15 будет ошибка: «Ожидается оператор препроцессора #<<?>>Вставка»:

Для примера использования создадим простую обработку с одной командой на форме и со следующим программным кодом в модуле:

Создадим новое расширение, назовем его «ИзменениеИКонтроль» и добавим в него процедуру ИзменениеИКонтроль() из модуля формы обработки. Аннотацию выберем «Вызывать вместо (с контролем)»:

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

Здесь мы использовали инструкции препроцессора #Удаление — #КонецУдаления. Код находящийся между ними будет удален из результирующего модуля. В результате, при нажатии на кнопку будет выведено только сообщение с числом 3. Если у Вас сообщение «Сумма равна» все равно выводится, проверьте снята ли галка «Безопасный режим» в списке расширений:

Теперь добавим, чтобы выводилось сообщение «Сумма из расширения равна»:

Здесь мы использовали инструкции препроцессора #Вставка — #КонецВставки. Код расположенный между ними будет добавлен в результирующий модуль.

Если сейчас в исходном модуле (не в расширении) изменить значение переменной «а» на 11:

И нажать на кнопку на форме обработки, то снова будет выведено «Сумма равна» и число 13 (сумма изменилась, так как мы изменили значение одного из слагаемых).

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

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

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

Автоматическое обновление модуля в расширении можно выполнить только если настроено сравнение/объединение с помощью внешних программ.

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

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


Подписывайтесь на группу ВКонтакте , где я публикую ссылки на новые статьи с данного сайта, а также интересные материалы с других ресурсов по программированию в 1С
Понравилась статья? Поделиться с друзьями:
Комментарии: 2
  1. Иван

    Не работает «ИзменениеИКонтроль» :x

    1. admin (автор)

      На что ругается?

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Используя этот сайт, Вы даете согласие на использование cookies. На данном этапе Вы можете отказаться от использования cookies, настроив необходимые параметры в своем браузере.
ok