gifts2017

Механизм расширения конфигурации в 1С 8.3.6

Опубликовал Денис Новосёлов (binex) в раздел Программирование - Практика программирования

Какие возможности предоставляет механизм?! Изменять существующие управляемые формы, добавлять отчеты и обработки, добавлять и изменять состав подсистем. И всё это не изменяя конфигурации. Даже не снимая её с поддержки. Но! Есть нюанс - режим совместимости конфигурации должен быть отключен!

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


Рассмотрим пример замены обработчика кнопки в форме элемента справочника.

 


В основной конфигурации, код обработчика кнопки:

Заменим обработчик на свой. Для этого позаимствуем форму справочника в своё расширение:
Находим в дереве основной конфигурации форму, в контекстном меню выбираем команду "Добавить в расширение". Откроется диалог управления расширениями. Добавим в него новое расширение и выберем.
Откроется дерево нового расширения с позаимствованной формой.


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


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

 


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

 



Результат желанный:


Если хотите перехватить событие, ПОСЛЕ выполнения обработчиков, то есть метод УстановитьВыполнениеПослеОбработчиковСобытия

 

 


В результате:

 

 

 

Если мы добавим ещё одно расширение, то сперва вызовется обработчик 2-го расширения, затем 1-го, потом уже основной.

Диалог управлением можно вызвать в режиме конфигуратора через меню Конфигурация->Расширения конфигурации. В режиме предприятия Все функции -> Стандартные ->Управление расширениями конфигурации.

См. также

Вознаграждение за ответ
Сумма: 0 $m
Добавили:
Владимир Бондарь (bondar_vy@mail.ru) (0.19 $m)
Подписаться Добавить вознаграждение

Комментарии

