1с в расширении недоступны реквизиты формы

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

news 2017 11 24 top scheme min

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

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

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

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

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

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

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

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

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

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

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

1C Ext %D0%A4%D0%BE%D1%80%D0%BC%D1%8B620%D1%85349 min

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

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

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

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

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

1418419795 bpfull

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

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

1431426646 bpfull

Алексей, хорошо – бывает :)

1418419795 bpfull

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

1418419795 bpfull

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

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

1418419795 bpfull

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

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

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

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

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

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

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

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

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

1418419795 bpfull

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

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

1418419795 bpfull

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

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

1418419795 bpfull

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

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

1418419795 bpfull

Добрый день!
В конструкторе формы добавляю Объект в расширение:
2019 06 27 13 26 36
После этого на форму можно вынести созданный в расширении реквизит:
2019 06 27 13 28 52

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

1418419795 bpfull

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

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 меньше чем было до.

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

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

Источник

[ Вопрос дня ] Почему не доступны стандартные реквизиты объектов в конструкторе запросов в расширении?

Доброго дня, коллеги!

А вы теряли стандартные реквизиты в конструкторе запросов в расширении? Сколько времени ушло на поиск решения проблемы? А наш слушатель получил ответ оперативно. Теперь данной хитростью делимся с вами! Безвозмездно :)

Вопрос

Ответ

Добрый день! Нужно в расширении указать, что этот справочник является иерархическим (то есть указать в расширении свойство Иерархический как контролируемое):

EventSubscriptions254 pic01 min

Тогда конструктор запроса покажет поле ЭтоГруппа.

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

EventSubscriptions254 pic02 min

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

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

EventSubscriptions254 pic03 min

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

EventSubscriptions254 pic04 min

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

EventSubscriptions254 pic05 min

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

Источник

Реквизиты в расширении и изменение формы.

А что, там все так печально сейчас? Расширения же еще с бородатых 8.3.6 (а может и раньше) платформ ввели

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

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

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

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

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

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

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

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

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

Сопоставление компонентов управляемой формы выполняется по имени соответствующего элемента.

Вышеописанный режим не действует:

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

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

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

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

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

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

Если без конфликтов порядок определить нельзя, используется следующий алгоритм:

● Исходным выступает список элементов расширения в порядке, который установлен в расширении.

● Для определения положения элемента, добавленного в основной конфигурации, находится элемент, существующий в сохраненной конфигурации и расположенный перед добавленным элементом (в порядке основной конфигурации):

● В соответствии с порядком элементов в расширении, определяется, какой элемент является следующим ‑ существовавший или добавленный в расширении:

● Если существовавший, то элемент основной конфигурации добавляется после найденного элемента.

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

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

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

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

● Новые элементы основной конфигурации, добавленные в конец списка, добавляются перед новыми элементами расширения, добавленными в конец списка.

● Если при добавлении оказывается, что элемент уже был добавлен расширением, то такой элемент пропускается.

● Удаляются элементы, которые были удалены в основной конфигурации по сравнению с сохраненной версией.

Источник

Как обращаться к добавленным реквизитам в расширении

если платформа 8.0, то никак

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

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

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

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

При расширении методов из любых модулей, кроме модулей форм, происходит следующее:

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

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

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

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

Источник

Адаптация расширений конфигурации

Проверяем возможность применения расширений конфигурации

Открываем конфигуратор и переходим к списку расширений конфигурации: Конфигурация => Расширения конфигурации. В списке расширений проверяем возможность применения всех расширений конфигурации: Действия => Проверка возможности применения расширений конфигурации.

Adaptatsiya rasshireniya konfiguratsii proverka primeneniya

Если в процессе проверки расширений конфигурации обнаружены ошибки — их обязательно необходимо устранить. Иначе расширения, в которых обнаружены ошибки, при запуске 1С:Предприятие не будут использоваться.

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

Обновляем режим совместимости расширения конфигурации

Adaptatsiya rasshireniya konfiguratsii rezhim sovmestimosti

Еще лучшим решением будет снятие контроля за режимом совместимости (система перестанет контролировать это свойство):

Adaptatsiya rasshireniya konfiguratsii otklyuchaem kontrol za rezhimom sovmestimosti

Исправляем ошибки изменения свойств объектов и их реквизитов

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

Adaptatsiya rasshireniya konfiguratsii kontrol tipa rekvizita

Если в исходной конфигурации тип этого реквизита изменится — расширение не будет применено и возникнет ошибка «Значение контролируемого свойства Тип у объекта не совпадает со значением в расширяемой конфигурации». Для исправления этой ошибки можно снять галочку контроля типа реквизита или установить верный тип для реквизита. Для этого в основной конфигурации находим объект, которому принадлежит реквизит и запоминаем его тип. Далее переходим в расширение и устанавливаем верный тип для реквизита.

Аналогичный подход можно применять для всех свойств объектов и их реквизитов.

Обновляем формы в расширении конфигурации

При переходе на новую версию типовой конфигурации могут измениться формы, которые используются в расширении конфигурации. В платформе предусмотрен механизм быстрого обновления добавленных в расширение форм. Для начала, отобразим в дереве конфигурации расширения только измененные объекты — Действия => Измененные и добавленные в расширении:

Adaptatsiya rasshireniya konfiguratsii izmenennye obekty

Далее открываем нужную форму и нажимаем на кнопку «Обновить расширение формы»:

Adaptatsiya rasshireniya konfiguratsii obnovlenie formy

Переход на платформу 8.3.14 (и выше) и пересоздание расширения конфигурации

Фирма 1С с каждым релизом платформы развивает механизм расширений. Поэтому все расширения можно условно разделять на актуальные и устаревшие. Термин «устаревшие» означает устаревание внутренней структуры расширения относительно последних версий платформ. Первые расширения требовали включения в состав расширения большого количества объектов типовой конфигурации. Это означало, что очень часто такие расширения надо обновлять при обновлении типовой конфигурации. В версиях платформы 8.3.14 и выше добавлены механизмы, благодаря которым в расширение не нужно добавлять все объекты — фактически описываются и захватываются только нужные для доработки объекты типовой конфигурации. Поэтому если у Вас было разработано расширение на платформе 8.3.10 — 8.3.13 — его желательно переработать под актуальные версии платформы.

Если не получилось исправить ошибки?

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

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с в печатной форме убрать префикс в
  • 1с в декларации должен быть заполнен раздел 9