Имя: Пароль:
1C
1С v8
Заполнение дополнительного реквизита при создании формы
0 Малый Тихон
 
18.09.15
07:03
Здравствуйте всем! Хочу при создании формы на сервере заполнять дополнительный реквизит на ней.

Пробовал написать вот так:

    Если    Форма.ИмяФормы= "Документ.ЗаказПоставщику.Форма.ФормаДокумента" Тогда
        СвойствоПВХ = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Грузополучатель");
        Если СвойствоПВХ <> ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПустаяСсылка() Тогда
            
            МассивСтрок = форма.Свойства_ОписаниеДополнительныхРеквизитов.НайтиСтроки(Новый Структура("Свойство", СвойствоПВХ));
            
            Если МассивСтрок.Количество() > 0 Тогда
                ИмяДопРеквизита = МассивСтрок[0].ИмяРеквизитаЗначение;
                ДопРеквизит = Форма[ИмяДопРеквизита];
                Форма.Элементы[ИмяДопРеквизита]=Форма.Объект.Контрагент;
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
Скрыть

Конечно можно использовать УстановитьЗначенияСвойств но эта функция требует ссылки на документ, а если этот документ создается на основании, для так называемого "а посмотреть" и не требуется его запись? Ведь в той же форме не записанного документа можно проставить значение дополнительного реквизита руками.

Как быть?
1 Апош
 
18.09.15
07:04
прекрати работать с формой и начни манипулировать данными
2 Малый Тихон
 
18.09.15
07:05
т.е.?
3 Малый Тихон
 
18.09.15
07:22
ну я не верю что так сделать нельзя
4 shuhard_серый
 
18.09.15
07:26
(3) и чё ?
5 Mankubus
 
18.09.15
07:31
>> Форма.Элементы[ИмяДопРеквизита]=Форма.Объект.Контрагент;
меняй не элемент формы, а данные которые он отображает
6 Малый Тихон
 
18.09.15
07:42
(5) так данных то нет-объект не записан, следовательно в его ТЧ ДополнительныеРеквизитыИСведения ничего нет, ссылки на объент тоже нет
7 Апош
 
18.09.15
07:44
(6) ссылка пустая. а данные очень даже есть
8 Малый Тихон
 
18.09.15
07:46
(7) например?
9 Малый Тихон
 
18.09.15
07:46
НашОбъект=Форма.Объект;
        НС=НашОбъект.ДополнительныеРеквизиты.Добавить();
    НС.Свойство=ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Грузополучатель");
    НС.Значение=Форма.Объект.Контрагент;

не работает
10 Апош
 
18.09.15
07:47
(8) док.Номер, например
11 Малый Тихон
 
18.09.15
07:56
Причем в (9) в отлпадчике вижу что строока в ТЧ добавляется, все нормально, но не отображается она в форме.
12 Апош
 
18.09.15
07:59
(11) она не в ТЧ добавляется
13 Малый Тихон
 
18.09.15
08:11
(12) ну да блин он в коллекцию писать пытается....надо как то на объект тогда выйти
14 Малый Тихон
 
18.09.15
08:17
(13)+совсем забыл сказать делаю через ОМ МодификацияКонфигурацииПредопределяемый, там на объект не выйдешь
15 LordCMEPTb
 
18.09.15
08:23
(9) Почему был сделан вывод, что это не работает?
16 Малый Тихон
 
18.09.15
08:24
(15) на форме не отображается
17 LordCMEPTb
 
18.09.15
08:26
Судя по контексту, форма управляемая, а там для применения изменений неплохо бы оповещать клиента об изменениях. В данном случае не помешал бы метод формы "ОбновитьОтображениеДанных".
18 Малый Тихон
 
18.09.15
08:29
(17) Думал уже- этот метод на сервере не работает
19 LordCMEPTb
 
18.09.15
08:38
(18) Так и форму на сервере не получить...
Этот метод надо вызывать после возврата из серверной процедуры.
20 Малый Тихон
 
18.09.15
08:41
(19) что то совсем запутался- я делаю через ОМ, там процедура ПриСозданииНаСервере-она вызывается на сервере, форму я там получаю например Форма.Элементы[ИмяДопРеквизита].ТолькоПросмотр=Истина из (0) у меня работает на ура.
21 LordCMEPTb
 
18.09.15
08:44
(20) Могу предложить реализовать все же способ из (9), создать документ, в котором это отработает и не отобразится, записать документ и проверить наличие этих строк. Если строки будут, то ломать еще процедуру формы "ПриОткрытии". Если нет, тогда копать дальше.
22 Малый Тихон
 
18.09.15
08:48
(21) можешь поподробнее про документ в котором отработает и не отобразится? А т тупо изменю обработку заполнения и фиг с ней
23 LordCMEPTb
 
18.09.15
08:54
(22) Ну как-то же было уставновлено в (9), что такой подход не работает. То есть нужно изменить обработку заполнения так, чтобы смоделировать эту ситуацию.
Т.е. получится документ, в котором на форме ничего нет. Далее записать этот документ, открыть заново и проверить наличие нужной строки. Если строка будет, значит метод из (9) работает, но для интерактивного отображения нужен вызов клиентского метода.
А вот если строки в документе не будет, тогда уже копать в другую сторону.
24 Малый Тихон
 
18.09.15
09:00
анфиг, изменю обработку заполнения. Спасибо всем