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;