Имя: Пароль:
1C
1С v8
При записи документа, должен изменяться реквизит другого документа
, , ,
0 art93
 
29.07.15
11:23
По кнопке в форме документа "Заказ" создаётся форма документа "Отчет"(сам документ не создаётся и не записан ещё), заполняются поля формы. Нужно реализовать, чтобы при записи документа "Отчет" изменился реквизит "ОтчетПоЗаказу"(тип:Документ.Отчет") документа "Заказ"(Ссылка на Документ заказ хранится в реквизите "ДокументОснование")

Попробовал в ФормеДокумента "Отчет":
&НаСервере
Процедура ПослеЗаписи(ПараметрыЗаписи)
    Объект.ДокументОснование.ПолучитьОбъект().ОтчетПоЗаказу = Объект.Ссылка;
    Объект.ДокументОснование.ПолучитьОбъект().Записать();
КонецПроцедуры
1 mzelensky
 
29.07.15
11:36
Никогда так не делай
2 hhhh
 
29.07.15
11:41
(0) два раза получаешь объект. Это чудишь? Или глубокий смысл есть в полкчении двух экземпляров объектов?
3 Mifka
 
29.07.15
11:44
переведу что написали
&НаСервере

Процедура ПослеЗаписи(ПараметрыЗаписи)
    Док =Объект.ДокументОснование.ПолучитьОбъект();
Док.ОтчетПоЗаказу = Объект.Ссылка;
    Док.Записать();
КонецПроцедуры
4 art93
 
29.07.15
11:47
Спасибо большое! Извините за глупые вопросы, учусь только. Переписываю из УТ10.3 в УТ11+CRM.
5 Smallrat
 
29.07.15
12:04
(3) а если запись не прокатит?
я б еще добавил
Док.ОбменДанными.Загрузка = Истина;
6 mzelensky
 
29.07.15
12:39
Пипец насоветовали...а никто про блокировки не подумал? Про наложения версий объекта?
7 art93
 
29.07.15
13:57
(3) Такой вариант не работает.
(5) А куда стоит добавить эту часть?
(6) Объясните пожалуйста, в чем проблема с блокировками?
8 hhhh
 
29.07.15
14:04
(7) всё работает. Просто на форме заказа у вас ведь старая информация, она как была так и осталась. Обновить ее вы забыли. ТО есть в базе заказ уже записался, но чтобы посмотреть, что там, нужно его прочитать из базы.
9 Smallrat
 
29.07.15
14:16
(7) перед Док.Записать()
10 art93
 
29.07.15
14:23
Вот так заработало:
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
    ПослеЗаписиНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПослеЗаписиНаСервере()    
    
    Док =Объект.ДокументОснование.ПолучитьОбъект();
    Док.ОтчетПоЗаказу = Объект.Ссылка;
    Док.Записать();

КонецПроцедуры

А как обновить поле формы? пока не решил нужно ли это будет или форма будет закрываться, но думаю пригодится
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn