В расширении не добавляется реквизит на форму

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

Я
   Капитан Джек Воробей

27.11.19 — 16:12

Доброго времени суток.

Есть конфигурация ут 11 + расширение

1)Добавляю реквизит ссылочного типа в реквизиты документа в расширение.

2)добавляю форму через «Добавить в расширение»

3)Захожу в реквизиты формы и не вижу в объектах своего реквизита, соответственно я не могу его добавить на форму…

Вопрос: как вытянуть добавленный реквизит в расширении, на форму?

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

Режим совместимости Версия 8.3.12

1С:Предприятие 8.3 (8.3.14.1694)

11 (11.4.10.62)

  

Партнерская программа EFSOL Oblako

   EVGA

1 — 27.11.19 — 16:15

а объект на который ссылается этот реквизит у тебя в расширение перенесен?

   Капитан Джек Воробей

2 — 27.11.19 — 16:15

(1) Да конечно

   unenu

3 — 27.11.19 — 16:16

(2) думаю вы не верно поняли вопрос и дали не верный ответ

   EVGA

4 — 27.11.19 — 16:19

вечно с этими реквизитами реквизитами на формах в расширении бардак, потом гадай откуда они и где их искать)) особенно интересно когда расширений несколько

   Капитан Джек Воробей

5 — 27.11.19 — 16:22

(4) Это да) но сейчас ни одного не добавить странно… думаю через доп сведения зайти, если в расширении не решиться ну или программно, но хотел через расширение.

   EVGA

6 — 27.11.19 — 16:26

(5) да ну, все там работать должно.

давай по порядку:

1) добавил реквизит в основной конфе (например СправочникСсылка.ТотСамыйСправочник)

2) перенес его в расширение

3) перенес в расширение весь ТоСамыйСправочник

4) перенес в расширение Форму Документа !!!

5) на форме в Объект.???НетуТогоСамогоРеквизита

Все так?

   Капитан Джек Воробей

7 — 27.11.19 — 16:30

(6) Нет

1) добавил реквизит в расширении (Документ.перемещение —- реквизит Контрагент)

   EVGA

8 — 27.11.19 — 16:35

Как? ты не добавлял реквизит в основной конфе?

   runoff_runoff

9 — 27.11.19 — 16:43

Объект : Добавить в расширение

переоткрыть заимствованную форму

   aleks_default

10 — 27.11.19 — 16:51

(9)да уж, переоткрыть форму это так неочевидно

   aleks_default

11 — 27.11.19 — 16:52

(10)+ и банально

   Капитан Джек Воробей

12 — 27.11.19 — 16:57

(8) Зачем бы я мучался с расширением, если можно добавить в основную?

(9)и переоткрывал и передобавлял форму результата нет…

   EVGA

13 — 27.11.19 — 16:58

(12) хмм ну я даже не знаю, может быть потому что так расширение не работает…

   Капитан Джек Воробей

14 — 27.11.19 — 17:02

   RomanYS

15 — 27.11.19 — 17:03

(14) ткни ПКМ на Объект в правой части

   runoff_runoff

16 — 27.11.19 — 17:04

(15) Объект блеклого цвета, видно, что афтор не выполнил приказ из (9)

   Andreyyy

17 — 27.11.19 — 17:10

(16) А что значит «переоткрыть заимствованную форму» ?

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

   Andreyyy

18 — 27.11.19 — 17:17

(17) Работает ! В правой части Объект, Динамический список, Реквизиты необходимо правой кнопкой мыши и добавить в расширение.

Смущает, что такой процедуры с другой формой не проводил, а оно само добавилось.

   EVGA

19 — 27.11.19 — 17:20

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

   Капитан Джек Воробей

20 — 27.11.19 — 17:21

(15) ты имеешь ввиду подтянуть объект через ПКМ «Добавить в расширение» ? но оно тянет все реквизиты + ссылки по ним что получается очень объемно…

Если просто добавить реквизит, то он остается на клиенте и к нему не обратится на сервере…

   RomanYS

21 — 27.11.19 — 17:24

(20) ты уж определись что тебе надо

   EVGA

22 — 27.11.19 — 17:25

(20) а что такого страшного в том, что тащится объектов вагон и маленькая тележка? если их не трогать в расширении больше то ни на что и не повлияет?))

   Капитан Джек Воробей

23 — 27.11.19 — 17:43

(22) С одной стороны да, но с другой стороны, это влияет на производительность…

(21) Ну чтобы было красиво и эффективно)

   hhhh

24 — 27.11.19 — 17:46

(23) тогда добавь реквизит в основную конфу. Это сразу увеличит производительность в 2 раза. Сразу в 2 раза меньше таблиц, чем с расширением.

   RomanYS

25 — 27.11.19 — 17:48

(23) производительность, красиво, эффективно… может это не про расширения

   Капитан Джек Воробей

26 — 27.11.19 — 17:51

(24) (25) Да согласен, но на ней такой красивый замочек) вот думаю, как это решить малой кровью…

  

EVGA

27 — 27.11.19 — 17:58

Снять замочек религия не позволяет)))

Skip to content

1С, как добавить, изменить реквизит формы объекта через расширение

Как добавить, изменить реквизит формы через расширение

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

Вам необходимо выполнить следующие действия:

  • В дереве метаданных нажать правой кнопкой мыши на реквизит -> «Добавить в расширение» -> выбрать расширение;

  • Перейти в расширение конфигурации, открыть форму, в которую планируем добавить (или изменить) реквизит -> в области справа выделить реквизит -> нажать правую кнопку мыши -> «Добавить реквизит»;

Почему в новой платформе изменился данный механизм?

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

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

Связанные статьи

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Или не туда тыкаю или не тем. Почему то у наследованного объекта не дает создать новый реквизит, а лишь форму менять и модули. А так совсем не комильфо. Хочу чтоб отдельное коробочное расширение, которое каждая бабушка могла насадить в режиме предприятия на БП30 и вуаля — отраслевой продукт. Разве не в этом конечный смысл?

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

Лень сейчас искать, но 1с писала. что расширения — не для выпуска отраслевых предназначены, а для доработки при внедрении.

Обработку можно положить в расширение ))

И да, реквизиты менять нельзя. Зайди хотябы на ИТС:

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

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

скучно тогда. все ради того чтобы цвет у формы поменять

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

вмешиваться в метаданные дадут не скоро, а скорей всего вообще не дадут, ибо начнется адъ и хаос. не только. мысли шире — расШИРения жеж) обработок напихал и профит!

>> Расширение не дает добавить свой реквизит. Так и надо? Да. И так будет всегда. (во всяком случае пока). >> кроме расширения надо вкладывать в коробку обработку по созданию таких доп. реквизитов Ждите выхода 8.3.9 Там можно будет расширять общие модули. Это позволит дописывать в расширении свои обработчики обновления конфигурации. В этих обработчиках пиши всё что тебе нужно, в том числе и добавление своих допреквизитов или допсвойств. А вообще по сути про тиражные решения уже всё написали. Расширения не для того предназначены.

очень урезанно. что огорчает. я выкрутился доп реквидитом, когда делал. НО обработать «все» формы опять нельзя. Сделать каоке-то универсальное расширение не получается. тока заточка тока хардкор я думал 1с сделает расширения сторе мы будем выклдывать. зарабатывать деньги. но пока никак.

Тэги:

Комментарии доступны только авторизированным пользователям

Автор Владислав Головлёв, 25 июл 2019, 11:03

0 Пользователей и 1 гость просматривают эту тему.

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


&НаКлиенте
&Вместо("ПриОткрытии")
Процедура Префикс_ПриОткрытииВместо(Отказ)
Сообщить(1);
КонецПроцедуры

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


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


Цитата: KOI8-R от 25 июл 2019, 12:12
А почему вы решили, что в процедуру расширения не заходит?
Не выводит сообщение — это не показатель, оно может перекрываться открывшейся формой. Отладку на расширение тоже надо отдельно включать.
Чтоб наверняка поставьте вызов общей клиентской функции и там уже ставьте точку.

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


Цитата: Владислав Головлёв от 25 июл 2019, 14:23

Цитата: KOI8-R от 25 июл 2019, 12:12
А почему вы решили, что в процедуру расширения не заходит?
Не выводит сообщение — это не показатель, оно может перекрываться открывшейся формой. Отладку на расширение тоже надо отдельно включать.
Чтоб наверняка поставьте вызов общей клиентской функции и там уже ставьте точку.

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

Покажите скрин, где вы вынесли реквизит расширения в форму и еще точные релизы КА и платформы скажите, пожалуйста.


Цитата: KOI8-R от 25 июл 2019, 14:51

Цитата: Владислав Головлёв от 25 июл 2019, 14:23

Цитата: KOI8-R от 25 июл 2019, 12:12
А почему вы решили, что в процедуру расширения не заходит?
Не выводит сообщение — это не показатель, оно может перекрываться открывшейся формой. Отладку на расширение тоже надо отдельно включать.
Чтоб наверняка поставьте вызов общей клиентской функции и там уже ставьте точку.

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

Покажите скрин, где вы вынесли реквизит расширения в форму и еще точные релизы КА и платформы скажите, пожалуйста.

Платформа: 8.3.15.1489
Релиз КА2: 2.4.8.84

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



Цитата: KOI8-R от 26 июл 2019, 11:43
Нажми на эту кнопку:

Спасибо! Теперь реквизит виден, но в предприятии по прежнему открывается форма та, что в конфигурации, то есть заимствованная форма не открывается


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


Цитата: Владислав Головлёв от 29 июл 2019, 07:24
Ни у кого не было такого, что при добавлении в расширение формы, все равно открывалась форма из конфигурации?

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


Цитата: KOI8-R от 29 июл 2019, 11:50

Цитата: Владислав Головлёв от 29 июл 2019, 07:24Ни у кого не было такого, что при добавлении в расширение формы, все равно открывалась форма из конфигурации?

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

Столкнулся с такой же проблемой. Нашлось решение?


Теги:

  • Форум 1С

  • Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4

  • Конфигурирование, программирование в 1С Предприятие 8

  • Проблема с расширением КА2 1с 8.3.15

Похожие темы (5)

Рейтинг@Mail.ru

Rambler's Top100

Поиск

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

Начиная с платформы 1С версии 8.3.12 и выше появилась возможность добавлять реквизиты объектов в расширениях, чем я и воспользовался:

Но для вывода данного реквизита на форму элемента добавлять саму форму в расширение совсем не хотелось.

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

Платформа использует сразу три формы:

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

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

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

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

В конфигурациях ERP 2 и УТ 11 для целей программного создания реквизитов и элементов формы можно использовать типовой механизм упрощенного изменения, который хорошо описан в статье: //infostart.ru/public/303645/. Но у меня конфигурация ЗУП 3 и данного механизма там нет. 

Посмотрев начало процедуры ПриСозданииНаСервере() модуля формы объекта, видим что вызываются экспортные методы ПриСозданииНаСервере() общих модулей подсистем БСП:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
Возврат;
КонецЕсли;

// СтандартныеПодсистемы.ВерсионированиеОбъектов
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

// СтандартныеПодсистемы.Свойства
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
// Конец СтандартныеПодсистемы.Свойства

// СтандартныеПодсистемы.СклонениеПредставленийОбъектов
СклонениеПредставленийОбъектов.ПриСозданииНаСервере(ЭтотОбъект, Объект.Наименование);
// Конец СтандартныеПодсистемы.СклонениеПредставленийОбъектов

Было принято решение код для программного добавления реквизита формы объекта добавить в метод ПриСозданииНаСервере() общего модуля УправлениеСвойствами. Данный модуль предназначен для работы с дополнительными реквизитами и сведениями, но переопределив его в расширении он вполне сгодится и для наших целей.

Добавляем общий модуль УправлениеСвойствами в наше расширение:

и создаем обработчик события НП_ПриСозданииНаСервере(), вызываемый после типовой процедуры УправлениеСвойствами.ПриСозданииНаСервере().

Ниже приведен готовый код, код снабжен комментариями и разбит на области для лучшего понимания:

&После("ПриСозданииНаСервере")
Процедура НП_ПриСозданииНаСервере(Форма, ДополнительныеПараметры = Неопределено) Экспорт

Если Форма.ИмяФормы = "Справочник.ПодразделенияОрганизаций.Форма.ФормаЭлемента" Тогда

