create procedure dbo.%PROC% @sid varchar(30) = null as declare @action_id numeric, @id numeric, @user_id numeric, @state_id numeric, @new_state_id numeric, @type_id numeric begin tran select @action_id = %ACTION_ID% select @id = convert(numeric, @sid) /*** Богаковский 14/06/2005 добавил проверку *******/ if exists(select 1 from t_oper_subconto where t_oper_subconto.item_id=@id) .EXIT_MESSAGE('Удаление невозможно, поскольку существуют проводки по даннй депозитарной операции') declare @foundation_id numeric select @foundation_id = (select foundation_id from td_depo_docs where id=@id) -- Если документ-основание (сделка) находится в статусе "Подтверждена", "Обязательства выполнены", "Поставка выполнена" -- то такую деп. опер. удалять нельзя if .ITEMS_EXISTS_BY_TYPE_STATE(@foundation_id, 'DOG_DEALINGS_BAY_VBR', 'OBYAZ_END') or .ITEMS_EXISTS_BY_TYPE_STATE(@foundation_id, 'DOG_DEALINGS_BAY_VBR', 'POST_END') or .ITEMS_EXISTS_BY_TYPE_STATE(@foundation_id, 'DOG_DEALINGS_SALE_VBR', 'OBYAZ_END') or .ITEMS_EXISTS_BY_TYPE_STATE(@foundation_id, 'DOG_DEALINGS_SALE_VBR', 'POST_END') or .ITEMS_EXISTS_BY_TYPE_STATE(@foundation_id, 'DOG_DEALINGS_BAY_VBR_VEKSEL', 'OBYAZ_END') or .ITEMS_EXISTS_BY_TYPE_STATE(@foundation_id, 'DOG_DEALINGS_BAY_VBR_VEKSEL', 'POST_END') or .ITEMS_EXISTS_BY_TYPE_STATE(@foundation_id, 'DOG_DEALINGS_SALE_VBR_VEKSEL', 'OBYAZ_END') or .ITEMS_EXISTS_BY_TYPE_STATE(@foundation_id, 'DOG_DEALINGS_SALE_VBR_VEKSEL', 'POST_END') or .ITEMS_EXISTS_BY_TYPE_STATE(@foundation_id, 'DEALINGS_VIA_BROKER', 'PODT') or .ITEMS_EXISTS_BY_TYPE_STATE(@foundation_id, 'DEALINGS_VIA_BROKER_SALE', 'PODT') .EXIT_MESSAGE('Невозможно удалить депозитарную операцию, поскольку существуют сделки, ссылающиеся на эту депозитарную операцию') .CHECK_USER .CHECK_UPDATE .UPDATE_STATE .ACTION_HISTORY /*-------Проводки ----------*/ .OPERS_ROLL select @sid = convert(varchar, @id) .DEPO_DELETE_FOUNDATION .DEPO_CHK_REPS(@id,'reports_report_for_operation') commit tran