Доработка управляемых форм на примере типовой УТ 11 – нюансы расширений



Представьте: Вы доработали форму, потом в новом релизе добавили реквизиты – но они на форме не отображаются!…

Смотрите в Конфигуратор – есть. Видимость, доступность – все Ok.

Тем не менее – на форме новые реквизиты не видно, хотя они есть!

Вот прямо вчерашний пример из комментариев:

Добавили (заимствовали) форму Заказа в расширение. Вывели на заимствованную форму добавленные в расширении реквизиты. Все хорошо…

Выходит новый релиз конфигурации поставщика, где у документа добавлен КакойТоНовыйРеквизит, который выведен на форму документа в конфигурации поставщика.

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

И с этим надо что-то делать:)

На самом деле нет повода для паники :) Нужно просто помнить, как 1С “вычисляет”, что показывать на форме.

Дело в том, что платформа использует сразу 3 формы:

  • Форму из основной конфигурации
  • Сохраненную форму
  • Форму из расширения.

И как они взаимодействуют – мы разберем в новом видео.

12 минут видео, 100% полезности :)

Профессиональная доработка 1С не должна вызывать проблем с обновлениями

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

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

Musthave для внедренцев.

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

  1. Lisss

    Доброго дня. Платформа 8.3.23. Задача: разместить реквизит реквизита на форме. В расширение заимствована форма документа. После добавления в расширение реквизита формы Объект, пропадает возможность разименования реквизитов. Почему так происходит?
    Заранее благодарю за помощь.

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

      Добрый день!
      Это ошибка платформы. На партнерском форуме нашел, что её исправление войдёт в следующие релизы.

  2. Андрей

    Есть добавленная форма в расширение, при обновлении в форму из основной конфигурации добавились новые элементы формы. При нажатии кнопки “Обновить расширение формы” в расширении ни чего не происходит, новые элементы формы не добавляются. Приходится удалять старую форму из расширения, заново добавлять форму в расширение и вносить изменения заново. Релиз платформы 8.3.22.1704, конфигурация Управление холдингом, редакция 3.2 (3.2.3.2)

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

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

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

      • dankrav4

        Здравствуйте.

        Для типовых конфигураций с режимом совместимости с версиями платформы 8.3.21 и выше (в моем случае УТ 11.4.15.49) программное добавление элементов формы в расширении еще актуально? Или проблема с формами при обновлении конфы решена?

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

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

  3. Николай

    Добрый день!
    Добавил в расширение РегистрБухгалтерии в БП 3.
    При обновлении на релиз 3.0.106. все перестало работать.
    При анализе таблиц регистра обнаружил добавленные поля ValueDt1…
    ,которые отсутствовали в старой конфигурации. Каким образом уровнять структуру моего регистра в расширении с типовой конфигурацией? Если создать новое расширение и в нем новый регистр, то все поля создаются. При попытке объединить, создать регистр в старом расширении, все добавленные поля исчезают. Не могу найти решение неделю. Что делать?

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

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

  4. Евгений

    Спасибо за информацию про сохраненную форму, но
    что делать, если в основной конфигурации нет формы, а в расширении добавляю реквизит, создаю форму элемента (пример, справочник производители в конфигурации УТ11.4) в итоге при открытии формы – открывается “почти типовая форма” с типовыми реквизитами, но декоративные элементы (типа надписи или группы) появляются.
    При попытке обратиться к созданному в расширении элементу система выдает ошибку, будто нет такого реквизита (обращался к нему из формы расширения, в правом окне с реквизитами он был, на форме элемент тоже присутствует, но при запуске 1С они все исчезают)

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

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

  5. Алексей

    Добрый день!
    А можно в расширении для формы выбора переопределить ПараметрыВыбора.
    Например изменить параметры выбора для формы выбора договора: “Отбор.ВидДоговора((СПоставщиком, СКомиссионеромНаЗакупку, СФакторинговойКомпанией))” ?

  6. Сергей

    Спасибо за статью! Несколько дней не мог разобраться со странным поведением формы расширения.
    Получилось так:
    Добавил Справочник в расширение – добавил новую Табличную часть – Добавил в расширение заимствованную форму Справочника – на ней, чтобы увидеть добавленную ТЧ, основной реквизит формы Объект добавил в расширение – потом добавил элементы формы, установил пути к данным. Все взлетело. !!!! Заметил, что при нажатии кнопки “Обновить расширение формы” слетают пути к данным и добавленная ТЧ в Объекте формы не отображается, и единственный способ ее туда вернуть – сделать все сначала. Ох эти танцы с бубном!
    Платформа 8.3.15.1700.
    В последней версии вроде исправили. https://bugboard.v8.1c.ru/error/000051765

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

      Добрый день!
      Спасибо.
      Хорошая новость, потому что пути к данным действительно слетают, это мешает использовать расширения на практике.

  7. david89

    Добрый день!

    Платформа 8.3.14. Заимствовал в расширение форму документа РеализацияТоваровУслуг и вывел на форму табличную часть добавленную в основной конфигурации в этот документ. Так вот, нюансов масса: 1) При перетаскивании табличной части из правой части конструктора формы в левую не выскакивает сообщение “Перенести все колонки?”, приходится руками перетаскивать все колонки 2) У такой табличной части почему-то полностью пустой список команд, которые должны отображаться на командной панели и в режиме конфигуратора ни одной стандартной команды на командной панели нет, хотя в пользовательском режиме они появляются 3) У такой табличной части хоть убей нету событий ПриАктивизацииСтроки() и многих других, есть только событие ПриИзменении() и все события связанные с перетаскиванием, все. 4) Самое главное, после какого-то момента, когда на форму была уже выведена добавленная тч из основной конфигурации, любые другие реквизиты объекта или же добавленные реквизиты формы в расширении, на форме в пользовательском режиме не отображаются. При этом в конфигураторе они отображаются и кнопка “Обновить расширение формы” нажималась. Помогите, пожалуйста.

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

      Добрый день!
      1-3. Да, такое поведение воспроизводится и на платформе 8.3.16.
      Можно вот такой способ обхода использовать. В редакторе формы в расширении добавить новый элемент (Ins с клавиатуры или нажать кнопку Добавить), выбрать его тип – Таблица, затем в свойстве ПутьКДанным указать Объект.ИмяТабличнойЧасти.
      После этого система запросит, нужно ли добавить колонки. На командной панели будут отображаться кнопки, а в списке событий – будут доступны все события, в том числе и ПриАктивизацииСтроки.
      4. Тоже встречается такое. По наблюдениям – что-то происходит со свойством ПутьКДанным. Если его перевыбрать у проблемных элементов, они снова начинают отображаться. Еще иногда помогает закрыть конфигуратор, снова открыть, нажать кнопку Обновить расширение формы. Точной закономерности пока не уловил.

  8. Марк

    Здравствуйте!

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

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

      Добрый день!
      У меня воспроизводится подобное поведение, но как-то нестабильно – иногда система может разрешать редактирование имени добавленной в расширении колонки, хотя чаще действительно не дает редактировать.
      Нашел вот такую опубликованную ошибку – https://bugboard.v8.1c.ru/error/000051727
      В расширении конфигурации, в форме, свойства добавленных колонок табличной части объекта не доступны для редактирования.

      Так что попробуйте платформу посвежее использовать.

  9. Елена

    ААААААААААААААААААААААААААААААААА!!!
    О боги… я раз пять то удаляла форму из расширения, то снова добавляла. 1С:Предприятие 8.3 (8.3.14.1854). И все таки мой реквизит ТЧ документа там появился…
    Спасибо за статью и видео – без них я бы не справилась.

  10. Елена

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

    • Ольга Шапкина

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

      • Елена

        Ольга, спасибо за ответ. Да, платформа 8.3.15.
        Мне этот реквизит совсем не нужен (реализовала задачу по другому), и добавляла я только его одного, поэтому вариант, который я написала (удалила сам реквизит “тфПараметрыНазначения” и добавила его в расширение обратно) мне подошёл. Проверила работу в данной форме, вроде ничего не поломалось.
        Конечно, если бы я добавила много реквизитов, а потом захотела бы удалить один, то получается при таком подходе (удалении реквизита и добавлении его обратно) пришлось бы остальные добавленные мной реквизиты обратно добавлять, что не удобно, но всё таки правильней, а вариант с видимостью на мой взгляд не очень корректный, так как вызывает в последующем непонимание зачем был добавлен данный реквизит и наверно затрачивает дополнительный объем памяти.

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

  11. ad82117

    Здравствуйте!
    8.3.14.1779, ЕРП 2.4.8.84
    Такая проблема – есть расширения, в которых не активна кнопка “добавить в расширение”.
    В чём может быть проблема?

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

      Добрый день!
      У меня не воспроизвелось. Возможно, зависит от типа объекта, который Вы пытаетесь добавить в расширение. Или проблема конкретного релиза платформы.

  12. Мустагил

    А как дружит расширение с конвертацией данных? Если я создал расширение, добавил в нём новый реквизит в документ, а потом выгрузил информацию о структуре информационной базы – попадёт туда расширение?

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

      Добрый день!
      В тестовую конфигурацию загрузил расширение, в котором в документе добавил реквизит.
      При помощи обработки MD82Exp.epf из Конвертации данных выгружаю структуру конфигурации в xml-файл. В полученном файле новый реквизит из расширения присутствует.

  13. Леша

    А что если ситуация интереснее?! Вы только добавили реквизиты в только что созданную форму расширения и они не показываются. В чем дело если сохраненная форма не причем?

  14. Денис

    Здравствуйте. Платформа 8.3.14, Добавил в расширение заимствованный объект “ПодразделенияОрганизаций”, добавил в него свой реквизит “GC_Кластер”. Заимстовал форму элемента, пытаюсь вывести на форму добавленный реквизит, но в реквизитах объекта на форме его попросту нет. Раньше вроде бы таких проблем не было, сейчас как то иначе это делается?

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

      Добрый день!
      В конструкторе формы добавляю Объект в расширение:
      Форма
      После этого на форму можно вынести созданный в расширении реквизит:
      Элемент формы

      • Денис

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

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

          1. Взял последнюю на сегодняшний день платформу – 8.3.15.1489.
          Заимствовал форму справочника в расширение, добавил новый реквизит формы. После этого добавил Объект в расширение.
          Реквизит формы остался на месте:
          Форма
          Попробуйте для теста повторить Ваши действия на чистом расширении под свежей версией платформы.

          2. На этой странице нельзя добавлять скриншоты, только на страницах Мастер-группы.

          • Денис

            Недопонимание.
            1. Создаю новое расширение (единственное)
            2. В расширение добавляю заимствованием справочник “Подразделения организаций”, объект и форму объекта
            3. Захожу в расширении в объект “Подразделения организаций” и добавляю в него 2 реквизита – Реквизит1, Реквизит2
            4. Захожу в расширении в форму объекта, нажимаю правой кнопкой мыши по корню “Объект”, жму добавить в расширение (без этого нет возможности вывести на форму добавленные мной реквизиты, см. пункт 3). После данного действия, элементов на заимствованной форме становится раза в 2 меньше чем было до.
            Как мне кажется с формы исчезают элементы, которые не были добавлены заимствованием в расширение. Например есть в реквизитах формы набор записей регистра сведений (типовой реквизит), а сам регистр сведений в расширение я не добавлял. При выполнении вот этого действия (нажимаю правой кнопкой мыши по корню “Объект”, жму добавить в расширение) данный реквизит пропадает с формы в расширении.
            Если в расширении в форме объекта нажать правой кнопкой по корню “Объект” и нажать удалить, а затем обновить форму расширения из конфигурации, реквизит снова появляется на форме.
            5. Если мои догадки и пункта 4 верны, то получается не очень весело, например на форме есть 50 типовых реквизитов, которые ссылаются на разные справочники, регистры сведений, измерения регистров сведений, нужно пройтись по конфигурации и руками подобавлять каждый такой объект в расширение.

            Конфигурация Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.10.50), платформа 8.3.14.1565

            • Денис

              Посидел немного поковырялся еще
              1. Создаю новое расширение (единственное)
              2. В расширение добавляю заимствованием справочник “Подразделения организаций”, объект и форму объекта
              3. Захожу в расширении в объект “Подразделения организаций” и добавляю в него 2 реквизита – Реквизит1, Реквизит2
              4. Захожу в расширении в форму объекта, нажимаю правой кнопкой мыши по корню “Объект”, жму добавить в расширение (без этого нет возможности вывести на форму добавленные мной реквизиты, см. пункт 3). После данного действия, элементов на заимствованной форме становится раза в 2 меньше чем было до.

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

              Например имя реквизита – “ПроцентСевернойНадбавки”, синоним – “% северной надбавки”, нажимаю правой кнопкой мыши по корню “Объект”, жму добавить в расширение, путь к данным слетает, прописываю руками путь к данным, реквизит вновь отображается на форме, но с синонимом “ПроцентСевернойНадбавки”

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

                Вот с такой ситуацией сталкивался, когда ПутьКДанным очищался после заимствования объекта в расширение.
                На партнерском форуме нашел даже ссылку на сайт для публикации ошибок как раз для этого случая:
                https://bugboard.v8.1c.ru/error/000051765.html
                Но никакой конкретики по поводу статуса ошибки, сроков исправления, к сожалению, на этой странице нет.
                Так что остается пока только тестировать на свежих версиях платформы.

  15. andrey1969

    В 1С:Предприятие 8.3 (8.3.14.1694) не работают ваши рекомендация и там нет сохраненной формы или формы расширения
    Механизм конечно хороший, но не доработан еще

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

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

  16. Денис

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

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

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

  17. Александр Безнин

    Занимаюсь доработкой УНФ для металлургического предприятия.
    Потребовалось доработать документ Сборка Запасов, причём существенное различие имеют формы для операции “Сборка” (в моём случае “Плавка”), и “Разборка” (У меня это “Сортировка Сырья”), Кроме этого нужно оставить и базовую функциональность (“Производство”). Хотелось бы сделать ДВЕ заимствованные формы и оставить Форму из базовой конфигурации. Все изменения структуры информации внесены в базовую конфигурацию. В расширении сделал заимствованную форму и переименовал (“ФормаПлавки”), затем сделал копию заимствованной формы в расширении (“ФормаСортировки”), сделал в расширении команды для вызова соответствующих форм …

    Понимаю, что это не единственный путь, подскажите какая дорога ведёт к храму !!!

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

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

  18. vladiplut

    Добрый день.После изучения курса начал применять знания на практике.
    В ЗУП 3.1 была доработана форма документа “ДанныеДляРасчетаЗарплаты”.
    Добавлены пара кнопок с соответствующими процедурами в модуле.
    Форму перенес в расширения и добавил свои процедуры. Проверил: все работает отлично. Затем обновил конфигурацию до последнего релиза.
    Изменения в расширении сохранились, но в результирующей форме моих кнопок не оказалось. Я еще раз пересмотрел это видео, ситуация такая как изложено.Форма поставщика изменилась, есть изменения по сравнению с сохраненной формой и соответственно моих изменений не видно.Я нажимаю кнопку “Обновить расширение формы” чтобы обновить сохраненную форму,но при этом удаляются все сделанные мной доработки в расширении. Я что-то не так делаю? Как обновить сохраненную форму и сохранить свои изменения? Либо каждый раз при изменении формы поставщиком, нужно обновить сохраненную форму и заново вносить в расширение свои изменения?

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

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

      • vladiplut

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

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

          Программный код при этом не пострадает, он останется. А вот элементы формы надо будет создать заново.
          Как вариант обхода – создавать элементы формы программно, тогда сама форма останется типовой.
          Еще можно перед обновлением сохранять расширение в файл, тогда можно будет выполнить сравнение-объединение расширения из базы с расширением из файла, чтобы найти отличия.

  19. solbol

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

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

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

  20. Egor

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

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

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

  21. vasiliev

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

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

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

  22. SkorikA

    Добрый день! После просмотра видео для себя решил что правило “доработка формы только программно” остаётся в силе:) Строка “Элементы.ОсновнойМенеджер.Доступность = Ложь;” в расширении “после” процедуры “ПриСозданииНаСервере” более надёжный вариант.
    Я же правильно понимаю, что она точно никуда не пропадёт при обновлении формы?
    На мой взгляд, в расширениях интерактивно [=быстро] лучше только создавать новые элементы формы – в таком случае минимум шансов поломки при обновлении конфигурации [=изменении формы]. А все изменения заимствованных элементов – программно.

    p.s. Тема интересная. Хотелось бы в перспективе еще и более сложных примеров. Думаю, это будет в курсе. Например: в группу “Группа1” исходной формы в расширении добавили элемент “Кнопка1”. После этого “Группа1” была удалена разработчиками конфигурации из исходной конфигурации при обновлении. Что будет с “Кнопка1” в результате?

    p.s.s. Возможно, в примере выше будет различный результат, в зависимости от того изменялась ли “Группа1” в расширении или нет – надо будет поставить опыт.

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

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

  23. Олег Бляхеров

    Добрый день!
    Все очень обстоятельно объяснили, спасибо!
    Непонятно одно – откуда у разработчиков этого механизма такая, скажем мягко, “странная” логика? Это то, что называется “банановая кожура на асфальте”, – кто-нибудь обязательно да подскользнется… Разбрасывать такие вещи на оживленных перекрестках – ну это, друзья, моветон (чтоб не сказать – “садизм”)!
    Без всего этого можно было бы легко обойтись, как мне кажется.
    При формировании результирующей формы нам нужно понимать, что изменено в форме расширения по сравнению с исходной. Все остальное –
    нужно брать из расширяемой формы, изменено там это до создания расширенной формы или после.
    Т.е., храните только изменения в расширенной форме и будет Вам счастье!
    Кстати, на всякий случай, это не я придумал. Все замечательные штуки 1С с расширениями (очень полезные, правда) – суть эмуляция наследования в методологии объектно-ориентированного программирования. А там, кажется, именно так все и реализуется.

    С уважением.

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

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

      Разработчики платформы на партнерском форуме писали, что “Задача по улучшению ситуации со стабильностью форм к обновлениям у нас записана”. Так что, возможно, что в очередном релизе платформы можно будет ожидать изменений.

      • Олег Бляхеров

        Это хорошо, что “задача записана” :)
        Что касается Вашего примера, то есть две ситуации:
        а) элемент в расширении формы не изменялся – в этом случае он описании расширения храниться вообще не должен, тогда и после удаления его из основной конфигурации нечего проверять и выводиться он не будет
        б) элемент в расширении формы был изменен, тогда при контроле применимости при обновлении разработчику должна быть выдана информация о том, что базовый элемент отсутствует, для принятия мер.
        Наличие сохраненной формы здесь ничем не помогает.

        С уважением.
        Наличие

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

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

  24. ElStar

    Получается, что для того, чтобы применить методику работы с расширением, правильным будет следующий порядок действий:
    1) обновить форму основной конфигурации до типовой;
    2) получить ее в расширение;
    3) в расширении выполнить все доработки, которые были в форме?

  25. Сергей

    А зачем вообще нужна такая сущность как “сохраненная форма”? Форма из расширения должна сравниваться с формой из конфигурации.

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

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

  26. Юрий

    Добрый день!
    Подскажите пожалуйста, описанный механизм формирования результирующей формы относится только к элементам управления или ко всем её компонентам – модуль, реквизиты, команды, параметры?

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

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

  27. Артем Черкасов

    Это ДЕЙСТВИТЕЛЬНО очень НУЖНЫЕ и очень ИНФОРМАТИВНЫЕ 13 минут )))
    Не зря потрачено!
    Всё очень ЁМКО и ПОНЯТНО … как всегда)

    Расширение крутая штука, нереально! Ковыряю их потихонечку
    В данном случае, суть ясна!

    Я думаю что при обновлении основной конфигурации, можно “выкинуть” это в работу, и ждать обратной связи от пользователей)
    Да, жестоко, но зато эффективно )))))))))

  28. nick_krsk

    Получается, что расширения не очень-то и упрощают обновление доработанных форм? Нужно как и раньше анализировать изменения на форме и вносить их?

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

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

  29. Дмитрий

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

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

      Добрый день!
      Тут зависит от объема и характера доработок в конкретной базе. Главная задача расширений – возможность оставить конфигурацию типовой, при этом реализовать дополнительный функционал, необходимый заказчику.
      Типовая конфигурация может обновляться автоматически без нашего участия. А доработанные механизмы необходимо в любом случае проверять, чтобы после обновления ничего не сломалось.
      Думаю, что в платформе еще нет всех механизмов, связанных с использованием расширений, которые необходимы для комфортной работы. Надеюсь, что в следующих релизах платформы появятся инструменты, которые будут помогать в подобных ситуациях. Ведь платформа развивается. Например, в 8.3.12 анонсирована поддержка разработки расширений при помощи хранилища конфигурации.
      Так и здесь – возможно, появится какой-то еще функционал.

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

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

Вход на сайт

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

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

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

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

E-mail или логин

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