PIC18F45K50 Interrupts
So there are a couple things that need to change in your code. The microcontroller may be detecting the interrupt but your code doesn't handle it properly. When coding in ASM on the PIC family you have to take care of a lot of things manually. Interrupts in ASM require you to save the status and working registers before actually dealing with the interrupt. Normally you'd poll the peripheral flag but that's when you're dealing with multiple interrupts. Since you only have one we'll keep it simple. 

At the start of the program, the usual way to tell the microcontroller to go to the main program is to put one goto after the ORG 0x00. So tidying up the initial parts of your code will yield:

    LIST    p=p18f45k50
    INCLUDE "p18f45k50.inc"

; Aim of program: input at B1 toggles the led at D1
; Assembly source line config statements

CONFIG  WDTEN = OFF   
CONFIG LVP = OFF 
CONFIG FOSC = INTOSCIO 

begin   
        ORG 0x00
        goto prog 

hinterrupt  
        ORG 0x08
        goto introutine

        ORG 0x22
prog    
        BCF INTCON3, 0 ;clear flag INT1IF 
        CLRF LATB ;clear latB
        ;D1


In your Interrupt Service Routine 'introutine'you used the goto instruction instead of the retfie instruction. Quoting the manual from section 10.3:


  The "return from interrupt" instruction, retfie exits the interrupt routine and sets the GIE/GIEH bit (GIEH/GIEL if priority levels are used), which re-enables interrupts.


So putting together all the information given so far your generic ISR follows this procedure:


Save status and working registers
Disable global interrupts for high and low levels
Poll interrupt-peripheral flag (if more than one interrupt)
Do user defined operation depending on if the flag is high or not
Clear interrupt-peripheral flag
Restore status and working registers
Exit ISR with retfie


The following ISR assumes you've already allocated a register for W_TEMP and STATUS_T

ISR
                MOVWF   W_TEMP      ; SAVE  W AND STATUS REGISTERS
                SWAPF   STATUS,W
                MOVWF   STATUS_T


                BCF INTCON, 7 ;Disable all interrupts inside interrupt service routine (disable GIEH)
                BCF INTCON3, 0 ;clear flag INT1IF
                MOVLW 0x01
                BSF PORTD, 1

                SWAPF   STATUS_T,W  ; RESTORE W AND STATUS REGISTERS
                MOVWF   STATUS
                SWAPF   W_TEMP,F
                SWAPF   W_TEMP,W

                RETFIE


The reason movwfand swapf are used is because those instructions do not modify the status of the Digit Carry, Zero or Carry Flags. It should also be noted that right now the ISR only turns on the LED and doesn't toggle it, that could be done with a simple XOR mask. 

Lastly, since your whole program is interrupt driven, it would make sense to have the microcontroller in a loop after you've setup everything. Like this:`

    ***code from before**
    ;INT1 hence B1 settings
    BSF INTCON3, 6 ;set INT1 to high priority 
    BSF INTCON2, 5 ;+ve edge trigger for B1
    BSF INTCON3, 3 ;enable INT1
    BSF RCON, 7 ;set IPEN to HIGH thus enabling priorities on interrupts
    BSF INTCON, 7 ;set GIEH to high, enabling high priority interrupts
loop
        goto loop


This way after you've set up all the interrupts and the LED, the microcontroller stays in a loop and reacts only to the interrupt