#Область ДобавлениеРеквизитовФормы
// Массив для новых реквизитов
ДобавляемыеРеквизиты = Новый Массив;

// Опишем ревизиты формы
Реквизит_НаименованиеДляПечати = Новый РеквизитФормы("НаименованиеДляПечати", Новый ОписаниеТипов("Строка", , , Новый КвалификаторыСтроки(300)), , "Наименование для печати");

// Заполним массив после описания реквизитов формы
ДобавляемыеРеквизиты.Добавить(Реквизит_НаименованиеДляПечати);

// Добавим новые реквизиты в форму
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
#КонецОбласти

#Область ДобавлениеЭлементовФормы
// Элементы
ИмяГруппы = "ГруппаНаименованиеКод";
ГруппаФормы = Форма.Элементы.Найти(ИмяГруппы);
Если ГруппаФормы <> Неопределено Тогда

ИмяЭлемента = "НаименованиеДляПечати";
Если Форма.Элементы.Найти(ИмяЭлемента) = Неопределено Тогда
ЭлементФормы = Форма.Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ГруппаФормы);
ЭлементФормы.Вид = ВидПоляФормы.ПолеВвода;
ЭлементФормы.ПутьКДанным = "Обьект.НаименованиеДляПечати";
ЭлементФормы.МногострочныйРежим = Истина;
ЭлементФормы.Высота = 3;
КонецЕсли;

КонецЕсли;
#КонецОбласти

#Область ЗаполнениеДанных
Форма.НаименованиеДляПечати = Форма.Объект.НаименованиеДляПечати;
#КонецОбласти

КонецЕсли;

КонецПроцедуры

Запускаем конфигурацию и убеждаемся, что все работает:

Файлы материала
Описание

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

Программное добавление реквизита на форму

Для примера, стоит задача в конфигурации ЗУП 3.1 добавить реквизит «Способ отражения зарплаты в БУ» для позиции штатного расписания в группе “Дополнительные данные”.

Способ отражение в позиции штатного расписания

Создадим расширение и выполним следующую последовательность действий:

  1. Добавим в расширение справочник “Штатное расписание” и создадим реквизит “АВ_СпособОтражения” с типом данных “СправочникСсылка.СпособыОтраженияЗарплатыВБухУчете”

добавление реквизита АВ_СпособОтражения в расширение

2. Заберем в расширение процедуру “ПриСозданииНаСервере” из общего модуля “УправлениеСвойствами”, программно добавим поле в форму и свяжем его с реквизитом объекта добавленного на первом шаге.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

&После(«ПриСозданииНаСервере»)

Процедура АВ_ПриСозданииНаСервере(Форма, ДополнительныеПараметры)

Если Форма.ИмяФормы = «Справочник.ШтатноеРасписание.Форма.ФормаЭлемента» Тогда

#Область ДобавлениеЭлементовФормы

ИмяГруппы = «ГруппаДополнительныеРеквизиты»;

ГруппаФормы = Форма.Элементы.Найти(ИмяГруппы);

Если ГруппаФормы <> Неопределено Тогда

ИмяЭлемента = «АВ_СпособОтражения»;

Если Форма.Элементы.Найти(ИмяЭлемента) = Неопределено Тогда

ЭлементФормы = Форма.Элементы.Добавить(ИмяЭлемента, Тип(«ПолеФормы»), ГруппаФормы);

//Вместо Добавить() можно использовать метод Вставить()

//в 4-й параметре указывается Элемент перед которым должен быть вставлен новый элемент.

//ЭлементФормы = Форма.Элементы.Вставить(ИмяЭлемента, Тип(«ПолеФормы»), ГруппаФормы, Форма.Элементы.Найти(«ИмяСледующегоЭлементаФормы»));

ЭлементФормы.Вид = ВидПоляФормы.ПолеВвода;

ЭлементФормы.ПутьКДанным = «Объект.АВ_СпособОтражения»;

//ЭлементФормы.МногострочныйРежим = Истина;

//ЭлементФормы.Высота = 3;

КонецЕсли;

КонецЕсли;

#КонецОбласти

КонецЕсли;

