Задача в том что бы запомнить данные определенной колонки, при создании записи.
Идея: можно в таблицу необходимой сущности добавить колонку в которой мы будем хранить первичную информацию.
Приведу пример на основании карточки Счета и поля Поставщик:
В таблице счета (tbl_Invoice ) необходимо добавить поле в котором мы будем хранть историчное значение
Назовем поле OldSupplierName
Далее созданое поле необходимо добавить в SelectQuary соотвествующие таблице tbl_Invoice
После чего данное поле добавить в дата сет:
В данном случае нас интересует тип «Строковое поле»
В свойстве поля, устанавливаем колонку с запроса, и устанавливаем Заголовок
Далее необходимо добавить контрол в сервис окна, в нашем случае wnd_InvoiceEdit
Назовем контрол на форме edtOldSupplierName и установим значение IsEnabled = False, для того что бы данное поле не было доступно для редактирования, также укажем DatasetLink и DataFieldName( название колонки в Dataset), заголовок для контрола подтяниться с названия колонки в Dataset
После чего необходимо сделать маленькую доработку в скрипте самого датасета (ds_Invoice)
На событии OnDatasetBeforePost датасета:
Добавим строки
if (IsEmptyValue(Dataset('OldSupplierName'))) // если поле Dataset('OldSupplierName') не заповнено
{
Dataset('OldSupplierName') = Dataset('SupplierName'); //заполнить его значеним Dataset('SupplierName')
}
Что по сути будет первым заполненым значения контрагента
Итоговый вид обработчика события ds_InvoiceOnDatasetBeforePost
function ds_InvoiceOnDatasetBeforePost(Dataset, DoPost) {
if (IsEmptyValue(Dataset('OldSupplierName')))
{
Dataset('OldSupplierName') = Dataset('SupplierName');
}
InvoiceScript.IsAppend = (Dataset.State == dstInsert);
SetItemSystemNumber('Invoice', Dataset, 'InvoiceNumber');
}
После чего карточка счета будет иметь вид: