1С Расширения
Содержание
Так что же такое расширение?
Зачастую типовые или отраслевые конфигурации, поставляемые фирмой 1С и её партнерами, не удовлетворяли потребностям пользователей и, как правило, снимались с поддержки для доработки, из-за чего в дальнейшем значительно усложнялось сопровождение баз. Технические специалисты при обновлении таких баз могли попросту забыть или даже не знать о каком-либо дополнительном функционале - с обновлениями теряли его часть, что приводило к откату базы или частичной остановке работы групп пользователей.
Механизм расширений позволяет доработать конфигурацию и оставить её на полной поддержке. Во-первых, это позволит обновлять конфигурацию из режима предприятия. Во-вторых, при обновлении, если функционал расширения перестает работать, технический специалист с легкостью сможет устранить проблему так как алгоритм доработки не пересекается с алгоритмами основной конфигурации, а только лишь встраивается в него.
Пример использования расширения
Рассмотрим работу расширений на конкретном примере: допустим у нас есть конфигурация «Управление торговлей 2.4», и нам необходимо в документе «Заказ клиента» вывести наш долг и долг контрагента на форму документа при открытии уже созданного заказа и при выборе контрагента в форме документа. Размещаться информация будет между реквизитами формы «Партнер» и «Контрагент».
Откроем конфигуратор и добавим новое расширение.
При создании нового расширения система запросит ввод информации по нему. Имя расширения мы вводим как «ЗаказКлиента», синоним «Заказ клиента». Префикс «ЗК_», он необходим для дополнительной префиксации объектов добавляемых в расширение, система автоматически будет подставлять его при создании новых справочников, документов, их реквизитов и так далее.
Назначение - это способ применения расширения в той или иной ситуации. Существуют 3 вида назначения:
- исправление – указывается, когда расширение исправляет какие-либо ошибки конфигурации;
- адаптация – используется при изменении какого-либо функционала под специфику предприятия;
- дополнение – используется при доработке нового функционала конфигурации.
В нашем примере мы указываем «дополнение» так как мы ничего не исправляем, и не изменяем поведение текущего решения, а только лишь дописываем свой функционал к типовому документу.
Далее необходимо в основной конфигурации добавить в расширение форму документа «Заказ клиента».
После добавлении формы в расширение мы получаем копию основной формы конфигурации, в которую можем внести любые изменения.
Итак, дополним функциональность события формы «ПриСозданииНаСервере» и «ПриИзменении» реквизита формы «Партнер».
При добавлении события «ПриСозданииНаСервере» система запросила выбор настройки «Аннотации» поведения нашей процедуры в четырех вариантах: вызвать перед, вызвать после, вызвать вместо, вызвать вместо (с контролем).
Аннотация — это надстройка над нашей процедурой или функцией, указывающая системе в какой момент её необходимо вызвать:
- Вызвать перед – наша процедура выполнится первая, а затем будет выполняться типовая
- Вызвать после – наша процедура выполняется после выполнения типовой
- Вызвать вместо – наша процедура заменяет типовую процедуру
- Вызвать вместо (с контролем) – такая процедура будет выполняться с контролем типового кода и нашего по вставкам #Удаление #КонецУдаления и #Вставка #КонецВставки.
Вернемся к нашему примеру.
Добавим на форму группу «ГруппаДолги» с декорациями «Текст» в которых будет содержаться информация по нашему долгу и долгу контрагента.
Код формы после изменений:
&НаСервере Процедура ЗК_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка) СуммыДолгов = ПолучитьСуммыДолгов(Объект.Партнер); Элементы.НашДолг.Заголовок = "Наш долг: "+Формат(СуммыДолгов.НашДолг, "ЧЦ=15; ЧДЦ=2; ЧН=0; ЧГ=0"); Элементы.ДолгКонтрагента.Заголовок = "Долг контрагента: "+Формат(СуммыДолгов.ДолгПартнера, "ЧЦ=15; ЧДЦ=2; ЧН=0; ЧГ=0"); КонецПроцедуры &НаКлиенте Процедура ЗК_ПартнерПриИзмененииПосле(Элемент) СуммыДолгов = ПолучитьСуммыДолгов(Объект.Партнер); Элементы.НашДолг.Заголовок = "Наш долг: "+Формат(СуммыДолгов.НашДолг, "ЧЦ=15; ЧДЦ=2; ЧН=0; ЧГ=0"); Элементы.ДолгКонтрагента.Заголовок = "Долг контрагента: "+Формат(СуммыДолгов.ДолгПартнера, "ЧЦ=15; ЧДЦ=2; ЧН=0; ЧГ=0"); КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьСуммыДолгов(Партнер) ********************************* КонецФункции
Вот так просто дорабатывается функционал типовых конфигураций без снятия с поддержки.
Применение расширений в конфигурациях используются как для доработок типового функционала, не подходящего под бизнес процессы предприятия, так и для серьезных разработок модулей, интегрируемых в типовые конфигурации. В любом случае данный механизм очень полезен с точки зрения сопровождения конфигураций - он исключает серьёзные повреждения базы в процессе доработок если бы база снималась бы с поддержки поставщика. Необходимость снимать базы с поддержки поставщика уходит в прошлое, а мы в очередной раз видим, что 1С развивает и будет развивать свою платформу.
Расширение для конфигурации «Управление торговлей, редакция 11 (11.4.14.95)Управляйте вашей торговлей и продажами с помощью 1C ИТС - это просто и эффективно.