create procedure dbo.%PROC% @sid varchar(30) = null as .BEGIN('N') .CHECK_USER .CHECK_UPDATE .GET_PROPS .INT_VAR(@pay_perpose) .ASSIGN(@pay_perpose,((select code from t_purposes where id=@is_dogovor_id))) if @pay_perpose = 30 and @foundation_id is null .EXIT_MESSAGE('Не задан документ основание') if (@pay_perpose = 30 and @foundation_id is not null and not exists (select 1 from td_depo_docs where id=@foundation_id and ( (.ITEMS_EXISTS_BY_TYPE_STATE(td_depo_docs.id,'DOG_DEALINGS_SALE_VBR','PODP')) or (.ITEMS_EXISTS_BY_TYPE_STATE(td_depo_docs.id,'DOG_DEALINGS_SALE_VBR','OPL_END')) ) ) ) .EXIT_MESSAGE('Сделка, к которой привязана данная депозитарная операция, находится в неверном статусе') begin tran if @new_state_id is null select @new_state_id = (select state_id from t_actions where id=@action_id) .ACTION_HISTORY .NAME_VAR(@action_history_id_s) .UPDATE_STATE select @action_history_id_s = .TO_STR(@action_history_id) EXECUTE dbo.ap_prepare_secur_out @id,@action_history_id if .ITEM_TYPE_CODE(@foundation_id) IN ('DOG_DEALINGS_BAY_VBR','DEALINGS_VIA_BROKER','DOG_DEALINGS_SALE_VBR','DEALINGS_VIA_BROKER_SALE') begin select @client_contract_id = tb_baysale_docitems.client_contract_id from tb_baysale_docitems where tb_baysale_docitems.id = @foundation_id update td_stock_moves set client_contract_id = @client_contract_id where td_stock_moves.id = @id end #ifdef ALD_XML .EXEC_ACTION(@sid,'XML_FRSD_R332_WEB','CREATE') #endif if @@error != 0 begin rollback transaction ---- delete from t_actions_history where id = @action_history_id .EXIT_MESSAGE('Метод на исполнение списания по депозитарной операции типа Бекоффисные депозитарные операции вернул ошибку') return end commit tran .END