Имя: Пароль:
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
Вот так заработало:
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
    ПослеЗаписиНаСервере();
КонецПроцедуры

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

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

А как обновить поле формы? пока не решил нужно ли это будет или форма будет закрываться, но думаю пригодится
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой