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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

P.S.

  Чтобы освоить разработку интерфейсов и форм в 1С:Предприятие 8.3
  на профессиональном уровне, рекомендуем записаться на курс:

  «Профессиональная разработка интерфейсов и форм в 1С 8.3»

Комментарии / обсуждение (85):

  1. Александр Борисович

    добрый день, перестали запускаться некоторые курсы. Возможно из-за того, что поменял клавиатуру на ноутбуке. Не напомните порядок восстановления? Спасибо

    • Кузьмин Сергей

      Для запуска курса Вам нужно получить новый регистрационный ключ.
      Для этого Вам высылался код активации плеера. Код активации имеет следующий вид – ХХХХ-ХХХХ-ХХХХ-ХХХХ-ХХХХ

      Найти код активации целиком Вы можете в личном кабинете на сайте на вкладке “Мои заказы”

      Далее для активации плеера выполните следующие действия:
      1. Запустите плеер, откройте в нем файл плейлиста (с расширением .xml)
      2. В открывшемся окне не нужно ничего вводить (!), просто нажмите кнопку Активировать.
      3. После этого в Вашем браузере откроется страница с формой активации, которую нужно заполнить и нажать Активировать.

  2. ankonalm

    Здравствуйте!
    Можно ли настройки сделанные в расширении встроить в конфигурацию, естественно не потеряв данные? То есть – удалить расширение, но не потерять функционал, который был в этом расширении?

    • Василий Ханевич

      Добрый день!
      Да, можно. Для этого нужно создать в основной конфигурации структуры данных, аналогичные используемым в расширении. Обработкой или вручную перенести данные из расширения в основную конфигурацию. Также нужно будет перенести весь программный код из расширения в основную конфигурацию, при необходимости адаптировать его (например, в расширении был префикс Расш_, а в основной конфигурации пр_). После протестировать, убедиться, что всё работает корректно, затем окончательно удалить расширение.

  3. ress

    Добрый день!
    Столкнулся со странным поведение расширения на платформе 8.3.9.1850 (без совместимостей).

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

    (УТ 11.3.1.127)

    • Сергей Калинкин

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

  4. maljaev

    Подскажите, как вообще можно посмотреть изменения от основной конфигурации в расширении? Есть расширение конфигурации, в нем уже куча объектов, часть из которых добавлена вручную, часть автоматически добавились. В некоторых из этих объектов произведены изменения: где-то форму поправили, где-то модуль. Остальное наследуется. Как теперь получить список именно изменений? Невозможно же разобраться. Или на каждый чих создавать отдельное расширение и там описывать что к чему? Да даже если и так, как быстро посмотреть какие скажем реквизиты или их события изменены в форме из нескольких сотен реквизитов? Может быть какая-то обработка есть?

    • Сергей Калинкин

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

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

      • maldinitaly

        Есть такая кнопка. в конфигураторе.Выглядит как воронка(отбор).Называется “Измененные и добавленные в расширении”

        • Василий Ханевич

          Добрый день!
          Да, в дереве объектов метаданных для расширения есть кнопка Измененные и добавленные в расширении, которая накладывает фильтр на дерево, оставляет в нем только заимствованные объекты, модифицированные в этом расширении, и новые объекты, созданные в этом расширении. Т.е. убрирает из списка объекты, которые были только заимствованы (например, для отображения форм).
          А вот сравнить объекты расширения и объекты основной конфигурации (чтобы понять, что конкретно изменилось) на сегодняшний день нельзя. Платформа пока не даёт такой возможности.

  5. Alio

    Здравствуйте!
    Не подскажете, что срабатывает раньше: обработчик основной конфигурации или аналогичный обработчик в расширении? Например “ПриСозданииНаСервере” в основной конфигурации или аналогичное событие в расширении?

    • Сергей Калинкин

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

  6. kruglay

    Добрый день!
    спасибо за видео!
    Возникла задача создать “Расширение” программным способом. В платформе есть метод МенеджерРасширенийКонфигурации.Создать() который возвращает РасширениеКонфигурации(Р1). Но затем это Р1 нельзя записать, т.к. свойства Р1 такие как имя, синоним и т.д. редактировать нельзя.
    не сталкивались с подобной задачей?

    • Сергей Калинкин

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

  7. Power_on

    Никто не сталкивался с ситуацией, когда регулярно права на подсистемы из расширений или на объекты из расширений слетают у пользователя?
    Как отследить причину?

    • Сергей Калинкин

      Добрый день! К сожалению, нет. Расширения на текущий момент используются крайне редко.

  8. Станислав

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

    • Татьяна Гужавина

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

  9. bkmz_1_

    Скажите пожалуйста а расширение можно помещать в хранилище? Каким образом над расширением могут одновременно работать несколько человек?

    • Василий Ханевич

      Добрый день!
      Сейчас нет возможности работать с расширением при помощи хранилища. Фирма “1С” рассматривает возможность реализации такого функционала.
      Но для расширения можно производить операции сравнения-объединения с cfe-файлом. Тогда разработчик из нескольких файлов может собрать итоговое расширение, выгрузить его в cfe-файл, передать заказчику.

      • bkmz_1_

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

        • Василий Ханевич

          Добрый день!
          В расширении (например, в расширении формы документа) в конструкторе запроса будут присутствовать таблицы, доступные в самом расширении. Если в расширении пробовать открывать конструктором текст запроса, в котором участвуют таблицы, недоступные в расширении, то такой текст запроса не откроется, появится ошибка. Но при выполнении в режиме “1С:Предприятие” такой запрос отработает корректно, без ошибок. Можно все нужные таблицы добавить в расширение или редактировать текст запроса во внешней обработке или в каком-либо модуле основной конфигурации.

          • bkmz_1_

            Т.е. ошибка у меня возникала потому что не все таблицы к которым я обращался в запросе присутствовали в расширении? Если были бы все то ошибки при повторном открытии не было бы?

              • Marina_lip48

                Подскажите, а если не все таблицы присутствуют в расширении, то сам запрос корректно отработает но просто через конструктор не откроется? У меня проблема со стандартными реквизитами(родитель, владелец,ЭтоГруппа и т.д)

                • Василий Ханевич

                  Да, именно так.
                  Отмечайте в расширении свойства Владельцы, Иерархический как контролируемые. Тогда конструктор будет открываться без ошибок.

                  • Lexx

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

                    • Василий Ханевич

                      Добрый день!
                      Давайте рассмотрим на примере, на пустой базе.

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

  10. Филимонов Иван

    Скажите есть ли какой-то способ следить за изменением материала для тех кто прошел/приобрел курс ранее??? Может реализовать механизм рассылки?

    Например, “Вы прошли курс по …, появились обновленные материалы, вы можете скачать их по ссылке:…”

    тогда и не упустишь ни чего нового. А просматривать все стартовые страницы всех пройденных курсов на предмет “бонусов” слишком утомительно. (Спасибо!)

    Так же хотелось бы попросить решить вопрос с рассылкой по курсам, не раз замечал, что приходит приглашение на курс который я уже проходил – зачем мне о нем сообщают (это касается и всплывающих сообщений на текущем сайте).

    • Татьяна Гужавина

      Доброго дня, Иван!
      < Скажите есть ли какой-то способ следить за изменением материала для тех кто прошел/приобрел курс ранее??? Может реализовать механизм рассылки?
      По всем ключевым обновлениям мы делаем рассылки + публикуем новость на сайте.
      Так, например, в ближайшие дни уйдет рассылка по покупателям курса Подготовка к аттестации по упр. учету в ERP.
      Некритические обновления публикуем только на стартовой странице курса.

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

  11. NMarenkova

    В Видео2 говорится, что сам процесс создания расширений подробно рассматривается в курсе? В каком курсе? Я прошла курс “Профессиональная разработка интерфейсов и форм”, который закончился 04.07.2016, но там не было про расширения. Или я что-то упустила?

  12. bkmz_1_

    Подскажите пожалуйста как использовать расширения если у меня конфигурация Управление торговлей, редакция 11.2 (11.2.3.177) стоит в режиме совместимости 8.3.6. Можно ли снимать с режима совместимости эту типовую конфигурацию чтобы появилась возможность писать расширения? У меня она будет после этого корректно работать? Или этого делать нельзя?

    • Василий Ханевич

      Добрый день!
      При использовании режима совместимости Версия 8.3.6 можно разрабатывать расширения. Изменять режим совместимости не придется.

      • bkmz_1_

        При запуске предприятия выскакивает сообщение: http://prntscr.com/c0mnxi “Ошибка подключения расширения: Расширение1 – Ошибка свойства РежимСовместимости у объект”. Если поставить в “Не использовать” то подключается. Прокомментируйте пожалуйста.

        • Василий Ханевич

          У расширения есть ряд свойств, которые контролируются при подключении расширения. Расширение не подключится, если не совпадут контролируемые свойства. Одно из них – РежимСовместимости:
          Расширение

          • bkmz_1_

            Т.е. если я создал расширение на режиме совместимости 8.3.7 а потом использую его на конфигурации с режимом совместимости 8.3.6 то расширение не подключится?

            • Василий Ханевич

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

  13. Oleg

    Обновили конфигурацию и в новом релизе изменилась форма документа (например 1с добавила какой-то новый реквизит и добавила на форму)которую мы дорабатывали в расширении.
    1. Что будет? нам нужно будет полностью перерисовывать форму в расширении с учетом изменений в новом релизе?
    2. как сравнивать изменившиеся формы с расширением

    • Василий Ханевич

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

    • Юлия Толстых

      Добрый день, Ринат Валерьевич!
      Обновление добавлено в описание (в раздел «Бонусное занятие»).

    • Сергей Калинкин

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

  14. Олег

    по первому видео.
    А почему не за кэшировали контрагента в параметрах сеанса?
    есть мнение что это избавило бы от запроса к SQL.

    • Сергей Калинкин

      Добрый день, Олег! Если использовать кэширование, тогда это действительно избавит от запроса к SQL, но в данной задаче это лишнее.

        • Василий Ханевич

          Добрый день!
          Имеется в виду создать параметр сеанса, сохранить в нем контрагента. И обращаться к параметру сеанса, чтобы не было дополнительных чтений из базы.

  15. Дмитрий

    Обновили конфигурацию и в новом релизе удалили один из использовавшихся реквизитов расширения. Что будет?

    • Сергей Калинкин

      Добрый день, Дмитрий!
      При запуске возникнет ошибка “Ошибка подключения расширения: ХХХХХХХХХХ – Не найден объект ХХХХХХХХ” и расширение не будет подключено.
      Нужно будет изменять расширение. Именно поэтому из расширения я удалял лишние реквизиты.

    • Насипов Фарит

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

  16. TeMochkiN

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

  17. Catseye

    Добрый день! Я прошел курс по интерфейсам и что-то не могу найти тему про расширения! Подскажите в каком занятии разбираются описанные в видео механизмы. Или это в материалах нового потока? Но я ведь тоже хочу!:)

    • Юлия Толстых

      Добрый день!
      Сегодня было опубликовано обновление на странице с материалами – оно доступно в том числе участникам предыдущих потоков.

      • Catseye

        Добрый день! Обещали на начало августа сертификат:) Его ожидать на почту или на сайте где-то есть зал славы?:)

        • Татьяна Гужавина

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

  18. Dmitri

    Добрый день.
    В каком уроке/модуле курса представлена информация из вышеуказанных видео ?

    • Юлия Толстых

      Добрый день, Дмитрий!
      Сегодня было опубликовано обновление на странице с материалами курса.

      • Dmitri

        Видео из добавленных материалов 2016-07-27-Forms-Add-ExtCheck.rar
        некорректно воспроизводится в ускоренном режиме (версия плеера 3.16.0.253 ). Невозможно разобрать о чем рассказывает преподаватель.
        На нормальной скорости таких проблем нет, но , как по мне, в целях экономии времени гораздо удобнее “скоростной режим” воспроизведения.

        • Юлия Толстых

          Добрый день, Дмитрий!
          Спасибо, что сообщили – материалы исправлены.

  19. Дмитрий

    У меня вопрос – для чего в первом видео было добавлено условие проверки на создание путём копирования, и затем проверки на заполнено?
    Если убрать проверку на копирование объекта, то код будет корректно отрабатываться – если при копировании контрагент заполнен, он не будет заполнятся данными из настройки. И наоборот – будет происходить заполнение при пустом поле.

    • Сергей Калинкин

      Добрый день, Дмитрий!
      Я считаю так правильнее, так как когда выполняется копирование документа, пользователь ожидает получить точную копию исходного документа. У вас может быть другая точка зрения. Это нормально.

  20. Евгений

    “Счет на опАлату” немного режет глаза, но ролики просто отличного качества в части подачи материала.

    • Сергей Калинкин

      Евгений, спасибо за внимательность! Видео подправим и скоро обновим.

  21. Евгения

    Хорошо снято, очень легко воспринимается.
    Как мне кажется, как хранилище алгоритмов логичнее использовать модуль менеджера обработки, а не объекта.
    Лучше вписывается в идеологию платформы и чуть-чуть быстрее вызывается.
    Ну и по проверкам логичнее дождаться 8.3.9 и использовать модуль объекта, а не формы.
    Учитывая, что пример расширения почти полностью повторяет мою старую разработку (идея применения расширения и сам принцип хранения данных в настройках пользователя) то думаю, вполне этичным будет добавить тут ссылку на исходный вариант “Проверка ввода данных и события форм без изменения конфигурации”.
    http://infostart.ru/public/359597/
    Насколько я понимаю, она и использовалась как основа.
    Кроме того, она является хорошей иллюстрацией.

    • Сергей Калинкин

      Согласен, в платформе 8.3.9 данный механизм можно реализовать эффективнее. Также согласен, что можно использовать модуль менеджера.

  22. labamba

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

    • Сергей Калинкин

      К сожалению, не тестировал расширения в составе РИБ, поэтому ничего по этой проблеме сказать не могу.

        • Александр

          Подключить расширение к узлу РИБ получилось следующим образом:
          1) отключил подчиненный узел от главного узла (обработки есть в сети)
          2) в конфигураторе добавил расширение
          3) в режиме предприятия восстановил подключение к главному узлу (у меня Розница 2.2 восстановила сама при первом после операции входе)

        • Александр

          Из меню “все функции”стандартные обработки “Управление расширениями конфигурации” всё без проблем загружается, удаляется, обновляется… на подчинённом узле РИБ да и на главном тоже.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

Я подтверждаю, что ознакомлен(а) с Пользовательским соглашением, принимаю его условия и даю свое согласие на обработку моих персональных данных.

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.