Обратиться к реквизиту формы добавленному программно
Есть Таблица значений и на каждый ее элемент я добавляю на управляемую форму реквизит в цикле.
Соответственно нужно присвоить реквизиту значение.
делаю примерно так
Соответственно нужно присвоить реквизиту значение.
делаю примерно так
&НаСервере
БлаБла...
Счетчик = 0;
Для каждого СтрокаЗначений из ТаблицаЗначений цикл
Счетчик = Счетчик + 1;
//ДобавляюРеквизитНаФорму...
МассивДобавляемыхРеквизитов = Новый Массив;
НовоеСообщение = Новый РеквизитФормы("Сообщение"+Счетчик, Новый ОписаниеТипов("ФорматированныйДокумент"));
МассивДобавляемыхРеквизитов.Добавить(НовоеСообщение);
ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
//И тут было бы неплохо
ЭтаФорма.ИмяМоегоРеквизита = БлаБла;
//Но как???
КонецЦикла
ПоказатьПо теме из базы знаний
- Программное создание динамического списка на управляемой форме. (Динамическое создание динамического списка). Готовая процедура + обработка - демонстрационный пример
- Формы. Трудности программной работы
- Программный интерфейс для доработки форм
- Новый взгляд на управляемые формы
- Использование типовой общей формы отчета для нетиповых отчетов
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) codename-s, насколько я помню потом (после процедуры ПриСозданииНаСервере) можно будет обратиться к переменной по ЭтаФорма.ИмяМоегоРеквизита, а в процедуре "ПриСозданииНаСервере" придётся обращаться как написал (2) DenisCh: ЭтаФорма[СтрокаСИменемреквизита]
(13) klinval, Использовать конструкцию типа ЭтаФорма.НовыйРеквизит можно сразу после ИзменитьРеквизиты(МассивДобавляемыхРеквизитов) даже в процедуре ПриСозданииНаСервере, однако я генерирую новые реквизиты в цикле и не знаю сколько их будет а значит и не знаю имя реквизита... однако я могу его собрать из строки... тогда я могу использовать конструкцию типа ЭтаФорма[СтрокаКоторуюЯСобрал] например ЭтаФорма["Сообщение"+Счетчик] и попаду прямиком на свежесозданный реквизит прямо в теле цикла, присвою ему значение и пойду по новой)
(14) codename-s, сорри, перепутал. Нельзя использовать в ПриСозданииНаСервере обращение просто по имени СтрокаСИменемреквизита. А потом становится можно (если конечно избежать синтаксической ошибки). Но думаю эта информация мало относится к тебе обсуждения, поэтому сорри за ОФФТоп.
В общем и целом тормоза... и даже совет dj_serega никакой разницы не дает. Отказался от генерации реквизитов и просто добавляю на форму элемент с типом форматированная строка. так не тормозит.
вывод - добавлять много реквизитов программно = тормоза)
вывод - добавлять много реквизитов программно = тормоза)
(18) codename-s, у нас, например, в одном документе целая табличная часть рисуется на форме программно, к отдельным реквизитам этой ТЧ и ко всей ТЧ устанавливается куча действий (типа ПриИзменении, ПриНачалеРедактирования и т.д.). Плюс в этом же документе 1 раз используется команда "ИзменитьРеквизиты" (как раз ваш случай). Никогда вопрос производительности не стоял. Никто ни разу не обращался с вопросом о том, что форма долго открывается.
Сейчас сделал замер в процедуре "ПриСозданииНаСервере". Наш код занимает примерно 14% времени, а остальное время выполняется типовой код конфигурации БП 3.0. ИзменитьРеквизиты занимает 3,04%. Т.е. тормозов из-за программного добавления не воникает! Открывается дольше, но это даже не заметно обычному человеку, т.к. разница в тысячных секунды. Делайте замеры - может у вас тормоза возникают не из-за того, что реквизиты добавили программно.
Сейчас сделал замер в процедуре "ПриСозданииНаСервере". Наш код занимает примерно 14% времени, а остальное время выполняется типовой код конфигурации БП 3.0. ИзменитьРеквизиты занимает 3,04%. Т.е. тормозов из-за программного добавления не воникает! Открывается дольше, но это даже не заметно обычному человеку, т.к. разница в тысячных секунды. Делайте замеры - может у вас тормоза возникают не из-за того, что реквизиты добавили программно.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот