Здравствуйте.

// скрипт из scr_SalesGridArea

var SalesDataSet = Services.GetNewItemByUSI('ds_Sales');
SalesDataSet.Append(); // после Append SalesDataSet.State=3 (dstInsert)
SalesDataSet('поле') = значение
SalesDataSet.Post();

Как сделать, чтобы после Post() вызывалось function dlDataOnDatasetBeforePost(Dataset, DoPost) // которая написана в wnd_SalesEditScript

в https://www.terrasoft.ru/sdk/index.html?frmname=topic&frmfile=IDatasetEv... написано, что
Если набор данных не находится в состоянии добавления или редактирования записи (значение свойства IDataset::State не равно "dstInsert" или "dstEdit"), то вызывает событие IDatasetEvents::OnDatasetBeforePost.

В какмом же состоянии должен быть набор данных, чтобы вызвать dlDataOnDatasetBeforePost ?

Спасибо.

Нравится

1 комментарий

Марина,

Post() - это метод датасета, который вызывает событие post, а OnDatasetBeforePost - это обработчик этого события датасета, вызывающийся до того, как будет выполнен post записи.
Соответственно обработчик события OnDatasetBeforePost не может вызываться после вызова метода Post().
Если что-то должно произойти после выполнения метода Post(), то это нужно реализовать в обработчике OnDatasetAfterPost.

Для решения Вашей задачи можно вынести код, который реализован в dlDataOnDatasetBeforePost(Dataset, DoPost) в скрипте wnd_SalesEditScript, в аналогичное событие для сервиса данного датасета.
В таком случае, он будет вызываться всегда при post записи в соответствующую таблицу на уровне приложения, если post будет вызываться на уровне базы данных, то обработчик вызываться не будет.

Показать все комментарии