Форма в расширяемой конфигурации изменена обновить форму в расширении 1с
в расширении относительно формы есть кнопочка "обновить расширение формы", которая "приводит" форму к актуальному виду типовой, сохраняя ваши доработки формы, если они не противоречат логике расположения элементов формы. Свои группы и элементы лучше именовать с префиксом расширения.
Иными словами - это умная кнопка и все сделает по уму, если вы тоже поступили с формой разумно.
(4) Про логику формы если можно расскажите, не в курсе. Про "обновить расширение формы" я в курсе, но если к примеру я разместил 20 групп и 10 элементов на форме как мне угодно, что будет при обновлении? Они то не потеряются полностью, это и понятно (ещё бы), но надо ли мне будет заново их размещать? Насколько я понимаю - да.В режиме 1С:Предприятие происходит формирование результирующего объекта объединением расширяемого и всех расширяющих объектов. Процесс объединения работает следующим образом:
1. Выполняется объединение расширяемой конфигурации и первого (по порядку регистрации) расширения.
В процессе объединения каждой компоненты (элемент, реквизит, параметр или команда) управляемой формы анализируются изменения в расширяемой и расширяющей формах относительно сохраненной. По результатам анализа принимается решение, какая компонента будет отображаться в результирующей форме:
Сопоставление компонентов управляемой формы выполняется по имени соответствующего элемента.
Вышеописанный режим не действует:
1. Для условного оформления. В этом случае происходит объединение элементов условного оформления из расширяемой формы и всех расширяющих форм аналогично тому, как это происходит при объединении конфигураций.
2. Командный интерфейс результирующий формы формируется путем добавления элементов командного интерфейса из расширяющей формы к командному интерфейсу расширяемой формы. При этом возможна ситуация, когда на форме будут несколько команд с одинаковым представлением, т. к. они образованы командами из разных расширений, но с одинаковым представлением.
При определении порядка элементов результирующей управляемой формы вначале определяется возможность расположить элементы без конфликтов размещения. Если такая возможность есть, то порядок элементов результирующей формы определяется следующим образом:
Если без конфликтов порядок определить нельзя, используется следующий алгоритм:
В этой записи подробно разберем использование аннотации &Вместо в общих модулях конфигураций 1С, модулях объектов и их форм. Для начала работы нам потребуется создать расширение конфигурации . Открываем список расширений и добавляем новое расширение. При этом обратите внимание на правильный выбор варианта назначения расширения конфигурации .
Использование аннотации &Вместо в общих модулях
Рассмотрим пример изменения произвольной функции в общем модуле. Совершенно неважно, является функция экспортной или нет. В качестве примера изменим логику функции ДатаСеанса() в модуле ОбщегоНазначенияКлиент (конфигурация Деньги8УчебнаяВерсия). Исходный текст процедуры:
После добавления модуля в расширение его содержимое будет пустым. Теперь Вам нужно перенести текст изменяемой функции или процедуры в расширение. При этом добавим аннотацию &Вместо, в которой укажем имя функции, которую мы заменяем. Также сразу необходимо изменить наименование исходной функции в расширении т.к. это уже будет другая функция, которая будет замещать исходную. Текст замещающей функции будет следующим:
Шаги, которые мы сделали:
- Добавили аннотацию &Вместо и в скобках указали имя заменяемой процедуры/функции.
- Изменили наименование процедуры/функции.
- Изменили логику процедуры/функции на нужную нам.
Все, теперь Вам осталось только обновить конфигурацию базы данных. Теперь при вызове функции ДатаСеанса() вместо нее будет вызвана фукнция ДатаСеансаДоработанная().
Использование аннотации &Вместо в модулях объектов
После добавления расширения открываем модуль объекта справочника Валюты в расширении конфигурации (после включения объекта в расширения он будет пуст). Теперь нам нужно перенести в модуль объекта в расширении изменяемую процедуру:
В результате этих простых действий мы полностью оставили логику процедуры ПриЗаписи из типовой конфигурации и дополнили ее своим кодом. После применения изменений к конфигурации БД при записи валюты будет вызываться процедура ПриЗаписиДоработанная().
Использование аннотации &Вместо в формах объектов
Теперь давайте рассмотрим более подробно переопределение событий элементов формы. Для этого добавим нужную нам форму в расширение конфигурации (в примере будем использовать форму элемента справочника Валюты):
В результате этих действий будет создан новый обработчик события, замещающий аналогичный обработчик в типовой форме:
Всем привет. Имеем некую конфу. В ней - некий общий реквизит.
Подключено расширение. В расширении на формы объектов выводится в том числе тот самый реквизит.
Далее. Произошло обновление конфы, в результате чего состав общего реквизита был изменен. Теперь мне надо обновить состав общего реквизита в расширении и вытащить на формах этот самый общий реквизит там (в формах тех объектов), где он теперь присутствует после обновления.
Ищу в расширении у общего реквизита заветную кнопку "Обновить расширение" - и не могу найти. Открыл в расширении карточку состава общего реквизита. Ищу заветную кнопку. Нету.
Что же, увеличивать состав общего реквизита в расширении вручную, мышкой тыкая в составе в каждый объект, в котором теперь этот реквизит используется?
Или. ?
Вот я и спрашиваю: обновление в расширении автоматизировано таким же образом, как это работает, например, с обновлением в расширении заимствованных форм? Или же следует открыть в расширении состав общего реквизита и вручную по одному добавлять в состав мышкой те документы, которые были туда добавлены.
В режиме предприятие - да. В конфигураторе - нет.
Если посмотреть внимательно, то можно заметить, что в конфигураторе на скриншоте у основного реквизита ("Объект") заимствованной формы документа Документ2 в расширении нет реквизита ОбщийРеквизит1, хотя после "обновления" конфигурации Документ2 уже присутствует в составе объектов, для которых включено использование этого общего реквизита.
Это значит, что хотя в режиме предприятие в итоге у Объект'а (основного реквизита формы документа Документ2) уже будет среди реквизитов ОбщийРеквизит1, в режиме конфигуратора вытащить этот реквизит на форму не получится. В этом-то и сабж.
Поэтому все же надо как-то обновить состав общего реквизита в расширении. Тем более надо было бы, если бы для состава была включена проверка значения при подключении. Само оно не подтянется. Следовательно, либо мы нажимаем кнопку автоматического обновления в расширении всех свойств общего реквизита (в т.ч. состава) - если, конечно, такая кнопка существует, либо мы пыркаем каждый документ, добавленный в состав, вручную мышкой.
На днях вышла тестовая Бухгалтерия Предприятия с отключенным режимом совместимости с платформой 8.3.6.
А значит в этой версии используется новый движок, который по-новому отрисовывает формы.
Прочитать про это можно в Вместе с типовыми на новую платформу следует переделывать и свои расширения.
В процессе перевода сформировал для себя небольшой чек-лист или памятку о том, что нужно сделать.
Памятка:
1. Переводим расширение на новую платформу
Для этого следует привести режим совместимости расширения к режиму совместимости конфигурации.
В версии Бухгалтерия Предприятия установлены следующие свойства:
В расширении можно установить точно такие же свойства или снять все флажки.
Отсутствие флажков означает, что расширение не будет проверять эти свойства при подключении.
То если эти свойства изменятся в основной конфигурации, то расширение все равно запуститься:
2. Устраняем проблемы подключения
Для этого запускаем конфигурацию в режиме предприятия и смотрим взлетело или нет.
Ошибки, из-за которых не удалось подключить расширение, можно посмотреть в журнале регистрации
(Администрирование - Поддержка и обслуживание - Журнал регистрации)
Нас интересуют события - “Сеанс. Ошибка применения расширения конфигурации”:
Чаще всего проблема подключения решается удалением лишнего реквизита или объекта.
Основная сложность в том, что расширение не выдает сразу все ошибки (кстати, эта
3. Обновляем формы в расширении
Для этого в каждой измененной форме нажимаем на “Обновить расширение формы”
С помощью этой команды мы заново подгружаем форму основной конфигурации в расширение.
В принципе работать будет и без этого, но это нужно для того, чтобы в расширении форма выглядела также как и в основной конфигурации.
В версии 3.0.44 практически все формы подверглись изменениям, поэтому хорошо бы и в расширение подтянуть эти изменения.
4. Приводим форму к правилам нового движка.
- Убираем все декорации, которые использовались для отступов.
Вместо них теперь используются группы. - Смотрим, что все выглядит хорошо.
Если что-то пошло не так, то смотрим статью.
Если все хорошо, то двигаемся дальше. - Проверяем новые свойства платформы “Объединенная”, “АвтомаксимальнаяШирина” и “АвтомаксимальнаяВысота”.
Просто смотрим, что в этих свойства установлены умолчания платформы и форма из-за этого не разъезжается.
5. Проверяем расширение в режиме предприятия
Запускаем конфигурацию и радуемся тому, что все стало хорошо.
Полезные материалы по теме:
Специальные предложения
(2) Alex_E, это я-то не умею? Смешно. Я одним из первых, смею надеяться, занялся глубоким и всесторонним изучением этого уродства. Ибо наивно полагал, что какая-то польза всё ж будет. А потом я, знаешь ли, даже публикацию накатал о некоторых нюансах расширений. А потом эксплуатация показала, что более кривой и ненадёжной хрени в 1С трудно отыскать. И я вынужден был у трёх клиентов отказаться от расширений и перейти к нормальной куроченной конфе. И это было хотя бы прозрачно, однозначно и стабильно.
Так что всем минуснувшим мою реплику - ребятки, вы просто ещё не встали как следует на эти грабли. Встанете - будет вам урок)
(7) Yashazz, Я не минусовал, расширения использую со дня их появления, публикации то же есть, с что нравится и что нет на тот момент, и ни в одной конторе, где их использовал не отказался - вот такие мы разные, прикинь :-) (и во всех бухгалтериях сразу ставлю отключение регламента и пр. через расширение сразу - закрывать всякие окошки с "а Вы знаете. " хотца нет :-) Это пустяк, конечно, но решается через расширение на счет раз) (8) Alex_E, а что Вы будите делать, когда вызов открытия этих окошек переедет в другой модуль?т.к. при обновлении Вы проблем не знаете, то Вы даже не узнаете, что эти вызовы исчезли в одном модуле и появились в другом. (9) monkbest, вообще-то это вызовет ошибку - 1С таки бейсик - компилируется по мере открытия. А вы в продакшн без тестирование всё вываливаете? Я вот проверять пытаюсь. (1) Yashazz, с каждой версией платформы они расширяют возможности этого механизма, как по мне, это явно лучше чем "ломать" конфигурацию. (3) Solovyeff, пока не будет возможности переопределять любые модули и добавлять свои модули, к сожалению только расширениями не всегда можно обойтись (4) baracuda, в 8.3.9 реализовано, осталось подождать выхода версии платформы. (1) прошло 5 лет, все поменялось. Вы бы подписались сегодня пож этими словами? (13) Однозначно подписался бы. Я уже давно махнул рукой и не коллекционирую баги расширений, но они всё столь же грубые, критичные и опасные, даже ещё хуже кое-где стало. В некоторых случаях падают Предприятие или Конфигуратор, в некоторых теряются или искажаются данные, а уж мелких милых косячков не счесть. Я ж постоянно с расширениями дело имею, к сожалению. Я ж постоянно с расширениями дело имею, к сожалению. Так баги не только из-за них - в самой платформе их тоже хватает. Но расширения помогают быстро "и без дополнительной возни в гиперпространстве" сделать простые и нужные штуковины, не особо напрягаясь. Так что, имхо, Вы тут зря мнение не поменяли. Видел ситуации, когда даже внешняя обработка приводила к падению системы - я вот их использую, и расширения (хоть и меньше). Что, от обоих отказаться и только в конфигураторе пилить? )))
(15) С внешками даже после замутов с профилями безопасности и "защитой от опасных действий" на порядок меньше проблем и больше стабильности, чем с расширениями. А расширения - моё мнение такое: если надо слегка изменить/добавить форму, то можно. Во всех остальных случаях - ни-ни.
Из недавнего: делаю я, значит, расширение для БП, в рамках общеизвестного 534 новые СчФ и УПД. Заимствую из конфы макет 1137, и макет 981. Дорабатываю код. Запускаю: макет 981 видит, про 1137 говорит, что такого нету. Вот нет такого общего макета, совсем. Метод "ПолучитьОбщийМакет" даёт невосстановимую ошибку. Ладно, работаю с тем, что есть. Спустя часа полтора работы понадобилось мне обновить в расширении 981-й, жму "Добавить в расширение", он меня спрашивает, обновить ли в расширении, иии. и конфигуратор тихо рушится. Ситуация воссоздаваемая, пятый раз я ронял конфигуратор, уже показывая этот "эффект" в Энидеске заказчику, который спросил, фигли так долго.
Кончилось тем, что тупо добавил в расширении свои макеты-копии типовых. И что, это называется стабильная работа? Когда бишь макеты-то в расширениях появились. Ладно, я молчу, что мало кто копал, как именно они "расширяются" и как себя ведёт наследование а) именованных областей, б) примечаний, в) внедрённых объектов, типа компоненты штрихкода, г) элементов управления. Да, мало кто это знает.
Но сам факт таких косяков, и невозможности выполнить вроде бы простую и давно якобы работающую операцию - характеризует.
Один раз с этим столкнулся - просто просят иногда ерундой страдануть. Там очень древняя УТ (10.3.27, сейчас вроде уже 90-я). Да, в таком случае просто скопировал макет, добавил в него строку с документом реализации и поправил колонки (очень классное сочетание клавиш Ctrl + M - пользуйтесь) - 10 минут дел в конфигураторе, + 3 минуты на условие 01-07-2021. Скука ))(17) Мне ещё параллельно надо было другие старые доработки сохранить, они ранее были в ВПФ, меня попросили, раз уж так, загнать всё в расширение. Там слегка нетипично второстепенные поля СчФ формируются, основная фишка вообще не в макетах была.
Ах да, у заимствованных макетов не все изменения свойств объединённых ячеек применяются. А иногда она в конфигураторе объединённая, а в предприятии оказывается первая-одиночная, и спасает только программно Объединить() ещё раз. От так.
Читайте также: