Обратиться к реквизиту формы добавленному программно

1. codename-s 03.09.15 09:16 Сейчас в теме
Есть Таблица значений и на каждый ее элемент я добавляю на управляемую форму реквизит в цикле.

Соответственно нужно присвоить реквизиту значение.

делаю примерно так

&НаСервере

БлаБла...

Счетчик = 0;
Для каждого СтрокаЗначений из ТаблицаЗначений цикл
    Счетчик = Счетчик + 1;
    //ДобавляюРеквизитНаФорму...
    МассивДобавляемыхРеквизитов = Новый Массив;	
    НовоеСообщение = Новый РеквизитФормы("Сообщение"+Счетчик, Новый ОписаниеТипов("ФорматированныйДокумент"));		
    МассивДобавляемыхРеквизитов.Добавить(НовоеСообщение);
    ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);

    //И тут было бы неплохо
    ЭтаФорма.ИмяМоегоРеквизита = БлаБла;
    //Но как???
КонецЦикла
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. dj_serega 393 03.09.15 09:48 Сейчас в теме
(1) codename-s, Сначала подготовьте массив реквизитов, потом создайте через "ИзменитьРеквизиты", потом уже заполняйте их.
9. codename-s 03.09.15 10:05 Сейчас в теме
(8) dj_serega, ну собственно так и делал, просто не знал как обратиться к свежесделанному реквизиту)
10. dj_serega 393 03.09.15 10:20 Сейчас в теме
(9) codename-s, Вы в цикле изменяете реквизиты. А нужно после цикла
Для каждого СтрокаЗначений из ТаблицаЗначений цикл
   
    ...

    ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);

    ...

КонецЦикла
Показать


Если работает то ладно. Но, имхо, не правильно так.
11. codename-s 03.09.15 10:38 Сейчас в теме
(10) dj_serega, Получается я в одном цикле и добавляю реквизиты на форму и заполняю их значениями, если строить код по другому будет больше заморок... вопрос только не будут ли тормоза при ИзменитьРеквизиты(МассивДобавляемыхРеквизитов); запизанном в цикл
12. dj_serega 393 03.09.15 11:11 Сейчас в теме
(11) codename-s, Об этом и имею ввиду (по поводу тормозов на изменить в цикле).
13. klinval 343 03.09.15 11:21 Сейчас в теме
(1) codename-s, насколько я помню потом (после процедуры ПриСозданииНаСервере) можно будет обратиться к переменной по ЭтаФорма.ИмяМоегоРеквизита, а в процедуре "ПриСозданииНаСервере" придётся обращаться как написал (2) DenisCh: ЭтаФорма[СтрокаСИменемреквизита]
Max0n57; mikl79; +2 Ответить
14. codename-s 03.09.15 12:10 Сейчас в теме
(13) klinval, Использовать конструкцию типа ЭтаФорма.НовыйРеквизит можно сразу после ИзменитьРеквизиты(МассивДобавляемыхРеквизитов) даже в процедуре ПриСозданииНаСервере, однако я генерирую новые реквизиты в цикле и не знаю сколько их будет а значит и не знаю имя реквизита... однако я могу его собрать из строки... тогда я могу использовать конструкцию типа ЭтаФорма[СтрокаКоторуюЯСобрал] например ЭтаФорма["Сообщение"+Счетчик] и попаду прямиком на свежесозданный реквизит прямо в теле цикла, присвою ему значение и пойду по новой)
15. klinval 343 03.09.15 12:45 Сейчас в теме
(14) codename-s, сорри, перепутал. Нельзя использовать в ПриСозданииНаСервере обращение просто по имени СтрокаСИменемреквизита. А потом становится можно (если конечно избежать синтаксической ошибки). Но думаю эта информация мало относится к тебе обсуждения, поэтому сорри за ОФФТоп.
2. DenisCh 03.09.15 09:19 Сейчас в теме
ЭтаФорма[СтрокаСИменемреквизита] ?
unknow_user; svmix; mikl79; user614607_odz; SmArtist; Dioneo; Date; GOshaSaveiko; klinval; codename-s; +10 Ответить
21. user2108230 05.10.24 02:31 Сейчас в теме
(2) Огромное спасибо вам за данное сообщение. Прям спасли...
unknow_user; +1 Ответить
3. codename-s 03.09.15 09:21 Сейчас в теме
ЭЭЭ, так это через квадратные скобки делается 0_0
6. Xershi 1563 03.09.15 09:30 Сейчас в теме
(3) codename-s, да, надо иногда справку читать. А зачем на форме? Может динамически таблицу переделать?
7. codename-s 03.09.15 09:34 Сейчас в теме
(6) Xershi, ты имеешь ввиду на форму кинуть новый реквизит с типом ТаблицаЗначений и в нее грузить? это было первое что я придумал но как оказалось на форму нельзя вывести ФорматированныйДокумент в поле таблиц
22. Bukaska 140 05.10.24 07:54 Сейчас в теме
(3) Если МАССИВ добавляемых реквизитов, а в массиве все через []
4. Скиминок 03.09.15 09:21 Сейчас в теме
Какая на сервере ЭтаФорма????

Выгружать в какой либо примитивный тип данных и передавать на сервер. Ну либо обращаться к источнику данных этой ТЧ
5. codename-s 03.09.15 09:25 Сейчас в теме
Жестко прописанная конструкция ЭтаФорма.Сообщение1 = СтрокаСообщения.Сообщение; работает) чето мне кажется форматированный док перегнать в примитивный тип будет стоить мне много крови)
16. serg1983 21 03.09.15 13:54 Сейчас в теме
извините если что не так. Но я в данном случаю делаю подругому
вместо
ЭтаФорма.ИмяМоегоРеквизита = БлаБла;
так
ИмяМоегоРеквизита = БлаБла;

ссори не понял сути
17. Xershi 1563 03.09.15 14:25 Сейчас в теме
(16) serg1983, у вас есть такая возможность потому что реквизит так уже в этом объекте есть. Но правильно через объект/форму будет.
18. codename-s 04.09.15 09:38 Сейчас в теме
В общем и целом тормоза... и даже совет dj_serega никакой разницы не дает. Отказался от генерации реквизитов и просто добавляю на форму элемент с типом форматированная строка. так не тормозит.

вывод - добавлять много реквизитов программно = тормоза)
19. Xershi 1563 04.09.15 09:40 Сейчас в теме
(18) codename-s, тут код нужно смотреть. Замер производительности смотрели?
20. klinval 343 04.09.15 10:55 Сейчас в теме
(18) codename-s, у нас, например, в одном документе целая табличная часть рисуется на форме программно, к отдельным реквизитам этой ТЧ и ко всей ТЧ устанавливается куча действий (типа ПриИзменении, ПриНачалеРедактирования и т.д.). Плюс в этом же документе 1 раз используется команда "ИзменитьРеквизиты" (как раз ваш случай). Никогда вопрос производительности не стоял. Никто ни разу не обращался с вопросом о том, что форма долго открывается.
Сейчас сделал замер в процедуре "ПриСозданииНаСервере". Наш код занимает примерно 14% времени, а остальное время выполняется типовой код конфигурации БП 3.0. ИзменитьРеквизиты занимает 3,04%. Т.е. тормозов из-за программного добавления не воникает! Открывается дольше, но это даже не заметно обычному человеку, т.к. разница в тысячных секунды. Делайте замеры - может у вас тормоза возникают не из-за того, что реквизиты добавили программно.
23. unknow_user 28.12.24 11:13 Сейчас в теме
Так работает:
ЭтотОбъект.ВашПрограммноДобавленныйРеквизит
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот