Реквизит на форме в расширении |
Я |
27.11.19 — 16:12
Доброго времени суток.
Есть конфигурация ут 11 + расширение
1)Добавляю реквизит ссылочного типа в реквизиты документа в расширение.
2)добавляю форму через «Добавить в расширение»
3)Захожу в реквизиты формы и не вижу в объектах своего реквизита, соответственно я не могу его добавить на форму…
Вопрос: как вытянуть добавленный реквизит в расширении, на форму?
Не могу найти инфы, по реквизитам таблицы я понял, что раньше была такая возможность, но в последней версии расширения, этого сделать нельзя. Может нельзя и реквизиты объекта?
Режим совместимости Версия 8.3.12
1С:Предприятие 8.3 (8.3.14.1694)
11 (11.4.10.62)
1 — 27.11.19 — 16:15
а объект на который ссылается этот реквизит у тебя в расширение перенесен?
2 — 27.11.19 — 16:15
(1) Да конечно
3 — 27.11.19 — 16:16
(2) думаю вы не верно поняли вопрос и дали не верный ответ
4 — 27.11.19 — 16:19
вечно с этими реквизитами реквизитами на формах в расширении бардак, потом гадай откуда они и где их искать)) особенно интересно когда расширений несколько
5 — 27.11.19 — 16:22
(4) Это да) но сейчас ни одного не добавить странно… думаю через доп сведения зайти, если в расширении не решиться ну или программно, но хотел через расширение.
6 — 27.11.19 — 16:26
(5) да ну, все там работать должно.
давай по порядку:
1) добавил реквизит в основной конфе (например СправочникСсылка.ТотСамыйСправочник)
2) перенес его в расширение
3) перенес в расширение весь ТоСамыйСправочник
4) перенес в расширение Форму Документа !!!
5) на форме в Объект.???НетуТогоСамогоРеквизита
Все так?
7 — 27.11.19 — 16:30
(6) Нет
1) добавил реквизит в расширении (Документ.перемещение —- реквизит Контрагент)
8 — 27.11.19 — 16:35
Как? ты не добавлял реквизит в основной конфе?
9 — 27.11.19 — 16:43
Объект : Добавить в расширение
переоткрыть заимствованную форму
10 — 27.11.19 — 16:51
(9)да уж, переоткрыть форму это так неочевидно
11 — 27.11.19 — 16:52
(10)+ и банально
12 — 27.11.19 — 16:57
(8) Зачем бы я мучался с расширением, если можно добавить в основную?
(9)и переоткрывал и передобавлял форму результата нет…
13 — 27.11.19 — 16:58
(12) хмм ну я даже не знаю, может быть потому что так расширение не работает…
14 — 27.11.19 — 17:02
15 — 27.11.19 — 17:03
(14) ткни ПКМ на Объект в правой части
16 — 27.11.19 — 17:04
(15) Объект блеклого цвета, видно, что афтор не выполнил приказ из (9)
17 — 27.11.19 — 17:10
(16) А что значит «переоткрыть заимствованную форму» ?
Не задавался вопросом по такой проблеме, а она есть: один и тот же справочник, две формы добавлены в расширение. У одной реквизиты блеклым цветом, у второй все в порядке
18 — 27.11.19 — 17:17
(17) Работает ! В правой части Объект, Динамический список, Реквизиты необходимо правой кнопкой мыши и добавить в расширение.
Смущает, что такой процедуры с другой формой не проводил, а оно само добавилось.
19 — 27.11.19 — 17:20
(18) ну а как к ним обратиться в расширении когда их там нет, можно и вручную каждый тащить пока весь объект не перетащишь, результат тот же
20 — 27.11.19 — 17:21
(15) ты имеешь ввиду подтянуть объект через ПКМ «Добавить в расширение» ? но оно тянет все реквизиты + ссылки по ним что получается очень объемно…
Если просто добавить реквизит, то он остается на клиенте и к нему не обратится на сервере…
21 — 27.11.19 — 17:24
(20) ты уж определись что тебе надо
22 — 27.11.19 — 17:25
(20) а что такого страшного в том, что тащится объектов вагон и маленькая тележка? если их не трогать в расширении больше то ни на что и не повлияет?))
23 — 27.11.19 — 17:43
(22) С одной стороны да, но с другой стороны, это влияет на производительность…
(21) Ну чтобы было красиво и эффективно)
24 — 27.11.19 — 17:46
(23) тогда добавь реквизит в основную конфу. Это сразу увеличит производительность в 2 раза. Сразу в 2 раза меньше таблиц, чем с расширением.
25 — 27.11.19 — 17:48
(23) производительность, красиво, эффективно… может это не про расширения
26 — 27.11.19 — 17:51
(24) (25) Да согласен, но на ней такой красивый замочек) вот думаю, как это решить малой кровью…
EVGA
27 — 27.11.19 — 17:58
Снять замочек религия не позволяет)))
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)
Поиск
В ЗУП 3 возникла задача добавить реквизит в справочник не внося изменений в конфигурацию. БСП с механизмом дополнительных реквизитов использовать было нежелательно, поэтому был использован механизм расширений. Для вывода данного реквизита на форму добавлять саму форму в расширение не хотелось по ряду причин, описанных ниже. Создание реквизита и элемента формы, соответствующего данному реквизиту было решено сделать программно в самом расширении, следуя принципу минимального воздействия на конфигурацию.
Начиная с платформы 1С версии 8.3.12 и выше появилась возможность добавлять реквизиты объектов в расширениях, чем я и воспользовался:
Но для вывода данного реквизита на форму элемента добавлять саму форму в расширение совсем не хотелось.
Во-первых добавление (заимствование) формы в расширение может привести к некоторым нежелательным эффектам, которые могут возникнуть после обновления конфигурации. Приведем немного теории.
Платформа использует сразу три формы:
- Форму из основной конфигурации
- Сохраненную форму
- Форму из расширения
Данные формы взаимодействуют между собой и в результате такого взаимодействия получается Результирующая форма, которую видит пользователь. В ходе взаимодействия указанных форм может возникнуть нежелательная ситуация, например, мы доработали форму в расширении, потом в новом релизе добавились реквизиты и они на форме не отображаются! Более подробно тут.
Во-вторых добавление формы в расширение привело бы к автоматическому добавлению всех реквизитов этого объекта и объектов метаданных (соответствующих ссылочным типам реквизитов объекта) в данное расширение, что загромождало бы само расширение и также не желательно.
Поэтому возникла задача программного создания элемента формы для добавленного реквизита в самом расширении, этому и посвящена данная публикация.
В конфигурациях ERP 2 и УТ 11 для целей программного создания реквизитов и элементов формы можно использовать типовой механизм упрощенного изменения, который хорошо описан в статье: //infostart.ru/public/303645/. Но у меня конфигурация ЗУП 3 и данного механизма там нет.
Посмотрев начало процедуры ПриСозданииНаСервере() модуля формы объекта, видим что вызываются экспортные методы ПриСозданииНаСервере() общих модулей подсистем БСП:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
Возврат;
КонецЕсли;
// СтандартныеПодсистемы.ВерсионированиеОбъектов
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
// СтандартныеПодсистемы.Свойства
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
// Конец СтандартныеПодсистемы.Свойства
// СтандартныеПодсистемы.СклонениеПредставленийОбъектов
СклонениеПредставленийОбъектов.ПриСозданииНаСервере(ЭтотОбъект, Объект.Наименование);
// Конец СтандартныеПодсистемы.СклонениеПредставленийОбъектов
Было принято решение код для программного добавления реквизита формы объекта добавить в метод ПриСозданииНаСервере() общего модуля УправлениеСвойствами. Данный модуль предназначен для работы с дополнительными реквизитами и сведениями, но переопределив его в расширении он вполне сгодится и для наших целей.
Добавляем общий модуль УправлениеСвойствами в наше расширение:
и создаем обработчик события НП_ПриСозданииНаСервере(), вызываемый после типовой процедуры УправлениеСвойствами.ПриСозданииНаСервере().
Ниже приведен готовый код, код снабжен комментариями и разбит на области для лучшего понимания:
&После("ПриСозданииНаСервере")
Процедура НП_ПриСозданииНаСервере(Форма, ДополнительныеПараметры = Неопределено) Экспорт
Если Форма.ИмяФормы = "Справочник.ПодразделенияОрганизаций.Форма.ФормаЭлемента" Тогда
#Область ДобавлениеРеквизитовФормы
// Массив для новых реквизитов
ДобавляемыеРеквизиты = Новый Массив;
// Опишем ревизиты формы
Реквизит_НаименованиеДляПечати = Новый РеквизитФормы("НаименованиеДляПечати", Новый ОписаниеТипов("Строка", , , Новый КвалификаторыСтроки(300)), , "Наименование для печати");
// Заполним массив после описания реквизитов формы
ДобавляемыеРеквизиты.Добавить(Реквизит_НаименованиеДляПечати);
// Добавим новые реквизиты в форму
Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
#КонецОбласти
#Область ДобавлениеЭлементовФормы
// Элементы
ИмяГруппы = "ГруппаНаименованиеКод";
ГруппаФормы = Форма.Элементы.Найти(ИмяГруппы);
Если ГруппаФормы <> Неопределено Тогда
ИмяЭлемента = "НаименованиеДляПечати";
Если Форма.Элементы.Найти(ИмяЭлемента) = Неопределено Тогда
ЭлементФормы = Форма.Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ГруппаФормы);
ЭлементФормы.Вид = ВидПоляФормы.ПолеВвода;
ЭлементФормы.ПутьКДанным = "Обьект.НаименованиеДляПечати";
ЭлементФормы.МногострочныйРежим = Истина;
ЭлементФормы.Высота = 3;
КонецЕсли;
КонецЕсли;
#КонецОбласти
#Область ЗаполнениеДанных
Форма.НаименованиеДляПечати = Форма.Объект.НаименованиеДляПечати;
#КонецОбласти
КонецЕсли;
КонецПроцедуры
Запускаем конфигурацию и убеждаемся, что все работает:
Файлы материала
Описание
Новый реквизит на форму, можно добавить программно через расширение, при этом не забирать саму форму в расширение (это удобно тем, что последующие обновления внешнего вида формы не смогут сломать наше расширение). В типовых конфигурациях, данный способ можно реализовывать в процедуре “ПриСозданииНаСервере” общего модуля “УправлениеСвойствами” .
Программное добавление реквизита на форму
Для примера, стоит задача в конфигурации ЗУП 3.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 |
#Область ДобавлениеРеквизитовФормы // Массив для новых реквизитов ДобавляемыеРеквизиты = Новый Массив; // Опишем ревизиты формы Реквизит_РабочееМесто = Новый РеквизитФормы(«АВ_РабочееМесто», Новый ОписаниеТипов(«СправочникСсылка.РабочиеМестаОхраныТруда»), , «Рабочее место»); // Заполним массив после описания реквизитов формы ДобавляемыеРеквизиты.Добавить(Реквизит_РабочееМесто); // Добавим новые реквизиты в форму Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты); #КонецОбласти #Область ДобавлениеЭлементовФормы ... #КонецОбласти #Область ЗаполнениеДанных Форма.АВ_РабочееМесто = Форма.Объект.АВ_РабочееМесто; #КонецОбласти |
Расширения, Типовые приемы, Шаблоны и заготовки