Имя: Пароль:
1C
1С v8
Доработка модуля формы с помощью расширения
0 N-S-B
 
26.03.19
15:51
Необходимо сделать доработку в модуле формы (только доработка кода формы) с помощью расширения.
Вопрос - если поставщик конфигурации изменит саму форму (добавит на нее новый элемент), после типового обновления конфигурации, у пользователя будут видны новые изменения или будет отображаться старая форма из расширения?
Попробовал потестить на пустой конфе, сделал документ и форму, перенес в расширение. Затем в основной конфигурации на форме вывел новый реквизит, в предприятии новый элемент формы отображается, хотя в расширении отображается старая форма без нового элемента.
Но в гугле пишут, что может все поломаться после обновления, то есть пользователь после обновления увидит необновленную старую форму из расширения?
Так как правильно все таки работает этот механизм?
1 palsergeich
 
26.03.19
16:11
(0) может. У Гилева вроде в бесплатных видео это демонстрировалось. А может и в курсе доработки, не помню точно. Но вопроизводится - факт.
Ждём 8.3.15 там это починят.
2 edem911
 
26.03.19
16:14
(0) Если только доработка кода- то слетит в том случае, когда в типовом релизе изменятся (или удалят) имена процедур и функций, которые расширяются.
3 edem911
 
26.03.19
16:19
А что за конфигурация?В типовых управленческих конфигурациях(УТ,КА,ERP) есть модули МодификацииКонфигурации. Мы для своих доработок, когда уже несколько раз обожглись на расширениях для этих конф юзаем такой механизм.
4 ptiz
 
26.03.19
16:21
(0) Из документации:
"34.4.3.4. Построение результирующей формы

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

1. Выполняется объединение расширяемой конфигурации и первого (по порядку регистрации) расширения.

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

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

1. Если изменений нет ‑ компонента берется из расширяемого объекта;

2. Если изменение есть только в расширяемой форме ‑ компонента берется из расширяемой формы;

3. Если изменение есть только в расширяющей форме ‑ компонента берется из расширяющей формы;

4. Если изменение есть и в расширяемой форме и в расширяющих формах ‑ компонента берется из расширяющей формы."

Т.е. если добавлен новый элемент в исходную форму - он попадает под пункт 1.
5 AlvlSpb
 
26.03.19
16:34
(4) а про какую платформу речь в этой документации?
Объясню. Неоднократно сталкивался, что п.2 работает не так как у вас указано. Если кратко, итог объединения конфигурации и нескольких расширений с изменениями в одной и той же форме - это обновления формы в конфигурации (все что поставщик реализовал новое, появляется) и изменения в ПОСЛЕДНЕМ расширении, все остальные изменения в др расширениях затираются. Уже вошло в привычку, надо внести изменение в форму, ищи в существующих расширениях эту форму и если есть такое, объединяй в одно расширение. Возможно прозевал и такое поведение форм исправили в какой-то платформе или все же разработчики выдают желаемое за действительное
6 N-S-B
 
26.03.19
16:35
(3) Знаю про это, но мне необходимо поменять логику у события ПриИзменении элемента формы.
(4) Становится немного понятней, но появились вопросы)
Я нигде не нашел определения что же такое сохраненная форма и откуда она берется? Насколько я понял из экспериментов это форма из основной конфигурации в момент, когда я добавляю ее в расширение. Соответственно не понятно, почему мой случае попадает под пункт 1.
7 ptiz
 
26.03.19
16:38
(6) https://its.1c.ru/db/v8314doc#bookmark:dev:TI000001528
34.4.3.1. Общая информация

При заимствовании формы происходит заимствование только элементов формы. Реквизиты, команды и параметры формы отображаются в редакторе формы расширения, но не являются фактически заимствованными. Заимствованная форма выглядит точно так, как эта форма выглядит в расширяемой конфигурации в момент добавления ее в расширение. Модуль заимствованной формы не содержит никаких методов. В момент добавления конфигуратор «запоминает» добавляемую форму в расширении. В дальнейшем такая форма будет называться сохраненной.
8 AlvlSpb
 
26.03.19
16:59
(6) Если речь только об модификации события одного реквизита, то волноваться нечего. Все вносимые изменения в форму поставщиком, появятся в пользовательском режиме. Расширение может грохнуться только если переименуют/удалят сам реквизит или какие-то элементы участвующие в коде расширения
9 N-S-B
 
26.03.19
17:12
(7) (8) Спасибо, разобрался.
10 Вафель
 
26.03.19
17:14
говорят, что скоро 1с пересмотрит механизм расширения форм