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

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



Зарегистрирован: 08.10.2005
Сообщения: 104
Откуда: Горловка

СообщениеДобавлено: Вс Янв 06, 2008 9:22 am    Заголовок сообщения: Защищенный период Ответить с цитатой

Появилась острая необходимость в установке запрета на редактирование документов для определеных пользователей.

В Акценте предусмотрена возможность установки такого периода. Только одна беда он работает для всех пользователей.

Ситуация такая. Все пользователи должны работатать например только в январе или даже текущим днем. Бухгалтер же может зайти в другой период и отредактировать или даже создать какой то документ. Если он для себя снимет защиту, то после перезагрузки Акцента у другого пользователя он (другой пользователь) получает доступ к тому периоду что установил бухгалтер.

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


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

СообщениеДобавлено: Пн Янв 07, 2008 2:41 pm    Заголовок сообщения: Ответить с цитатой

У меня есть такая же необходимость. Лезть в хранимки, которые достают разрешенный период страшновато.

Главное - не понятно достаточно ли исправить хранимку, которая достает этот период из базы, для того, чтобы он доставался иначе. Если достаточно, то можно относительно легко их переделать и сделать диалог установки периодов, разным пользователям.

Второй выход - написать триггера на DOCUMENTS, JOURNAL, JRN_MISC, JRN_PARAMS выглядит громоздко и не стандартно.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
olimp
Site Admin


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

СообщениеДобавлено: Пн Янв 07, 2008 9:51 pm    Заголовок сообщения: Ответить с цитатой

Paul писал(а):
У меня есть такая же необходимость. Лезть в хранимки, которые достают разрешенный период страшновато.

Главное - не понятно достаточно ли исправить хранимку, которая достает этот период из базы, для того, чтобы он доставался иначе. Если достаточно, то можно относительно легко их переделать и сделать диалог установки периодов, разным пользователям.

Второй выход - написать триггера на DOCUMENTS, JOURNAL, JRN_MISC, JRN_PARAMS выглядит громоздко и не стандартно.

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



Зарегистрирован: 17.05.2005
Сообщения: 171
Откуда: Донецк

СообщениеДобавлено: Вт Янв 08, 2008 11:15 am    Заголовок сообщения: Re: Защищенный период Ответить с цитатой

RUMIN писал(а):
Появилась острая необходимость в установке запрета на редактирование документов для определеных пользователей.

В Акценте предусмотрена возможность установки такого периода. Только одна беда он работает для всех пользователей.

Ситуация такая. Все пользователи должны работатать например только в январе или даже текущим днем. Бухгалтер же может зайти в другой период и отредактировать или даже создать какой то документ. Если он для себя снимет защиту, то после перезагрузки Акцента у другого пользователя он (другой пользователь) получает доступ к тому периоду что установил бухгалтер.

Кто и как с этим боролся. Не хочется изобретать очередной велосипед. В идеале хочется устанавливать защищенный период для каждого пользователя свой.

Есть такое понятие как "состояние"
ну а если вы хотите запретить пользователю выбирать период, так необходимо у разработчиков просить событие на изменение периода и самим его контролировать (я не помню такого события, может оно и есть)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
olimp
Site Admin


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

СообщениеДобавлено: Вт Янв 08, 2008 2:23 pm    Заголовок сообщения: Ответить с цитатой

Paul писал(а):
У меня есть такая же необходимость. Лезть в хранимки, которые достают разрешенный период страшновато.

Главное - не понятно достаточно ли исправить хранимку, которая достает этот период из базы, для того, чтобы он доставался иначе. Если достаточно, то можно относительно легко их переделать и сделать диалог установки периодов, разным пользователям.

Второй выход - написать триггера на DOCUMENTS, JOURNAL, JRN_MISC, JRN_PARAMS выглядит громоздко и не стандартно.

В догонку. Если делать более одного разрешенного периода, то контроль за ним уйдет с сервера на клиента.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
treasurer



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

СообщениеДобавлено: Ср Янв 09, 2008 12:18 pm    Заголовок сообщения: Ответить с цитатой

Задачу можно решить так:
1. Запомнить даты начала и окончания разрешенного периода.
2. Записать запросом в таблицу SYS_PARAMS даты начала и окончания разрешенного периода для данного пользователя.
3. Вызвать Workarea.RefreshPeriod.
4. Записать запросом в таблицу SYS_PARAMS запомненные даты начала и окончания разрешенного периода.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Paul
Житель острова Крит


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

СообщениеДобавлено: Вс Янв 13, 2008 9:08 pm    Заголовок сообщения: Ответить с цитатой

olimp писал(а):
И какой тогда смысл защищенного периода, когда каждый может делать что хочет ? Открывайте декабрь, а проблемы потом в протоколе будете ловить.

Смысл простой, есть оператор, он должен работать в узком диапазоне, вчера, сегодня.
Есть бухгалтер, который сводит месяца и работает в диапазоне предыдущий месяц, текущий месяц. Иногда, не дай бог, и более ранний срок. Хотелось бы, чтобы пока бухгалтер правит предыдущий квартал, оператор там не хулиганил. Лог в данном случае помошник слабый, он поможет найти виноватого, но не исправить проблему.

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

Не вижу никакой связи между причиной и предполагаемым следствием. Даже триггером можно сделать разные периоды для разных пользователей.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
olimp
Site Admin


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

СообщениеДобавлено: Пн Янв 14, 2008 11:39 am    Заголовок сообщения: Ответить с цитатой

Paul писал(а):
Смысл простой, есть оператор, он должен работать в узком диапазоне, вчера, сегодня.
Есть бухгалтер, который сводит месяца и работает в диапазоне предыдущий месяц, текущий месяц. Иногда, не дай бог, и более ранний срок.

Напиши триггер, добавь диалог для работы с группами.

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



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

СообщениеДобавлено: Пн Янв 14, 2008 1:10 pm    Заголовок сообщения: Ответить с цитатой

Paul писал(а):
Даже триггером можно сделать разные периоды для разных пользователей.

А можно поподробнее, как сделать триггером запрет изменения документа?
Мне приходится в триггере вызывать критическую ошибку и рвать соединение, иначе виснет пользователь. Одно утешатет, что в логе сервера по 50000 видно, кто пытался влезть куда не положено.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Paul
Житель острова Крит


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

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

Извините, только заметил вопрос. У меня есть пример запрета правки корреспондентов для всех пользователей кроме одного:
CREATE TRIGGER [dbo].[LockAg] ON [dbo].[AGENTS]
AFTER INSERT, UPDATE
AS

declare @usr char(50)
select @usr=suser_sname(suser_sid(System_user))

If Exists(SELECT AG_ID FROM inserted where AG_ID = 1) and (@usr = N'Admin')
BEGIN
raiserror (' Править свойства фирмы может только Admin', 16, 1)
rollback transaction
END

Аналогично можно блокировать таблицы DOCUMENTS, DOC_PARAMS, JOURNAL, JRN_PARAMS в зависимости от имени пользователя либо вхождения пользователя в определенную группу Isnull(IS_MEMBER ('_Кладовщики'), 0) = 1
raiserror - в данном случае выводит сообщение в Акцент
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Paul
Житель острова Крит


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

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

Кто-нибудь решил проблему отдельных защищенных периодов для разных пользователей в общем виде?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Виктор



Зарегистрирован: 10.03.2005
Сообщения: 210
Откуда: Горловка (Щирий кум)

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

Paul писал(а):
Кто-нибудь решил проблему отдельных защищенных периодов для разных пользователей в общем виде?

Да тут по моему все просто
1) Создаем диалог правки разрешений периодов для пользователей
2) В UserParam заносим дату начала и окончания периода
3) Во все формочки перед открытием вставляем функцию проверки возможности правки
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Юров Ю.С.



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

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

Paul писал(а):
У меня есть пример запрета правки корреспондентов для всех пользователей кроме одного


Паш, для журнала RAISERROR + rollback transaction не получается.
Вернее так - удаление документа спокойно откатывает, а после отката изменения идут неисправимые глюки.
Я этим занимался достаточно упорно, но допускаю, что существует какой-то вариант.
Там получается, что транзакция начинается методами API, а мы пытаемся завершить её TSQL-ными методами.
Что-то связанное с пресловутой sp_unprepare.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Geo.K



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

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

Виктор писал(а):
3) Во все формочки перед открытием вставляем функцию проверки возможности правки

А вручную через журнал? А модуль какой-нибудь запустить, который скопом создает/удаляет операции?

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



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

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

[quote="Geo.K"]
Виктор писал(а):
Как по мне, так нужно переделать хранимки, возвращающие защищенный период.

А в чём проблемы с защищённым периодом?
Разве он не кешируется на локальном компьютере?
Какие-то хранимки его читают прямо из базы данных?

По-моему период читается один раз - при загрузке Workarea, когда логин уже известен. А если не изменять на локальном компьютере, он таким для этого пользователя и останется, как при запуске Акцента. Вот на этот момент (Workarea_OnLoad) и подменять в базе данных. А хранить в UserParams - диалогом раздачи периодов владеет только главбух или его доверенные лица.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Акцент -> Акцент 7.0 Часовой пояс: GMT + 2
На страницу 1, 2, 3  След.
Страница 1 из 3

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


Powered by phpBB © 2001, 2005 phpBB Group