Список форумов Акцент Акцент
официальный форум разработчика программы Акцент
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Защищенный период
На страницу Пред.  1, 2, 3  След.
 
Начать новую тему   Ответить на тему    Список форумов Акцент -> Акцент 7.0
Предыдущая тема :: Следующая тема  
Автор Сообщение
Paul
Житель острова Крит


Зарегистрирован: 12.03.2005
Сообщения: 161

СообщениеДобавлено: Чт Апр 10, 2008 5:31 am    Заголовок сообщения: Ответить с цитатой

Юров Ю.С. писал(а):
Вот на этот момент (Workarea_OnLoad) и подменять в базе данных.

А если два человека одновременно входят в Акцент?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Geo.K



Зарегистрирован: 28.11.2007
Сообщения: 66

СообщениеДобавлено: Чт Апр 10, 2008 7:51 am    Заголовок сообщения: Ответить с цитатой

Юров Ю.С. писал(а):
Вот на этот момент (Workarea_OnLoad) и подменять в базе данных. А хранить в UserParams - диалогом раздачи периодов владеет только главбух или его доверенные лица.

Хранить в UserParams - это почти очевидно. Я имею ввиду то, что неизвестно (пока), когда считывается защищенный период - до события Workarea_OnLoad или после. Если после, то теоретически можно и в базе подменить. Я так понял, это значит переписать значения в SYS_PARAMS. А если на предприятии штук 20 Акцентов и все они входят в него примерно с 8:30 до 8:40? Большая вероятность того, что пойдет бардак. Поэтому нужно переписать хранимку, которая по логину будет возвращать правильный защищенный период (единожды при входе в Акцент).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
olimp
Site Admin


Зарегистрирован: 10.03.2005
Сообщения: 2661

СообщениеДобавлено: Чт Апр 10, 2008 8:13 am    Заголовок сообщения: Ответить с цитатой

На уровне SQL самое правильное решение :
1. Добавить таблицу с юзерами и разрешенными периодами
2. Написать триггер, который будет проверять соответствие разрешенного периода и периода сохраняемого документа
3. Написать диалог, который будет устанавливать защищенный период для каждого юзера
4. Убрать стандартную проверку.

На уровне DAO решения проблемы нет.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Paul
Житель острова Крит


Зарегистрирован: 12.03.2005
Сообщения: 161

СообщениеДобавлено: Чт Апр 10, 2008 9:46 am    Заголовок сообщения: Ответить с цитатой

Никто не подскажет, можно ли как-то на TSQL получить все группы, в которые входит пользователь?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Юров Ю.С.



Зарегистрирован: 11.03.2005
Сообщения: 383
Откуда: Павлоград

СообщениеДобавлено: Чт Апр 10, 2008 9:50 am    Заголовок сообщения: Ответить с цитатой

olimp писал(а):
На уровне SQL самое правильное решение :

И не захочешь делать...
Есть очень большое подозрение, что данные о периоде из SYS_PARAMS читаются только при старте программы и при выполнении команды RefreshPeriod. А чё туда ещё лазить запросами?
Я накропал своё видение решения вопроса http://www.nansi.com.ua/content/blogsection/8/72/
В работе не проверял, всё основано только на этом допущении.
Я тоже не сторонник того, чтобы каждый пользователь работал в своём периоде.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
olimp
Site Admin


Зарегистрирован: 10.03.2005
Сообщения: 2661

СообщениеДобавлено: Чт Апр 10, 2008 9:55 am    Заголовок сообщения: Ответить с цитатой

Юров Ю.С. писал(а):
olimp писал(а):
На уровне SQL самое правильное решение :

И не захочешь делать...

Разница в том, что мой метод не основывается на предположениях Smile
И работать будет железобетонно правильно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Юров Ю.С.



Зарегистрирован: 11.03.2005
Сообщения: 383
Откуда: Павлоград

СообщениеДобавлено: Чт Апр 10, 2008 10:22 am    Заголовок сообщения: Ответить с цитатой

Paul писал(а):
Никто не подскажет, можно ли как-то на TSQL получить все группы, в которые входит пользователь?


Код:
exec ap_user_getgroups2 'Дина'
nm               isAdmin
_Users         0
_бух            0
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Юров Ю.С.



Зарегистрирован: 11.03.2005
Сообщения: 383
Откуда: Павлоград

СообщениеДобавлено: Чт Апр 10, 2008 10:26 am    Заголовок сообщения: Ответить с цитатой

olimp писал(а):
Разница в том, что мой метод не основывается на предположениях Smile
И работать будет железобетонно правильно.


А мой будет работать в DAO
Если вобще будет Smile
Может кто-то захочет проверить?

PS
Оба на! Чё-то меня занесло.
Этот метод Шевчук предложил на предыдущей странице - два года назад.
Извиняюсь за невнимательность - авторское право священно...


Последний раз редактировалось: Юров Ю.С. (Пт Апр 11, 2008 8:13 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Paul
Житель острова Крит


Зарегистрирован: 12.03.2005
Сообщения: 161

СообщениеДобавлено: Чт Апр 10, 2008 11:43 am    Заголовок сообщения: Ответить с цитатой

Спасибо Юров Ю.С. Smile
Получилось все сделать в общем виде.
Я протестирую на клиенте, если будет интересно - вышлю.
Смысл решения - переписаны процедуры:
ap_sysperiod_load и ap_sys_load
Добавлена таблица:
_pSYS_PARAMS с дополнительным полем GROUP_NAME.

Для тех групп, в которые фигурируют в GROUP_NAME, берется отдельный рабочий период.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Юров Ю.С.



Зарегистрирован: 11.03.2005
Сообщения: 383
Откуда: Павлоград

СообщениеДобавлено: Чт Апр 10, 2008 1:09 pm    Заголовок сообщения: Ответить с цитатой

Paul писал(а):
Смысл решения - переписаны процедуры:
ap_sysperiod_load и ap_sys_load
Добавлена таблица:
_pSYS_PARAMS с дополнительным полем GROUP_NAME.


Тоже вариант. Но переписывать системные процедуры как-то не есть хорошо (по определению).
Хотя... Если парсить текст этой процедуры диалогом и хранить данные о периодах пользователей прямо в ней... Наверно ещё большее зло, но наверняка не собьётся при обновлении релиза Акцента. Шутка.

Geo.K писал(а):

Я так понял, это значит переписать значения в SYS_PARAMS. А если на предприятии штук 20 Акцентов и все они входят в него примерно с 8:30 до 8:40? Большая вероятность того, что пойдет бардак.


Да, я предлагаю такой подход. Есть команда RefreshPeriod, её нужно включить в процедуру, выполняющуюся в Workarea_OnLoad - в это время данные о правах загружены, но интерфейс ещё не появился.
Чтобы Акцент прочитал именно подложенные ему данные, предлагалось в конце процедуры проверить соответствие установившегося процедурой периода заданному, и если надо, повторять процедуру до полного просветления. Но проверить разрешённый период оказалось очень непросто Sad Для такой проверки раньше я сам читал данные из SYS_PARAMS
В ДАО можно заключить в транзакцию запись подставного значения, workarea.RefreshPeriod и восстановление стандартного значения.
В SQL разные области определения транзакций от Акцента и workarea.ADOConnection. Остаётся только флаг в UserParams добавить - кто эти данные записал, тот и будет читать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
fly



Зарегистрирован: 31.05.2005
Сообщения: 108

СообщениеДобавлено: Чт Апр 10, 2008 2:18 pm    Заголовок сообщения: Ответить с цитатой

Юров Ю.С. писал(а):

Я тоже не сторонник того, чтобы каждый пользователь работал в своём периоде.


Тут вопрос не для пользователей, а именно для групп. Для бухгалтерии период должен постоянно закрываться, после закрытия отчетного периода.

Но сколько у вас подключено различных настроек к базе, столько может быть и периодов. Если не больше...
У меня минимум 3 различных участка учета, которые только косвенно зависят друг от друга. И документы, за которые отвечают работники каждого участка, у каждого свои.

Я решал этот вопрос немного по-другому. Но решение olimp'a мне нравится с ходу. А ваше нужно покрутить. Хотя все они не без изъянов. С понравившимся прийдется постоянно следить за скриптами обновления БД Sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
olimp
Site Admin


Зарегистрирован: 10.03.2005
Сообщения: 2661

СообщениеДобавлено: Чт Апр 10, 2008 2:27 pm    Заголовок сообщения: Ответить с цитатой

fly писал(а):
С понравившимся прийдется постоянно следить за скриптами обновления БД Sad

Накатывай свои скрипты измененных стандартных процедур после установки обновления.
К тому же 7-ка уже практически не обновляется.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Юров Ю.С.



Зарегистрирован: 11.03.2005
Сообщения: 383
Откуда: Павлоград

СообщениеДобавлено: Чт Апр 10, 2008 3:10 pm    Заголовок сообщения: Ответить с цитатой

fly писал(а):
Но решение olimp'a мне нравится с ходу.

Если разобраться, в нём есть одна загвоздка
olimp писал(а):
2. Написать триггер, который будет проверять соответствие разрешенного периода и периода сохраняемого документа

Как сделать триггер на запрет сохранения документов?
http://www.accent6.com/forum/viewtopic.php?t=681&highlight=trigger - тогда мне на этот вопрос никто не ответил.
Может Olimp знает?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
olimp
Site Admin


Зарегистрирован: 10.03.2005
Сообщения: 2661

СообщениеДобавлено: Чт Апр 10, 2008 7:27 pm    Заголовок сообщения: Ответить с цитатой

Юров Ю.С. писал(а):
fly писал(а):
Но решение olimp'a мне нравится с ходу.

Если разобраться, в нём есть одна загвоздка
olimp писал(а):
2. Написать триггер, который будет проверять соответствие разрешенного периода и периода сохраняемого документа

Как сделать триггер на запрет сохранения документов?
http://www.accent6.com/forum/viewtopic.php?t=681&highlight=trigger - тогда мне на этот вопрос никто не ответил.
Может Olimp знает?

А кто отменял триггеры для INSERT или UPDATE ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Юров Ю.С.



Зарегистрирован: 11.03.2005
Сообщения: 383
Откуда: Павлоград

СообщениеДобавлено: Чт Апр 10, 2008 7:55 pm    Заголовок сообщения: Ответить с цитатой

olimp писал(а):
А кто отменял триггеры для INSERT или UPDATE ?

А у меня здесь какой? http://www.accent6.com/forum/viewtopic.php?t=681&highlight=trigger
Откатить сохраняемый документ триггером, если его дата не в периоде, скорее всего получится легко. Мой вопрос несколько выходит за пределы темы, я его снимаю.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Акцент -> Акцент 7.0 Часовой пояс: GMT + 2
На страницу Пред.  1, 2, 3  След.
Страница 2 из 3

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group