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

Главная проблема работы с расширениями - необъективная оценка количества предстоящих доработок разработчиками/внедренцами. Исходя из посыла "да нам же всего несколько кнопочек изменить на форме" начинается работа с расширениями. Количество доработок растет, расширения продолжают использоваться исходя из посыла "мы же уже используем расширения, давайте уже через них продолжать".

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

Этот тот момент, в который в зоопарке технологий прибывает. Гетерогенность, уже живущая в корпоративной системе, радостно потирает руки, понимая, что отвоевала у понятности и простоты хороший такой плацдарм.

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

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

В общем лучше хорошо подумать, прежде чем начинать использовать узкоспециализированную технологию. Если есть риск того, что структуру объектов придется менять или добавлять новые объекты БД, есть необходимость часто и без проблем запускать отладку, есть люди, понимающие как изначально менять конфигурацию без проблем для последующего обновления, то лучше сразу принять решение не плодить зоопарк. Переопределяемые модули, программную модификацию форм и подписки на события никто у нас не забирал. Если компания небольшая и сотрудникам важно чтобы конфигурация обновлялась одной кнопкой и сейчас и всегда в будущем, серьезных изменений точно не будет (действительно уверены?), то зоопарка не будет и с расширениями.

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

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

Что такое внешние отчёты и обработки

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

По функциональности обработки делятся на те, которые могут изменять данные и те, которые просто анализируют информацию и выводят результат в удобной для пользователя форме (отчёты). Чтобы не менять стандартные макеты печати документов, разрабатываются внешние печатные формы. Также внешние обработки могут выполняться по заданному расписанию на сервере приложений 1С - это регламентные задания.

В Кнопке разработано несколько десятков обработок, позволяющих использовать нашим бухгалтерам “практическую магию“. Например, для анализа правильности бухгалтерского учёта в Кнопке используется внешний отчёт “Автоаудит баз“. В удобных для восприятия таблицах выводится анализ по 120 критериям остатков и оборотов по счетам, соответствие данных из налоговых деклараций и информации по бухгалтерскому учёту, анализ основных средств и прочее.

Пример внешней печатной формы “договор займа“ по форме, разработанной нашими юристами. Бывают случаи, когда предприниматель берёт беспроцентный займ у своей фирмы как физическое лицо, или наоборот, перечисляет собственные средства фирме, тогда есть возможность сразу же распечатать договор.

Открывается форма для заполнения необходимых реквизитов:

И выводится печатная форма договора:

Обработки по расписанию (регламентные задания) используем, например, для исправления выписки. У Кнопки настроены интеграции с основными банками и специальные роботы загружают выписку напрямую в 1С. Благодаря технологии машинного обучения, процент ошибок при проведении выписки удалось снизить до 3%. Но как всегда есть исключения, например клиенты, которые используют агентскую схему реализации товаров, в этом случае правила проведения банковской выписки индивидуальные. Чтобы не перепрограммировать робота для частного случая, до появления расширений конфигурации использовали регламентное задание, чтобы раз в 10 минут исправлять выписку за роботом.

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

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

Механизм предполагает три типа использования, которые, собственно, и указываются в поле “Назначение“, при создании расширения:

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

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

Подготовка внешних отчётов и обработок к публикации в модели сервиса

Дополнительный отчёт или обработка создаются в конфигураторе “1С: Предприятие 8“ как стандартные внешние отчёты и обработки и сохраняются в файл с расширением - .epf (для дополнительных обработок) или.erf (для дополнительных отчётов).

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

Обратите внимание, что важным параметром является “Версия“. Если вы внесли изменения в обработку, которая уже была ранее загружена в каталог менеджера сервиса, обязательно измените номер версии, иначе менеджер сервиса откажется загружать этот файл. При разработке отчёта или обработки надо учитывать, что пользователи работают в модели сервиса через web-клиент (хорошая статья в блоге 1С). Если обработка содержит формы, то они должны работать в web-клиенте под всеми web-браузерами, которые поддерживаются технологической платформой «1С: Предприятие 8».

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

Дополнительный отчёт или обработка должны быть подготовлены для загрузки в сервис в виде комплекта поставки. Комплект поставки является архивом (zip-файлом), содержащим:

  • файл дополнительного отчета или обработки;
  • xml-файл манифеста, в котором находится дополнительная метаинформация, необходимая менеджеру сервиса для публикации дополнительного отчёта или обработки в сервисе.
Подготовка выполняется в локально развернутой информационной базе той конфигурации, для которой предназначается дополнительный отчёт или обработка. Используем специальный помощник создания комплекта поставки, внешнюю обработку ПодготовкаДополнительныхОтчетовИОбработокКПубликацииВМоделиСервиса.epf. Подробнее можно почитать в документации по Технологии публикаций решений 1С Fresh.

Установка дополнительных отчётов и обработок в модели сервиса

Отличительной чертой технологии 1С Fresh является то, что внешний отчёт или обработку нельзя загрузить напрямую в область данных. Добавление происходит только администратором сервиса через менеджер сервиса. После того, как zip-архив с файлом обработки подготовлен, его надо загрузить в каталог менеджера сервиса и установить для конкретного абонента сервиса.

