Здравствуйте.
// скрипт из scr_SalesGridArea
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 ?
Спасибо.
Нравится
Марина,
Post() - это метод датасета, который вызывает событие post, а OnDatasetBeforePost - это обработчик этого события датасета, вызывающийся до того, как будет выполнен post записи.
Соответственно обработчик события OnDatasetBeforePost не может вызываться после вызова метода Post().
Если что-то должно произойти после выполнения метода Post(), то это нужно реализовать в обработчике OnDatasetAfterPost.
Для решения Вашей задачи можно вынести код, который реализован в dlDataOnDatasetBeforePost(Dataset, DoPost) в скрипте wnd_SalesEditScript, в аналогичное событие для сервиса данного датасета.
В таком случае, он будет вызываться всегда при post записи в соответствующую таблицу на уровне приложения, если post будет вызываться на уровне базы данных, то обработчик вызываться не будет.