Запрет на удаление ордеров и накладных

Администрирование баз данных (Pervasive.SQL, MS SQL, Oracle, утилита Support)

Модераторы: m0p3e, edward_K, Модераторы

Ответить
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Запрет на удаление ордеров и накладных

Сообщение hope »

Добрый день!

Подскажите, пожалуйста, как настроить запрет на удаление накладных и ордеров?

Настроила в правах пользователя на таблицы KatSopr, SpSopr, SklOrder, SpOrder доступ только на чтение, добавление, модификация.

Но при этом в накладной можно на поле "Дата списания" нажать Delete. Галактика напишет, что удалить нельзя. Но при этом "дату списания" очистит, и в списке накладных покажет, что накладная с "-", т.е. без ордеров (хотя реально ордера есть). Далее, у пользователя со всеми правами, удаляем накладную, Галактика удаляет только накладную, а ордер остается подвисший.

Как еще возможно настроить доступ на запрет удаления ордеров и накладных?

Спасибо!
oiko
Местный житель
Сообщения: 418
Зарегистрирован: 29 мар 2005, 17:49

Сообщение oiko »

Поработай с доступом по полям
не давай доступ на модификацию dopr.
Если платформа не первазив можно написать триггер.
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

тут еще не все указано
нужно и про SpDocNal не забыть
да и еще несколько таблиц, используемых для различных видов накладных
Savich
Постоянный гость
Сообщения: 52
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Беларусь

Сообщение Savich »

Можно конфигуратором в окне "Редактирование накладной" в поле "Дата списания" установить свойство Skip. После этого Галка не дает удалить ордера.
kovail
Посетитель
Сообщения: 46
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь

Сообщение kovail »

А саппортом наложить фильтр?
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение hope »

Чем дальше в лес, тем больше дров.

Поле "дата списания" я могу закрыть от редактирования конфигуратором. Но еще остается вариант просто кнопка "списать" / "оприходовать". По которой ордера, если есть, то они удаляются, и создаются.
При моей настройке ордера не удаляются, но при этом создаются еще раз. Так накладную можно править и сколько хочешь ордеров создавать. Бардак.

С триггерами я еще ни разу не работала. Но народ говорит, что и там такая же ерунда может получиться. Галактике самой все равно: есть доступ на удаление, нет доступа - она это не анализирует, шлепает себе дальше....

Если закрыть доступ на модификацию поля dopr в накладной - тогда ведь нельзя будет сделать ордер (ведь изначально это поле пустое и только после оприходования/списания заполняется).

Должно же быть какое-то рабочее решение...???

Попробою настроить доступ с анализом поля DOpr - если оно не пусто, тои модифицировать накладкную не давать.....????
sim
Местный житель
Сообщения: 1805
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Россия

Сообщение sim »

Установи настройку "Разрешать редактирование сопроводительных документов" - "нет"
oiko
Местный житель
Сообщения: 418
Зарегистрирован: 29 мар 2005, 17:49

Сообщение oiko »

... Но народ говорит, что и там такая же ерунда может получиться. Галактике самой все равно: есть доступ на удаление, нет доступа - она это не анализирует, шлепает себе дальше....

А менеджеру базы данных наплевать что думает Галактика,
если триггер настроен правильно то он не даст ни удалить не модифицировать запись
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение hope »

>> Установи настройку "Разрешать редактирование сопроводительных документов" - "нет"

- это хорошо: через ДО делать накладные, потом пакетно их списывать - работает, удалить не удастся.
Но! Тогда операторы не смогут вводить накладные на внутреннее перемещение.
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение hope »

oiko!
можешь подробнее рассказать?
oiko
Местный житель
Сообщения: 418
Зарегистрирован: 29 мар 2005, 17:49

Сообщение oiko »

Простенький пример для Oracle
Если накладная оприходована то ее не удалить и не модифицировать поле dopr.
CREATE OR REPLACE TRIGGER "GAL"."AAA" BEFORE
UPDATE
OR DELETE OF "FDOPR" ON "GAL"."KATSOPR" FOR EACH ROW BEGIN
IF :OLD.Fdopr>0 THEN
RAISE_APPLICATION_ERROR( -20001 , 'Record Locked');
ELSE NULL;
END IF;
END;
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Сообщение hope »

Спасибо!

В правах доступа ведь тоже можно настроить права по условиям. Также анализировать dopr. Или тут есть в чем-то существенная разница?

И еще, сейчас переходим на 7.12 - там уже все попроще: поле "дата списания" уже не доступно для редактирования и добавилась кнопка "отменить списание". Наверное, достаточно будет конфигуратором убрать кнопку "отменить списание".
oiko
Местный житель
Сообщения: 418
Зарегистрирован: 29 мар 2005, 17:49

Сообщение oiko »

Разница существенная на задание прав по условиям есть ограничения.
В триггере я могу настроить сколь угодно запутанное условие например запретить удалять накладную если складские ордера созданые по ней админом.
Ответить