Режим совместимости расширения конфигурации больше. Расширения конфигураций – как добавить функционал в типовую конфигурацию, не снимая с поддержки (20 минут видео)

31.10.2021

Тема «аккуратной» доработки типовых конфигураций является всегда актуальной.

С помощью расширений появляется возможность вносить доработки, оставляя конфигурации БЕЗ изменений (то есть не снимая «с замка» ).

В качестве примера мы расширим функционал типовой “1С:Бухгалтерии 8” – добавим проверки на заполненность реквизитов документов. В результате система будет выдавать диагностику, если реквизиты заполнены “неправильными” значениями.

Буквально за 15 минут Вы научитесь приемам, которые сможете использовать для решения разных задач.

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

Мечты о собственной нетленке могут стать реальностью:)

Итак, приступаем:

Видео 1. Приемы работы с расширениями – на примере “1С:Бухгалтерии 8”

Изучив видео, Вы научитесь:

  • Создавать и подключать расширения к конфигурации
  • Выполнять отладку расширений
  • Дорабатывать типовые формы обработок/документов с помощью расширений
  • Перехватывать события форм типовой конфигурации
  • Хранить данные не в таблицах ИБ (хранилище настроек)
  • Использовать обработки как хранилище алгоритмов

Также мы разберем оптимизацию состава объектов расширений и ограничения расширений в текущих релизах платформы.

Видео 2. Создание универсальных механизмов с помощью расширений

В этом видео мы покажем:

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

Всем привет!

Замечательная конфигурация 1С "БИТ:Управление медицинским центром" вплоть до релиза 2.0.28.3 в логике своей работы имеет пару досадных неточностей, не позволяющих основательно получать удовольствие от её использования.

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

Проблема №1. Не проставляются цены на работы в документе "Оказание услуг".

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

Если ЗначениеЗаполнено(ЕдиницаИзмерения) Тогда СтруктураОтбора.Вставить("ЕдиницаИзмерения",ЕдиницаИзмерения); Иначе СтруктураОтбора.Вставить("ЕдиницаИзмерения",Справочники.ЕдиницыИзмерения.ПустаяСсылка()); КонецЕсли;

Вот здесь, на мой взгляд, применено крайне неверное решение: при нормальных условиях в измерении "ЕдиницаИзмерения" регистра "Цены номенклатуры" никак не могут оказаться пустые ссылки. Скорее там будут ссылки на элементы справочника "Единицы измерения" из реквизитов "ЕдиницаТоваров" соответствующих номенклатур. Используем же их скорее:

Если ЗначениеЗаполнено(ЕдиницаИзмерения) Тогда СтруктураОтбора.Вставить("ЕдиницаИзмерения",ЕдиницаИзмерения); Иначе Если ТипЗнч(Номенклатура) = Тип("СправочникСсылка.Номенклатура") Тогда СтруктураОтбора.Вставить("ЕдиницаИзмерения",Номенклатура.ЕдиницаТоваров); КонецЕсли; КонецЕсли;

Варианты решения:
а) непосредственное изменение кода конфигурации;
б) создание расширения: проблемную функцию помещаем "вместо" исходной, меняем код.

Проблема №2. Не совсем работают внешние печатные формы с видом использования "ВызовКлиентскогоМетода".

Во-первых, форма внешней обработки должна называться "Форма1". Да. Именно так.

Во-вторых, в модуле объекта обработки должна находиться функция:

Функция РежимЗапускаКлиент() Экспорт Возврат Истина; КонецФункции

Тоже так надо.

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

Варианты решения:
а) добавить строки:

после строки

Форма = ПолучитьФорму("ВнешняяОбработка."+Рез+".Форма.Форма1");

в функции "НапечататьВнешнююФормуСПроверкойРежимаКлиент" общего модуля "ПечатьДокументовКлиент"

б) вынести всё это дело в расширение.

Сложности в применении расширений.

На данный момент используем платформу 8.3.10.2505.

Рассматриваемая конфигурация имеет режим совместимости "Версия 8.3.6". Не зря, конечно.

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

Вот тут-то и начинаются поводные камни:

  • директиву &Вместо("ПолучитьЦену"), поддерживаемую платформой 8.3.10, не даёт использовать режим совместимости;
  • метод "УстановитьВыполнениеОбработчиковСобытия" из платформы 8.3.6 вызывает бурную реакцию платформы 8.3.10 типа: "Переопределение свойств заимствованных объектов в расширениях недопустимо в режиме совместимости 8.3.8 и ниже".

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

В списке файлов три расширения, решающие проблемы с внешней печатной формой, ценами и ошибками при закрытии форм и приложения в конфигурации 1С: "БИТ:Управление медицинским центром" релиза 2.0.28.3.

В данной статье предлагаю рассмотреть, что такое «расширение конфигурации», как добавить расширение или же отключить его. Начиная с версии 1C 8.3.6.1977 в платформе введен новый механизм – расширения конфигурации. Сначала немного теории.

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

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

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

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

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

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

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

Видео — расширения в 1С за 45 минут

Получите 267 видеоуроков по 1С бесплатно:

Пример добавления расширения в 1С

Чтобы показать, что такое расширение, лучше привести пример его создания в конфигураторе 1С.

В конфигураторе зайдем в меню «Конфигурация» и выберем пункт «Расширения конфигурации». Откроется окно со списком расширений (если они есть). Нажмем кнопку «Добавить» и добавим новое расширение. Теперь можно открыть конфигурацию расширения:

Как видно, конфигурация расширения имеет точно такую же структуру, как и основная. Только она изначально совершенно чистая, без объектов.

Недавно я писал статью о том, как самим сделать . На её примере я хочу сделать ее встроенной при помощи расширения.

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

Поэтому справочник мы позаимствуем из основной конфигурации:

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

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

Вот такая структура у меня получилась:

Посмотрим, что у нас получилось. Обновляем конфигурацию базы данных и запускаем программу в режиме 1C: Предприятие, и идем в меню «Администрирование». Да, чуть не забыл, конфигурацию расширения необходимо закрыть, иначе программа не запустится:

Коллеги, всем здравствуйте.

На днях вышла тестовая Бухгалтерия Предприятия с отключенным режимом совместимости с платформой 8.3.6.
А значит в этой версии используется новый движок, который по-новому отрисовывает формы.
Прочитать про это можно в Зазеркалье .

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

Памятка:


1. Переводим расширение на новую платформу

Для этого следует привести режим совместимости расширения к режиму совместимости конфигурации.
В версии Бухгалтерия Предприятия установлены следующие свойства:

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


2. Устраняем проблемы подключения

Для этого запускаем конфигурацию в режиме предприятия и смотрим взлетело или нет.
Ошибки, из-за которых не удалось подключить расширение, можно посмотреть в журнале регистрации
(Администрирование - Поддержка и обслуживание - Журнал регистрации)
Нас интересуют события - “Сеанс. Ошибка применения расширения конфигурации”:

Чаще всего проблема подключения решается удалением лишнего реквизита или объекта.

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



3. Обновляем формы в расширении

Для этого в каждой измененной форме нажимаем на “Обновить расширение формы”
С помощью этой команды мы заново подгружаем форму основной конфигурации в расширение.

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


4. Приводим форму к правилам нового движка.

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

Я составил следующий порядок действий:

  • Убираем все декорации , которые использовались для отступов.
    Вместо них теперь используются группы.
  • Смотрим, что все выглядит хорошо .
    Если что-то пошло не так, то смотрим статью.
    Если все хорошо, то двигаемся дальше.
  • Проверяем новые свойства платформы “Объединенная”, “АвтомаксимальнаяШирина” и “АвтомаксимальнаяВысота”.
    Просто смотрим, что в этих свойства установлены умолчания платформы и форма из-за этого не разъезжается.

Мы выпустили новый релиз панели телефонии для 1С.

  • версия 1.2.24.10 для обычного приложения
  • версия 1.4.26.17 для управляемого приложения

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

Преимущества использования расширения

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

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

Особенности встраивания панели телефонии для 1С

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

2) В основную конфигурацию мы добавляем роль МИКО_Софтфон , для которой мы снимаем все права.

При добавлении нового объекта метаданных, в данном случае роли, необходимо обновление справочника ИдентификаторыОбъектаМетаданных . Когда мы добавляли эту роль в расширение, то типовые конфигурации игнорировали её, то есть при обновлении справочника ИдентификаторыОбъектаМетаданных роль в нём не появлялась. Из-за этого некорректно работал механизм профилей настроек панели телефонии, возникала ошибка: "Не найден идентификатор объекта метаданных для роли МИКО_Софтфон ".

Причем данная ситуация возникала не во всех конфигурациях, так в "Управление торговлей, 11.2.3.218" и "Комплексная автоматизация, 2.0.3.222" проблем с ролью не было, когда она была добавлена в само расширение. Чтобы обеспечить некую универсальность предлагаемого нами решения и гарантировать бесперебойную работу в большинстве поддерживаемых нами конфигураций, мы решили добавлять роль МИКО_софтфон в основную конфигурацию и заимствовать её в расширении, а уже в расширении реализовать настройки данной роли.

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

Резюмируем

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

Инструкции по встраиванию панели телефонии для 1С с помощью механизма расширений находятся .

Задавайте свои вопросы через форму обратной связи .

© 2019. MIKO LLC All Rights Reserved.