Мой отчет имеет свойство ProcessingOnly. Т.е. он предназначен именно для обработки, а не для вывода на печать.
Но забудем про отчет. Пусть это будет кнопка на форме. Нажатием на кнопку вызывается, допустим, codeunit, который выполняет расчеты и производит модификацию записей в базе. Я хочу сделать так, чтобы во время, пока выполняется этот процесс, нельзя было запустить этот же процесс из другой сессии.
Во время процесса блокируются таблицы, к которым обращаются другие пользователи. Поскольку процесс продолжительный, я разбил его на транзакции функцией COMMIT. Происходит обработка первого товара, на время которой некоторые процессы других пользователей блокируются. Далее следует функция COMMIT, которая завершает транзакцию (но не процесс) и снимает блокировку. Другие сессии благополучно завершают свои транзакции. После чего мой процесс приступает к обработке следующего товара. Здесь все в порядке.
Но при таком раскладе я не вижу возможности исключить параллельный запуск данного расчета. Потому что мне нужно блокировать не таблицы, которые расчет модифицирует, а сам факт запуска этого расчета. Нужен действительно какой-то флажок, но я не знаю, где его можно создать.
Что касается xSysLastValue – то это из мира Axapta, насколько я понимаю, а речь про Navision.
2 Yuriy
Не совсем понял про выделенный сервер отчетов. У меня ведь идет именно модификация данных. Как можно выполнять ее отдельно? К слову, всё это касается как раз коррекции себестоимости, только не родной навижнской, а самодельной, доставшейся нам в наследство от внедряющей фирмы.
|