Страница 1 из 1

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

Добавлено: 29 апр 2005, 13:27
hope
Добрый день!

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

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

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

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

Спасибо!

Добавлено: 29 апр 2005, 14:30
oiko
Поработай с доступом по полям
не давай доступ на модификацию dopr.
Если платформа не первазив можно написать триггер.

Добавлено: 29 апр 2005, 16:24
Max_Fin
тут еще не все указано
нужно и про SpDocNal не забыть
да и еще несколько таблиц, используемых для различных видов накладных

Добавлено: 02 май 2005, 11:42
Savich
Можно конфигуратором в окне "Редактирование накладной" в поле "Дата списания" установить свойство Skip. После этого Галка не дает удалить ордера.

Добавлено: 04 май 2005, 08:40
kovail
А саппортом наложить фильтр?

Добавлено: 04 май 2005, 08:44
hope
Чем дальше в лес, тем больше дров.

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

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

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

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

Попробою настроить доступ с анализом поля DOpr - если оно не пусто, тои модифицировать накладкную не давать.....????

Добавлено: 04 май 2005, 09:35
sim
Установи настройку "Разрешать редактирование сопроводительных документов" - "нет"

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

А менеджеру базы данных наплевать что думает Галактика,
если триггер настроен правильно то он не даст ни удалить не модифицировать запись

Добавлено: 04 май 2005, 12:26
hope
>> Установи настройку "Разрешать редактирование сопроводительных документов" - "нет"

- это хорошо: через ДО делать накладные, потом пакетно их списывать - работает, удалить не удастся.
Но! Тогда операторы не смогут вводить накладные на внутреннее перемещение.

Добавлено: 04 май 2005, 12:30
hope
oiko!
можешь подробнее рассказать?

Добавлено: 04 май 2005, 14:46
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;

Добавлено: 05 май 2005, 07:58
hope
Спасибо!

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

И еще, сейчас переходим на 7.12 - там уже все попроще: поле "дата списания" уже не доступно для редактирования и добавилась кнопка "отменить списание". Наверное, достаточно будет конфигуратором убрать кнопку "отменить списание".

Добавлено: 05 май 2005, 09:19
oiko
Разница существенная на задание прав по условиям есть ограничения.
В триггере я могу настроить сколь угодно запутанное условие например запретить удалять накладную если складские ордера созданые по ней админом.