Difference between revisions of "DB.StoreObjectToBuffer"
m (1 revision imported) |
|
(No difference)
|
Latest revision as of 07:43, 7 February 2021
StoreObjectToBuffer (Сохранение состояния объекта) | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Функция сохраняет текущий объект в памяти и возвращает его в виде буфера. Функция работает как для объектов, открытых для визуального редактирования, так и для обычных объектов. Принимаются только элементы справочников и документы. Текущий объект не будет изменен. В буфере сохраняются все свойства объекта -- реквизиты, особые реквизиты, признак объект изменен, внутренние коды и пр. Функция обычно используется для объектов, открытых для визуального редактирования до начала транзакции с попыткой записи объекта. См. также RestoreObjectFromBuffer.
Синтаксис
DB.StoreObjectToBuffer():<Состояние объекта (BUFFER)>
Возвращаемое значение
Функция возвращает буфер, хранящий текущее состояние объекта.
Примеры
//Пример для документа aEl, открытого визуально, при обработке которого необходимо убедиться, что также будут обработаны все документы из списка СпД. // Если хотя бы один документ не может быть обработан, текущий документ необходимо вернуть в исходное состояние //Сохраним состояние текущего документа Buff:=aEl.StoreObjectToBuffer(); BeginTransaction(); Try //Обработаем текущий документ aEl.Publish(); //Обработаем или сохраним все документы из списка СпД For i:=1 to СпД.Size() Do бДок:=СпД.Get(i); If бДок.Status()<2 Then бДок.Save(); Else бДок.Publish(); EndIf; EndDo; //Зафиксировать транзакцию CommitTransaction(); Except //Если сохранение или обработка документов невозможна, будет вызвано исключение //Мы должны отменить транзакцию (вернуть все документы и текущий в базе данных в исходное состояние RollBackTransaction(); //Также мы должны восстановить в исходное визуальное состояние текущего документа (обработчик события OnPublish мог изменить какие-либо реквизиты) aEl.RestoreObjectFromBuffer(Buff); Message(PopError(),"!"); Exit 0; EndTry;