Имя: Пароль:
1C
 
Запись значения в дополнительный реквизит документа в 1С 8.3
,
0 maxikat
 
23.01.15
11:16
Добрый день!
Требуется записать в РТУ название сайта в дополнительный реквизит "сайт-источник".

ПИшу так:


Док = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
....
ЗаписатьРеквизит(Док, "Сайт-источник", Почта);



&НаСервере
Процедура ЗаписатьРеквизит(ДокОбъект, ИмяРеквизита, ЗначениеРеквизита)

     ДопРекв_Ссылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Заголовок",ИмяРеквизита);
     Если ДопРекв_Ссылка.Пустая() Тогда
         Сообщить("Не найден доп. реквизит "+ИмяРеквизита+", значение не установлено!");
         Возврат;
     КонецЕсли;

     СтрДопРеквизиты = ДокОбъект.ДополнительныеРеквизиты.Найти(ДопРекв_Ссылка, "Свойство");
     Если СтрДопРеквизиты = Неопределено Тогда
         СтрДопРеквизиты = ДокОбъект.ДополнительныеРеквизиты.Добавить();
     КонецЕсли;
     СтрДопРеквизиты.Свойство = ДопРекв_Ссылка;
     СтрДопРеквизиты.Значение = ЗначениеРеквизита;
     ДокОбъект.Записать();
КонецПроцедуры


Все равно не записывает.
1 Maxus43
 
23.01.15
11:17
отладчик что говорит?
2 Maxus43
 
23.01.15
11:20
3 maxikat
 
23.01.15
11:20
(1) Все эти строки замечательно проходит и в значении показывает, что записал. Но при открытии документа Сайт-источник пуст.
4 maxikat
 
23.01.15
11:55
(2) Спасибо большое за совет. Но все равно почему-то не получается.

Написала так:

ЗаписатьРеквизит(Док.Ссылка, "Сайт-источник", Почта);





&НаСервере
Процедура ЗаписатьРеквизит(Док, ИмяРеквизита, ЗначениеРеквизита)

     ДопРекв_Ссылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Заголовок",ИмяРеквизита);
     Если ЭлПВХ_Ссылка.Пустая() Тогда
         Сообщить("Не найден доп. реквизит "+ИмяРеквизита+", значение не установлено!");
         Возврат;
     КонецЕсли;
ТабЗнач = Новый ТаблицаЗначений;
            
ТабЗнач.Колонки.Добавить("Свойство");
ТабЗнач.Колонки.Добавить("Значение");

НоваяСтрока = ТабЗнач.Добавить();
НоваяСтрока.Свойство = ДопРекв_Ссылка;
НоваяСтрока.Значение = ЗначениеРеквизита;
    
УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(Док, ТабЗнач);
Док.ПолучитьОбъект().Записать();
    
КонецПроцедуры


Что еще может быть не так?
5 maxikat
 
23.01.15
13:09
Никто не может подсказать? Вроде все просто, но не заполняется. Где еще нужно что-то прописать?
6 Maxus43
 
23.01.15
13:11
УправлениеСвойствами.ЗаписатьСвойстваУОбъекта - есть такая процедура в твоей конфе?
7 maxikat
 
23.01.15
13:15
(6) Да, процедура такая есть. Он туда заходит, все прописывает. Причем если смотреть в отладчике в Дополнительных реквизитах документа, то отображается, что в Сайте-источнике запись есть, какая мне надо. А как только открываю сам документ в Предприятии, то там в этом реквизите пусто. Тогда непонятно, куда он все это записывает? И записывает ли?
8 Maxus43
 
23.01.15
13:31
эх, нет у меня конфы на 8.3 под рукой с доп реквизитами... не должно быть там проблем, может при открытии очищает? А если руками на форме заполнить и записать - не исчезает?
9 maxikat
 
23.01.15
13:54
Ситуация становится совсем забавной. Потому что я прописала в одной файле все руками, в  другом программно. Там, где руками, все отображается, а программно пусто. НО! В консоле запросов в обоих файлах Дополнительные реквизиты заполнены одинаково! Как такое может быть?
Закон Брукера: Даже маленькая практика стоит большой теории.