Имя: Пароль:
1C
 
Как в модуле формы обратиться по индексу реквизита?
0 Shur1cIT
 
23.08.15
11:35
переношу процедуру из модуля формы (обычные формы) в модуль документа,
естественно там нет "ЭлементыФормы" вопрос как по индексу заполнять и получать значения реквизита документа?

Процедура ВосстановитьЗначенияФормы()
     Попытка
         Запрос = Новый Запрос;
         Запрос.Текст = "ВЫБРАТЬ
         |    ДанныеДляЗаполненияПП.Поле,
         |    ДанныеДляЗаполненияПП.Значение
         |ИЗ
         |    РегистрСведений.ДанныеДляЗаполненияПП КАК ДанныеДляЗаполненияПП
         |ГДЕ
         |    ДанныеДляЗаполненияПП.Контрагент = &Контрагент
         |    И ДанныеДляЗаполненияПП.Налоговый = &Налоговый
         |    И ДанныеДляЗаполненияПП.Организация = &Организация";
         Запрос.УстановитьПараметр("Контрагент",Контрагент);
         Запрос.УстановитьПараметр("Налоговый",ПеречислениеВБюджет);
         Запрос.УстановитьПараметр("Организация",Организация);
        
         Выборка = Запрос.Выполнить().Выбрать();
         Пока Выборка.Следующий() Цикл
             ЭлементыФормы[Выборка.Поле].Значение = Выборка.Значение;    
         КонецЦикла;
     Исключение
         //Сообщить("Не удалось Востановить значения!:
         //|" + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
     КонецПопытки;
КонецПроцедуры
1 Апош
 
23.08.15
11:36
на сервере у объекта
2 jsmith82
 
23.08.15
11:38
Реквизиты формы ты, наверно, имел в виду
Надо сигнатуру функцию расширить параметром типа Форма
Просто же
В типовых (обычные формы) сплошь распространено
3 Shur1cIT
 
23.08.15
11:38
(1) объект может быть не записан
4 Shur1cIT
 
23.08.15
11:39
(2) процедура вызывается не только из формы , но и при создании и заполнении документа из обработки
5 Shur1cIT
 
23.08.15
11:42
то есть нужен универсальный механизм
что то вроде ТекущийОбъект["НазваниеРеквизита"]
6 NcSteel
 
23.08.15
11:44
(0) Если это реквизит формы, то в модуле нет возможности к нему обратиться....
7 Апош
 
23.08.15
11:44
Объект[стр] подойдёт?
8 NcSteel
 
23.08.15
11:46
(7) В модуле документа: рукалицо ....
9 Shur1cIT
 
23.08.15
11:47
(6) это не реквизит формы это реквизит документа,
10 NcSteel
 
23.08.15
11:48
(9) Тогда просто пиши имя реквизита...
или через "ЭтотОбъект[ИмяРеквизита]"
11 Shur1cIT
 
23.08.15
11:52
(10) если "ЭтотОбъект" не записан, а только в процессе заполнения ошибки не будет?
12 jsmith82
 
23.08.15
11:52
Магистратуры не хватает
13 Shur1cIT
 
23.08.15
11:53
(12) Точно!:-)
14 jsmith82
 
23.08.15
11:55
Великий товарищ, раз ты пишешь
ЭлементыФормы[Выборка.Поле].Значение
значит, ты намекаешь на то, что реквизит может быть или у формы, или у объекта
Иначе бы ты писал тупо ЭтотОбъект[Выборка.Поле]
Разве не так?

Раз ты решил процедуру мигрировать в модуль объекта, то необходимо расширить сигнатуру
ВосстановитьЗначенияФормы(Форма) и обращаться
ВосстановитьЗначенияФормы(ЭтаФорма)
а внутри писать
Форма[Выборка.Поле]
15 jsmith82
 
23.08.15
11:56
То есть Форма.ЭлементыФормы[Выборка.Поле]
16 NcSteel
 
23.08.15
11:57
(11) А ты проверь
17 jsmith82
 
23.08.15
12:03
12 лет в профессии и такая каша в голове!
18 Shur1cIT
 
23.08.15
12:04
(17) иногда тупнях находит или начинаешь заморачиваться.... там где не надо
19 jsmith82
 
23.08.15
12:09
(18) Нет системы в голове. Ты, видимо, ещё не нашёл себя
20 GROOVY
 
23.08.15
13:15
Настройки элементов формы можно автоматом сохранять/восстанавливать из системного хранилища настроек, но можно и извратиться и описать свое, зачем использовать в 8.2(3)  то что в (0) описано, я не очень понимаю.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.