AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.03.2004, 11:29   #1  
uk is offline
uk
Участник
 
14 / 10 (1) +
Регистрация: 06.05.2003
Адрес: Санкт-Петербург
Цитата:
Изначально опубликовано Yoil
Если сильно хочется запускать отчет "монопольно", то это, в принципе, решается.
Заведите, например, кодъюнит со свойством SingleInstance = TRUE.
Заведите в нем переменную типа ReportIsRunning : boolean.
Заведите функции GetReportStatus и SetReportStatus, которые возвращают значение и устанавливают значение этой переменной.
На OnPreReport напишите что-нибудь типа
IF CodeUnitName.GetReportStatus THEN
CurrReport.QUIT
ELSE
CodeUnitName.SetReportStatus(TRUE);

На OnPostReport либо
CodeUnitName.SetReportStatus(FALSE) либо CLEAR(CodeUnitName).

Правда, есть опасность, что в случае некорректного завершения работы отчета (т.е. OnPostReport не отработается) случится бяка и отчет больше никогда не запустится =)
Также можно установить подобный флажок не через кодъюнит, а используя поле какой-нибудь настроечной таблички (а можно и не настроечной...).
Но ведь свойство SingleInstance позволяет хранить значение переменной только для того же клиента, даже для одной сессии. То есть, при запуске другой сессии ReportIsRunning не будет True. Так что это свойство, к сожалению, тоже нельзя использовать. Похоже, единственный выход - при запуске отчета делать запись в некой таблице, при завершении отчета эту запись удалять. И не разрешать запускать отчет, пока эта запись существует. Но как-то это неправильно, мне кажется. Или ничего?

--------------------------------------------------------------------------------
Изначально опубликовано uk
Но при таком раскладе я не вижу возможности исключить параллельный запуск данного расчета.
--------------------------------------------------------------------------------
2 mazzy
Цитата:
А почему только данного? А у вас нет других расчетов, которые работают с этими же таблицами? Они же тоже могут что-то править. В промежутках между транзакциями. Я чего-то не понимаю?
Другие расчеты тоже что-то правят, но не те поля, которые правит расчет, о котором идет речь.
Мне трудно предсказать последствия параллельной работы этого расчета - поэтому я и хочу избежать подобной ситуации.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Печать отчета из просмотра gennady NAV: Программирование 1 03.02.2006 08:03
Свойство KeepWithNext тела отчета! Yuriy NAV: Программирование 2 31.07.2003 15:09
Проблема с компиляцией отчёта RomariO NAV: Программирование 2 23.04.2003 11:21
[Attein 3.01]Запрет печати отчета из предварительно просмотра. Yoil NAV: Программирование 11 18.04.2003 16:36

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:01.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.