1с как добавить форму в расширение

Обновлено: 08.07.2024

Ткните носом, что-то туплю.
1. Перенес справочник в расширение.
2. Добавил реквизит справочника.
3. Перенес форму элемента в расширение.
4. Добавил на форму в расширении поле ввода и указал путь к новому реквизиту.
5. Повесил на форму в расширении событие ПриСозданииНаСервере_После. Не могу обратиться через ЭтаФорма ни к своему элементу, ни к своему реквизиту.
6. Повесил на форму в расширении событие ПриОткрытии_После. Не могу обратиться через ЭтаФорма ни к своему элементу, ни к своему реквизиту.

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

2. Добавил реквизит Объект для заимствованной формы.
Не получается обратиться к добавленному элементу.

(2) В обработчике событий формы не могу обратиться к Элементы.МоеПолеРеквизита.
В обработчике ПриОткрытииПеред нет элемента формы Элементы.МоеПолеРеквизита.
Явно где-то я туплю. Режим совместимости конфигурации и расширения 8.3.12.
Если программно пытаюсь добавить 2 раза Элемент с одинаковым именем, оно дает ошибку.
(8) да (9) пробовал и так, и так.
В какой момент формируется список элементов?
Он видит все элементы конфигурации и не видит элементы расширения (только поля ввода), группы полей расширения видит.

(11) имхо, первая ошибка - режим совместимости блокирует тебе возможности более продвинутых платформ.

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

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

проще или программно добавлять при создании или использовать доп.реквтзиты.
Если реквизит добавить к форме в расширении и привязать к нему элемент, то обращение проходит. Не работает когда путькданным вида "Объект.Реквизит". из-за чего это может быть?
(1) Что значит "добавил реквизит Объект"? Вручную ввел? Или заимствовал?
(0)В структуре реквизитов формы в Объект, если раскрыть его состав, твой реквизит присутствует?
+(18) Скорее всего его там нет, судя по (16). Попробуй тогда на Объект, правой клавишей мыши, Добавить в расширение.
(18) Есть. Более того, в отладчике к реквизиту обратиться можно. А к элементу нельзя.

(20) то, что в отладчике можно - это ни разу не показательно. Отладчик работает в контексте исполнения.
А тебя работа просто в толстом клиенте в конфигураторе, средствами конфигуратора и конструкторами конфигуратора - что-то эти конструкторы видят, что-то не видят.

Что там выше о режимах совместимости установленных для основной базы и для расширения было? 8.3.12 - вроде нормально. Может оно в своих версиях формы запуталось.
Если совсем ничего не понятно, то воспроизвести можно всю нужную последовательность в чистой базе "с нуля".
Т.е. чтоб ошибку диагностировать, нужно ее попытаться воспроизвести. Зачастую в этом воспроизведении выявляются какие-то глюки или фичи неочевидные


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

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

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

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

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

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

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


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

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

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

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

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

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

Извиняюсь, пока писал сам разобрался.

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

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

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

Пожалуйста!
Интересного обучения!

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

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

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

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

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

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

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

После этого на форму можно вынести созданный в расширении реквизит:

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

точно такая же проблема, на 8.3.10, УТ 11.3.4

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

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

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

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

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

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

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

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

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

Я не вижу ссылки на видео, браузер гуглхром

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

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

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

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

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

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

Спасибо, я бы никогда не догадалась))

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

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

Пусть у нас есть справочник Спецификации, подчиненный справочнику Номенклатура:

Создадим расширение конфигурации, заимствуем оба справочника в расширение.
В расширении воспользуемся конструктором запроса. Для справочника Спецификации поле Владелец недоступно:

Теперь отметим для справочника Спецификации свойство Владельцы как контролируемое:

После этого в конструкторе запроса появляется поле Владелец:

На форме объекта в расширении можно отобразить владельца:

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

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

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

Вопрос

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

Взял ЕРП 2.4.7.127. Платформа 8.3.14.1630. Режим совместимости расширения 8.3.12. Добавил расширение (БезопасныйРежим = Ложь). Позаимствовал процедуру ПриСозданииНаСервере() общего модуля МодификацияКонфигурацииПереопределяемый:

В отладчике получаю ошибку “Поле объекта не обнаружено (ОсновнойБанковскийСчет)”.

Ответ тренера

В релизе ERP 2.4.7.127 у справочника Организации нет реквизита ОсновнойБанковскийСчет. Именно поэтому возникает ошибка “Поле объекта не обнаружено (ОсновнойБанковскийСчет)”. В остальном код у вас корректный.

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

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

Уточнение слушателя

ОсновнойБанковскийСчет” – это добавленный реквизит в расширение. Если добавлять реквизит в основной конфигурации, то все работает. Есть возможность вытащить реквизит из расширения?

Уточнение тренера

Вот теперь ошибка не воспроизводится. Взял платформу 8.3.14.1630, релиз ЕРП 2.4.7.127, добавил реквизит “ОсновнойБанковскийСчет” в расширение. Заимствовал процедуру “ПриСозданииНаСервере()” общего модуля МодификацияКонфигурацииПереопределяемый. Код скопировал ваш. Получил результат – в пользовательском режиме на форме появился новый реквизит. Может, что-то еще не указали?

Уточнение слушателя

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

Читайте также: