Привет всем форумчанам.
Вопрос такой (без жира).
Допустим есть документ с табличной частью, скажем накладная.
Логика ввода нового документа:
Пишем в NAKLS шапку.
Пишем в NAKLS_T табличную часть, (с сылкой на шапку).
Документ "проводится", т.е. формируются "операции"
Логика изменения проведенного документа:
Изменяем в NAKLS шапку.
Изменяем в NAKLS_T табличную часть, (с сылкой на шапку)
добовляем строки удаляем строки.
Отмена проводки (т.е. отмена операций по предыдущей редакции)
Документ "проводится", т.е. формируются "операции".
Как видно принципиальна возможность изменения и "перепроводки" уже
"проведенного" документа.
Но по идее у пользователя не должно быть возможности изменить документ не скоректировав проводки, что бы содержание "проведенного"
документа всегда соответствовало его "операциям".
Пример:
Вводим Расход 10 изделий, проводим, меняем на 5 изделий и !!! не перепроводим,
хотя документ имеет флаг проводки.
Теперь собственно сам вопрос:
Как можно гарантировать, что "документ" и его "операции" всегда согласуются?
Проблема возникает от того, что клиент всегда может закомитить
последовательность операций.
Можно, конечно, создать хранимку, но как в ней совместить "запись" шапки и
табличной части?
С проводкой (и отменой проводки) проще она легко реализуется через хранимку.
Конечно можно триггер на шапку и список поставить, но иметь в тригере функции
"расчетного" характера, - не то.
К тому же клиент может и неиметь права "отменять" проводку, а только
"перепровести".
Как кто решает подобные вопросы?
PS. Просьба не концентрироваться на приведенном примере. Вопрос должен решаться обшим подходом, так как разных документов (и других
"многострочных" объектов) много.
Заранее спасибо.