Абонент сервиса - это группа пользователей, объединённых по какому-либо принципу. Соответственно, информационные базы, доступные для определённой группы пользователей, называются приложениями абонента.

Приложения могут иметь различные конфигурации 1С (Бухгалтерия предприятия, Зарплата и управление персоналом, Управление нашей фирмой и т.д.), для которых возможно использование в модели сервиса. Дополнительный отчёт или обработка могут быть установлены только в приложения абонента, который указан при загрузке файла.

Вот так выглядит форма свойств дополнительного отчёта с версиями. По гиперссылке “Установка/удаление“, попадаем в список приложений и выбираем нужные базы.

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

Запускаем обработки по расписанию

При работе с большим количеством бухгалтерских баз, некоторые обработки нужно выполнять периодически. Например, раз в месяц или раз в несколько минут. Также важно автоматизировать ручные и типовые операции пользователей. Для этого активно используем регламентные задания.

Обработки, которые будут выполняться по расписанию не имеют формы. Вся логика прописывается в модуле объекта и выглядит следующим образом.



При подготовке комплекта поставки, задаём расписание. Теперь наша обработка будет выполняться каждый час.

Подробнее про расширения конфигурации

Параллельно с внешними отчётами и обработками, которые нужно подготавливать и администрировать “по-старинке“, мы начали активно использовать механизм расширений конфигурации. Начиная с платформы 1С Предприятия 8.3.10, этот механизм достаточно облегчил нашу жизнь и позволил упростить адаптацию конфигураций под особенности Кнопки.

Например, мы писали выше про регламентные операции для исправления документов за роботами, которые запускались раз в 10 минут. Теперь можно с помощью расширения переопределить работу модулей. Таким образом, мы можем сразу, при записи или проведении документа выполнить необходимые действия. Это гораздо оптимальнее, потому что очередь заданий в базе не забивается выполнением действий каждые 10 минут, и оперативнее, так как изменения делаются сразу.

Новое расширение подготовить достаточно просто. Давайте рассмотрим процесс создания расширений на конкретных примерах.
По опыту работы, лидером по запросам на внесение корректировок является печатная форма ТОРГ-12. Например, нам надо сделать расширение для возможности печатать товарную накладную в валюте (по умолчанию она может формироваться только в рублях).
Открываем Меню → Конфигурация → Расширения конфигурации
Создаём новое расширение с назначением “Адаптация“.

Расширение выглядит как привычное дерево конфигурации, но пока без объектов. Первым делом добавим новый макет ТОРГ-12, в который вставили колонки с суммами в валюте.

Поскольку товарная накладная распечатывается из документа “Реализация товаров услуг“, добавим этот документ в наше расширение из основной конфигурации и внесём нужные нам изменения в модуль менеджера. Для этого в контекстном меню реализации выбираем «добавить в расширение».

Теперь можно доработать модуль менеджера реализации. Нам нужно добавить новую форму в список печатных форм и заполнить суммы в валюте.

Для изменения типовых процедур используем аннотацию &После, также нам потребуется пара своих функций и процедура.

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

Аннотации &Перед и &После нельзя применять для функций. Поэтому, если нам необходимо изменить алгоритм функции из основной конфигурации, используем аннотацию &Вместо.

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

Заключение

Существует много различных мнений про использование расширений и внешних отчётов/обработок. Опираясь на наш опыт, мы двумя руками “за“ расширения. Это современная и более адаптивная технология, у нее гораздо больше возможностей, и их публикация в разы проще. В расширение помещается только необходимая часть кода, также отсутствует необходимость дополнительно прописывать процедуры и функции для определения параметров регистрации, следить за версиями и создавать комплект поставки.

Можно использовать несколько расширений для одной области данных.
Для специфики работы 1С Fresh в режиме разделения данных (одна конфигурация, много независимых областей), метод расширений отличный выход.

Оказалась вполне актуальной:)

Ok, давайте сделаем и эти выходные полезными.

Итак, сегодня еще одна тема “прикладной эксплуатации 1C”:

Механизм расширений в платформе 8.3.6

О чем речь?

В платформе 8.3.6 был реализован новый механизм – механизм расширений, облегчающий адаптацию прикладного решения под конкретного заказчика .

При использовании расширений доработка конфигурации осуществляется в новой сущности – расширении конфигурации:

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

Таким образом, заказчик в результате получает возможность доработки конфигурации и одновременно – простое автоматическое обновление .

Чтобы Вы могли разобраться с этим более подробно, публикуем еще несколько видео + PDF по расширениям.

Итак, поехали:

Назначение расширений конфигурации

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

Объекты, которые можно изменять в расширении

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

Работа с расширениями в конфигураторе

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

Заимствование объектов

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

Создание собственных объектов в расширении конфигурации

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

Работа с расширениями в пользовательском режиме

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

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

В этом видео рассматривается, как работать с управляемыми формами в расширении. Отмечается, что исходная форма автоматически не синхронизируется с расширением. Объясняется, как система формирует результирующий внешний вид формы при наличии расширения.

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

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

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