1. Алексей Роза (DoctorRoza) 19.06.15 15:59
Краткость - сестра таланта!
chuprina_as; +1 Ответить
2. Олег Дмитров (baracuda) 19.06.15 16:06
Ссылку бы приложили на документацию.
Если конечно она существует.
1С уже привыкла что, документацию за нее пользователи пишут.
RainyAugust22; ivnik; Dvornik; delete; +4 Ответить 1
3. Александр Кунташов (kuntashov) 19.06.15 17:24
Решение реальной прикладной задачи с помощью механизма, а не абстрактный пример - http://infostart.ru/public/359597/
pauk.; Zircool; Spacer; artbear; DexterMorgan777; ekaruk; Дмитрий74Чел; Bassgood; +8 Ответить 1
4. Сергей Галюк (dj_serega) 19.06.15 18:03
Нормик. Взял на заметку.
chuprina_as; adhocprog; +2 Ответить
5. Алексей Драчков (Bassgood) 19.06.15 23:39
(0) По моему публикация получилась скудная, в (3) намного полнее освящена эта тема (на сколько помню, была еще одна статья на эту тему с применением этой возможности для проверки ИНН контрагентов)
6. Олег Дмитров (baracuda) 20.06.15 14:47
Ребята, подскажите пожалуйста.
Допустим я добавил новый реквизит на форму, могу ли я его записывать в регистры сведений?
Чтоб в дальнейшем по нему отчеты строить?
7. Вася Пупкин (w.r.) 20.06.15 18:01
Полгода как уже на сайте 1С http://v8.1c.ru/o7/201410ext/index.htm
ryutao; acapulco; zqzq; +3 Ответить
8. ramin . (raminka) 22.06.15 21:12
9. Владимир Бондарь (bondar_vy@mail.ru) 24.06.15 10:26
Интересный механизм. Возникает вопрос: если форма основной конфигурации изменяется, то позаимствованная форма в расширении изменится? Если нет, то механизм не очень полезен, т.к. придётся заново переписывать расширение для того чтобы получить новые возможности типового функционала и это в таком случае ничем не отличается от исправления модуля формы. Если же форма наследуется, то тогда действительно ценный механизм.
Вы этот момент проверяли?
10. Денис Новосёлов (binex) 24.06.15 10:32
(9) bondar_vy@mail.ru, формы наследуются. Завязка идёт на имена реквизитов. Более того, в случае если подключено несколько расширений, то каждое последующее расширение использует в качестве позаимствованной формы результат предыдущего расширения.
11. Виктор Левченко (lvictor58) 24.06.15 13:43
Насколько я понимаю: для возможности создания расширений необходимо для конфигурации отключить режим совместимости (Свойства --> Совместимость --> Режим совместимости = "Не использовать"). А для этого надо отключить поддержку. В противном случае эта опция недоступна. И вся прелесть автоматической поддержки теряется. Или я не там рою?
12. Денис Новосёлов (binex) 24.06.15 14:07
(11) Так точно. Нюанс упомянут в статье. Механизм на будущие конфигурации. Хотя в БП 3.0 его уже можно употреблять.
13. Никита Грызлов (nixel) 25.06.15 10:44
(2) baracuda, вся документация по расширениям есть на ИТС. Причем с примерами более подробными, чем в этой "статье".
Student1C; +1 Ответить
14. Никита Грызлов (nixel) 25.06.15 10:45
(11) lvictor58, БП 3.0.41 уже без совместимости с 8.3.6. Скоро поднятутся остальные типовые
15. Ruslan (rus128) 01.07.15 13:22
Спасибо, познавательно. Но стиль языка довольно низкий, пунктуация местами неверная, плюс опечатка в сообщении в последнем примере (обАРботчика) - как в исходном тексте, так и на скриншоте.
16. Dexter Morgan (DexterMorgan777) 23.07.15 17:25
Спасибо за пример. Помогло в одной задачке.
17. Андрей Григорьев (Borisych) 22.10.15 13:13
После обновления конфигурации все расширения оказались пустыми... Кто-нибудь сталкивался? Причем я сохранял их в файлы, при сравнении с файлами ничего не происходит интересного, как-будто в файлах тоже никакой информации нет.
18. Леша (леша) 07.11.15 02:24
(15) тоже про оБАРботчик заметил )))
19. Александр Крынецкий (echo77) 09.11.15 18:07
(0) Как я понимаю для конфигураций, у которых режим запуска обычное приложение этот механизм работать не будет?
20. Дмитрий Малимонов (DreamcastMD) 25.12.15 13:47
Вот меня давно мучает вопрос, как правильней :
1. Делать много расширений на каждый измененный объект. (Вижу плюсы, в случае кардинальных изменений от поставщика отвалится только одно это расширение, остальные продолжат работать. Но список используемых расширений может оказаться довольно большим)
2. Все изменения максимально вносить в одно расширение (может на скорость работы как-либо влияет)
21. Яков Коган (Yashazz) 05.01.16 00:46
Фигня, а не публикация, прости хосспади. Передран кусок данных с ИТС и всего делов - 66 плюсов в копилку. Копипаст рулит, дааа...
Где б тут минус поставить, а?
22. Денис Новосёлов (binex) 05.01.16 09:01
(21) Yashazz, плюсы в копилке погоды не делают. )) Статья, как следствие финального задания известных курсов. )
23. Яков Коган (Yashazz) 05.01.16 10:43
(22) binex, во-первых, делают. По крайней мере, ещё как делали раньше. Во-вторых, это ведь действительно отрывок из общеизвестной публикации с http://its.1c.ru/db/v837doc#bookmark:dev:TI000001528, причём совершенно непоследовательно вырезанный и без полномасштабного примера, каковой там приведён. В третьих, не понимаю, как публикация на ИС может быть следствием задания с каких-либо курсов, тем более такая куцая и дублирующая общедоступное. Вот если б вы изложили нечто, чего в документации нет - тогда понятно, а это, пардон, зачем?..
24. Andrew Chuprina (chuprina_as) 27.02.16 16:43
А мне статья понравилась. Классный тизер по технологии, стимулирующий дальнейшее знакомство с темой. Много букв честно вогнали бы меня в уныние и я бы не осилил.
Отдельное спасибо за наглядность. Однозначный +.

Автор, не обращай внимания на хейтеров.
25. Владимир Полевик (pvvpvv) 27.02.16 17:01
(0) А Вы пробовали выгрузить конфигурацию?
26. Осипов Сергей (fixin) 04.05.16 11:11
Хо, все таки расширения еще не доделаны. Обработчик событий формы - это хорошо. Но если нужно вмешиваться на уровне модуля? Вообще, хорошо что 1с движется в сторону Аспектно-Ориентированного Программирования, но что то как-то неуверенно.
maksa2005; baracuda; +2 Ответить
27. Сергей Баранов (SeTIrk) 08.06.16 11:22
Если я правильно понял сейчас мы можем подключиться только к обработчику события, а заменить вызов процедуры и функции пока нельзя.
Для того чтобы подправить проверку в 5 по стеку функции приходится копировать все 4 функции до, и править пятую.
Ну и общие модули по всей видимости по той же причине не возможно редактировать.

Ждем 8.3.9
28. Евгений Плевако (Evgen2866) 06.10.16 13:38
Господа, не подскажите куда покопать?
Создал расширение в тестовой базе, протестировал, все работает.
Переношу в рабочую, не работает. Как будто нет вообще никакого расширения.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа