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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

P.S.

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

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

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

  1. ress сказал:

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

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

    (УТ 11.3.1.127)

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

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

  2. maljaev сказал:

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

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

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

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

  3. Alio сказал:

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

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

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

  4. kruglay сказал:

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

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

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

  5. Power_on сказал:

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

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

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

  6. Станислав сказал:

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

    • Татьяна Гужавина сказал:

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

  7. bkmz_1_ сказал:

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

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

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

      • bkmz_1_ сказал:

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

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

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

          • bkmz_1_ сказал:

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

              • Marina_lip48 сказал:

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

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

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

  8. Филимонов Иван сказал:

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

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

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

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

    • Татьяна Гужавина сказал:

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

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

  9. NMarenkova сказал:

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

  10. 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 то расширение не подключится?

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

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

  11. Oleg сказал:

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

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

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

    • Юлия Толстых сказал:

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

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

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

  12. Олег сказал:

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

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

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

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

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

  13. Дмитрий сказал:

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

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

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

    • Насипов Фарит сказал:

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

      • Павел сказал:

        А можно ссылку на курс, в котором рассматривается подробно работа с расширениями конфигурации?

  14. TeMochkiN сказал:

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

  15. Catseye сказал:

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

    • Юлия Толстых сказал:

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

      • Catseye сказал:

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

        • Татьяна Гужавина сказал:

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

  16. Dmitri сказал:

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

    • Юлия Толстых сказал:

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

      • Dmitri сказал:

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

        • Юлия Толстых сказал:

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

  17. Дмитрий сказал:

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

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

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

  18. Евгений сказал:

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

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

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

  19. Евгения сказал:

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

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

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

  20. labamba сказал:

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

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

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

        • Александр сказал:

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

        • Александр сказал:

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

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

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

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