КонецПроцедуры

Образец расширения для скачивания в начале описания.

Программное добавление реквизита в табличную часть формы

Например, таким же способом, добавим в табличную часть “Рабочие места” реквизит “Спецжиры” с типом “Булево”.

Результат спецоценки условий труда с  колонкой спецжиры

Добавление реквизита в табличную часть

&После(«ПриСозданииНаСервере»)

Процедура АВ_ПриСозданииНаСервере(Форма, ДополнительныеПараметры)

Если Форма.ИмяФормы = «Документ.РезультатыСпецоценкиУсловийТруда.Форма.ФормаДокумента» Тогда

#Область ДобавлениеЭлементовФормы

ИмяЭлемента = «АВ_ЕстьСпецжиры»;

Если Форма.Элементы.Найти(ИмяЭлемента) = Неопределено Тогда

ЭлементФормы = Форма.Элементы.Добавить(«Спецжиры», Тип(«ПолеФормы»), Форма.Элементы.РабочиеМеста);        

ЭлементФормы.Вид = ВидПоляФормы.ПолеФлажка;

ЭлементФормы.ПутьКДанным = «Объект.РабочиеМеста.АВ_ЕстьСпецжиры»;

//ЭлементФормы.ТолькоПросмотр = Истина;

КонецЕсли;

#КонецОбласти

КонецЕсли;

КонецПроцедуры

В результате получим табличную часть с новой колонкой.

Программное добавление табличной части на форму

Аналогично добавим табличную часть “АВ_ВредныеФакторы” на форму справочника “Профессии”.

Табличная часть добавленная через расширение

Добавление табличной части на форму

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

&После(«ПриСозданииНаСервере»)

Процедура АВ_ПриСозданииНаСервере(Форма, ДополнительныеПараметры)

Если Форма.ИмяФормы = «Справочник.ПрофессииРабочих.Форма.ФормаЭлемента» Тогда

#Область ДобавлениеЭлементовФормы

ИмяГруппы = «ГруппаДополнительныеРеквизиты»;

ГруппаФормы = Форма.Элементы.Найти(ИмяГруппы);

Если ГруппаФормы <> Неопределено Тогда

ИмяЭлемента = «АВ_ВредныеФакторы»;

Если Форма.Элементы.Найти(ИмяЭлемента) = Неопределено Тогда   

ЭлементФормыТаблица = Форма.Элементы.Добавить(ИмяЭлемента, Тип(«ТаблицаФормы»), ГруппаФормы);  

ЭлементФормыТаблица.ПутьКДанным = «Объект.АВ_ВредныеФакторы»;

ЭлементФормы = Форма.Элементы.Добавить(«ВредныйФактор», Тип(«ПолеФормы»), ЭлементФормыТаблица);

ЭлементФормы.Вид = ВидПоляФормы.ПолеВвода;

ЭлементФормы.ПутьКДанным = «Объект.АВ_ВредныеФакторы.ВредныйФактор»;    

КонецЕсли;

КонецЕсли;

#КонецОбласти

КонецЕсли;

КонецПроцедуры

Связь реквизитов формы с элементами формы

Кроме того, реквизиты формы можно создавать программно и связывать их с элементами формы

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

#Область ДобавлениеРеквизитовФормы

// Массив для новых реквизитов

ДобавляемыеРеквизиты = Новый Массив;

// Опишем ревизиты формы

Реквизит_РабочееМесто = Новый РеквизитФормы(«АВ_РабочееМесто», Новый ОписаниеТипов(«СправочникСсылка.РабочиеМестаОхраныТруда»), , «Рабочее место»);

// Заполним массив после описания реквизитов формы

ДобавляемыеРеквизиты.Добавить(Реквизит_РабочееМесто);

// Добавим новые реквизиты в форму

Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);

#КонецОбласти

#Область ДобавлениеЭлементовФормы

...

#КонецОбласти

#Область ЗаполнениеДанных

Форма.АВ_РабочееМесто = Форма.Объект.АВ_РабочееМесто;

#КонецОбласти


Расширения, Типовые приемы, Шаблоны и заготовки

Понравилась статья? Поделить с друзьями:

Другие крутые статьи на нашем сайте:

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии