Эволюция расширения конфигурации

Публикация № 1190788

Разработка - Конфигурирование 1С - Расширения

Расширение конфигурации история эволюция

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

 

Введение

Думаю, многие слышали, а некоторые уже активно пользуются новым механизмов работы в 1С!?

Начиная с версии 1С:Предприятие 8.3.6.1977 (29.04.2015) в платформе введен новый механизм – расширение конфигурации.

Давайте попробуем ответить на вопросы: Что такое расширение конфигурации и для чего оно нужно?

Как фирма 1С позиционирует расширение конфигурации, можно узнать на официальном сайте.

Что такое расширение конфигурации?

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

Для чего нужно расширение конфигурации?

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

Снятие с полной поддержки влечет за собой ряд неудобств:

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

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

Эволюция

Таблица сравнения функционала расширений по версиям платформы

 
 Версия 8.3.17
 
 Версия 8.3.16
 
 Версия 8.3.15
 
 Версия 8.3.14
 
 Версия 8.3.13
 
 Версия 8.3.12
 
 Версия 8.3.11
 
 Версия 8.3.10
 
 Версия 8.3.9
 
 Версия 8.3.8
 
 Версия 8.3.7
 
 Версия 8.3.6

Материал таблицы подготовлен по данным официальных обновлений.

А теперь давайте сделаем выжимку из таблицы сравнения и составим дерево эволюции только доступных объектов для расширения:

 
Версия 8.3.17 

Если вы заметили недокументированные возможности расширений, просьба оставлять их в комментариях!

Также статья будет дополняться и обновляться по мере выхода новых релизов платформы, спасибо за внимание!

P.S. Если материал вам помог, поблагодарите автора, поставив плюс!

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. -vito- 400 06.02.20 20:17 Сейчас в теме
Максим, спасибо за сборку в одном месте!

От себя добавлю одну "недодокументированность", связанную с расширениями.
Пакетный режим запуска Конфигуратора также обзавелся ключом -Extension <ИмяРасширения> для многих операций, которые можно применить к расширениям, например, обновление из Хранилища, загрузка, выгрузка, обновление конфигурации БД и другие.
Однако при попытке обновления конфигурации БД с указанием -Extension <ИмяРасширения> Платформа упорно выдавала мне ошибку "Ошибка в параметрах командной строки". Экспериментально удалось установить что с этим ключом конфликтует ключ "-Server". Вероятно, к расширениям он неприменим.
2. Xershi 892 06.02.20 21:00 Сейчас в теме
(1)
Реализован параметр командной строки -Extension для ключей командной строки СonfigurationRepositoryAddUser, ConfigurationRepositoryBindCfg, ConfigurationRepositoryDumpCfg, ConfigurationRepositoryClearCache, ConfigurationRepositoryClearGlobalCache, ConfigurationRepositoryClearLocalCache, ConfigurationRepositoryCommit, ConfigurationRepositoryCopyUsers, ConfigurationRepositoryCreate, ConfigurationRepositoryLock, ConfigurationRepositoryOptimizeData, ConfigurationRepositoryReport, ConfigurationRepositorySetLabel, ConfigurationRepositoryUpdateCfg, ConfigurationRepositoryUnbindCfg, ConfigurationRepositoryUnlock.
в 8.3.12 про этот параметр идет речь. На платформе ранее мог использоваться?
11. -vito- 400 07.02.20 11:23 Сейчас в теме
(2) Параметр документирован. Речь о том, что он может конфликтовать с другими параметрами, о чем в документации не сказано.
12. Xershi 892 07.02.20 11:25 Сейчас в теме
(11) да такое бывает. Иногда нужно почитать про смежные параметры, чтобы понять что они не совместимы и явно в справке про это не написано. Иногда такие репорты пишу разработчикам и возможно в будущих релизах они это дополнят.
3. PhoenixAOD 59 07.02.20 03:25 Сейчас в теме
Отличная статья, все в одном месте, жаль, что еще регламентные задания нельзя добавлять свои в расширение.
6. pm74 163 07.02.20 07:48 Сейчас в теме
(3) в метаданные нет , но можно
7. PhoenixAOD 59 07.02.20 07:55 Сейчас в теме
(6)ну я только знаю про внешнюю обработку по расписанию
20. Darklight 21 07.02.20 15:49 Сейчас в теме
(7)Ну всё Вы знаете - а я вам ответ написал в (19) - эх....
Тогда чем не устраивает?
19. Darklight 21 07.02.20 15:48 Сейчас в теме
(3)
жаль, что еще регламентные задания нельзя добавлять свои в расширение.

На типовых конфигурациях (думаю на всех на БСП 3.х как минимум, а то и более ранних версий) можно обойти через внешние обработки - там уже давно реализован встроенный в конфигурацию механизм запуска внешних обработок (из справочника доп. обработок) по расписанию - для этого в конфигурации выделено отдельное регл. задание. Так что это не критично - достаточно легко обходится - обработка только внешней должна быть (увы - что-то привязки к доп. обработка обработок из конфигурации не сделали - хотя намёк там на это есть, ну или я просто с этим не разобрался). А у внешних обработок есть один важный КОСЯК архитектуры - у них нет модуля менеджера (вот такие вот 1С-горе архитекторы)!
4. o.nikolaev 195 07.02.20 03:28 Сейчас в теме
5. MikhailDr 07.02.20 07:19 Сейчас в теме
Реализованы директивы препроцессора Удалить и Вставить.


К сожалению пока что еще не работают, хотя добавлены.
8. MVK80 07.02.20 08:04 Сейчас в теме
(5)
К сожалению пока что еще не работают, хотя добавлены.

Касательно аннотации ИзменениеИКонтроль. Работает, но не на 100%. Есть баги, о которых писал и должны появится в ближайшее время на bugboard.
Навскидку:
1. Не расширяются клиентские методы общих модулей у которых есть галочка Клиент.
2. Когда в типовой параметры процедуры или функции идут не в строку а в несколько строк, то тоже не работает расширение. Пока "выход" - "выпрямлять" типовые функции, хотя это уже изменение основной конфигурации и теряется смысл расширения.
3. Некорректно расширяются обработчики событий формы. Рекомендация расширять их как обычные процедуры и функции, а не как обработчики.

Есть просто еще баги по ответам платформы на применимость расширения или падения платформы в определенных ситуациях (а должно быть диагностическое сообщение).

А в целом используем их ИзменениеИКонтроль. Рекомендую на последней платформе это делать 8.3.16.1148 там багов меньше по этому направлению, чем в предыдущих платформах.
9. MikhailDr 07.02.20 08:11 Сейчас в теме
(8) Да вот как раз неделю назад пробовал ставить расширение на общий модуль зарплаты "ОтражениеЗарплатыВБухучетеРасширенный" и конфигурация просто падала после запуска, пока не отключил.

Я думаю надо еще парочку релизов подождать. Судя по описанию механизм "ИзменениеИКонтроль" просто супер, давно этого не хватало.
21. Darklight 21 07.02.20 15:50 Сейчас в теме
(9)Не хватало.... но всё-равно он реализован через жо....
13. Xershi 892 07.02.20 11:26 Сейчас в теме
(5) возможно конфигурация должна быть 8.3.15+. У нас пока 8.3.10 и 8.3.12=))
14. MikhailDr 07.02.20 11:40 Сейчас в теме
23. Xershi 892 11.02.20 12:01 Сейчас в теме
(14) проверил
&ИзменениеИКонтроль("СообщитьТест")
Процедура Расш1_СообщитьТест()

	Тест = 1 + 4;
	#Вставка
	Тест = 1 + 2;
	#КонецВставки

	Сообщить(Тест);

КонецПроцедуры
Показать

Работает, если модуль серверный. Как выше писали на клиентских не работает. Возможно связано с тем что для ОФ они не реализовали, а я не обрамлял контекст.
Проверил добавление констант. Если режим совместимости расширения ниже 8.3.16, то даже не даст сохранить. Поэтому еще не скоро с константами в типовых получится играться.
10. wowik 652 07.02.20 08:55 Сейчас в теме
15. samadurov 107 07.02.20 15:01 Сейчас в теме
16. Darklight 21 07.02.20 15:27 Сейчас в теме
Можно я немного пофлудю...

В релизе 8.3.17 «Реализована возможность заимствования подписок на события и создания собственных подписок в расширении.»
Действительно – долгожданное нововведение! И даже работает! Но?
В расширении нельзя изменить обработчик события! Хотя это ладана – не странно – видимо подразумевается – что для изменения обработчика в расширение нужно тянуть процедуру обработчика из расширяемой конфигурации!
А вот, за то, что в расширении можно расширить (только дополнить) состав источников события – вот это СПАСИБО!
Понятно, что чтобы туда добавить источник он должен быть либо в самом расширении, либо импортирован туда! Добавить из другого расширения нельзя – нужно расширять там!
Хотя! Нет! Сделали ещё тоже очень важную вещь! Подписки на события в конфигурации можно вешать на обобщённые типы (как я из называю, уж не знаю как правильно официально) как «СправочникОбъект», «ДокументОбъект», которые автоматически наследуют все вложенные в них типы! Вот только на определяемый тип нельзя подписаться (вернее его выбрать можно, но нельзя выбрать событие – даже если в опр. типе указан всего один тип-источник). Но ранее такие подписки из основной конфигурации не подписывали на себя объекты из расширений – ТЕПЕРЬ ПОДПИСЫВАЮТ! Причём в расширении так же можно расширить подписку на такой ОБОЩЁННЫЙ ТИП! И такая подписка будет срабатывать на ВСЕ вложенные типы – из конфигурации, из текущего расширения и других расширений! ЭТО ПРОСТО ВЕЛИКОЛЕПНО! ТО, ЧТО НАДО!
И ДАЖЕ ЕЩЁ КРУЧЕ! Ранее некоторые события нельзя было смешивать для разных объектов в одной пописке на событие. Например, событие «ПередЗаписью» нельзя было выбрать для «СправочникОбъект» и «ДокументОбъект» и назначить им один обработчик. Ну это было «почти понятно почему» – т.к. эти события имели разный формат сигнатуры обработчика! НО ТЕПЕРЬ ЭТО МОЖНО! Но толкьо через расширение! Если, скажем в конфигурации выбрать источник «ДокументОбъект» (и событие «ПередЗаписью»), а в расширении расширить эту подписку до «СправочникОбъект» - то данный обработчик БУДЕТ СРАБАТЫВАТЬ И ПЕРЕД ЗАПИСЬЮ ОБЪЕКТОВ И ПЕРЕД ЗАПИСЬЮ СПРАВОЧНИКОВ! Для справочников аргументы события «РежимЗаписи», «РежимПроведения» будут просто = «неопределено». Можно и наоборот – подписаться – тогда у обработчика просто не будет данных аргументов.
БОЛЕЕ ТОГО! МОЖНО НЕ ТОЛЬКО взять подписку из конфигурации! НО И ДОБАВИТЬ НОВУЮ ПОДПИСКУ НА СОБЫТИЕ В РАСШИРЕНИЕ!
Тогда можно указать и событие и обработчик – так же как и в основной конфигурации, включая обобщённые типы как «СправочникОбъект» и «ДокументОбъект»! ЭТО ОЧЕНЬ КРУТО!

(СКРЫТЫЙ ТЕКСТ) Жалобы жалобы жалобы (можно не читать)


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

А автору статьи спасибо за экскурс - будет полезно при выборе минимальной версии расширения для нужной функциональности!
17. Xershi 892 07.02.20 15:33 Сейчас в теме
(16) рекомендую отписать все это в ТП. Они адекватно реагируют на пожелания в реализации новых возможностей. Так нужно понимать, что не все ресурсы бросаются на расширения и скорее всего есть некоторые проблемы совместимости.
Но чем больше таких писем будет у 1С тем быстрее они реализуют, то чего всем нужно!
Да и на заметку, обновил статью первый не бета релиз вышел в 2015 году. Про 6 лет пока перегнули=))
18. Darklight 21 07.02.20 15:37 Сейчас в теме
(17)
Да и на заметку, обновил статью первый не бета релиз вышел в 2015 году. Про 6 лет пока перегнули=))

Я отсчитывал от момента анонса!
22. OPM 194 10.02.20 16:05 Сейчас в теме
Можно добавить в расширение реквизит с типом ДокументСсылка, или СправочникСсылка.
24. AnatolPopov 63 13.02.20 18:25 Сейчас в теме
Замечание не по содержанию, а по форме ;)
Взгляните на версию для печати. Такая же кривая, какую наблюдаю я? ;)
25. Xershi 892 13.02.20 18:40 Сейчас в теме
(24) этот вопрос адресуйте разработчикам сайта. Мне они пока ничего не ответили!
Суть сводится к работе таблиц в спойлерах. Согласитесь столько инфы так компактно сгруппировать по другому не получилось бы!
А вот как работают спойлеры должны разработчики сайта отладить.
Оставьте свое сообщение

См. также

Обработка расширением на клиенте

Статья Программист Нет файла v8::УФ 1cv8.cf Бесплатно (free) Расширения Универсальные функции

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

31.10.2019    4145    EvgenURNN    9       

​​​​​​​CorelDRAW Graphics Suite 2019 Промо

CorelDRAW – пакет профессиональных инструментов для редактирования фотографий, разработки дизайна, создания макетов страниц и векторных иллюстраций