Transfer ERC1155 from contract to user

Hello.

How to transfer ERC1155 from contract address(this) to user?

Contract owner erc1155 -> User

ERC20 - Nice

        IERC20(0x326C977E6efc84E512bB9C30f76E30c160eD06FB).transfer(
            0x7aD5F9a2d9c4AaaE19FCAd229d9652d9E6eC7c63,
            3 wei
        );

ERC20 - Error

        IERC20(0x326C977E6efc84E512bB9C30f76E30c160eD06FB).transferFrom(
            address(this),
            0x7aD5F9a2d9c4AaaE19FCAd229d9652d9E6eC7c63,
            3 wei
        );

ERC1155 - Error

        uint256[] memory a;
        a[0] = 10;
        uint256[] memory b; 
        b[0] = 2;
        IERC1155(0x1b0024Bd52F837B36eF73A507FC6e26212dB3324).safeBatchTransferFrom(
            address(this),
            0x7aD5F9a2d9c4AaaE19FCAd229d9652d9E6eC7c63,
            a,
            b,
            ""
        );

Is there an similar function ERC20.transfer in ERC1155?

Hmm..

Success:

        uint256[] memory a = new uint256[](1);
        a[0] = 10;
        uint256[] memory b = new uint256[](1); 
        b[0] = 1;
        IERC1155(0x1b0024Bd52F837B36eF73A507FC6e26212dB3324).safeBatchTransferFrom(
            address(this),
            0x7aD5F9a2d9c4AaaE19FCAd229d9652d9E6eC7c63,
            a,
            b,  
            ""
        );

Error:

        uint256[] memory a;
        a[0] = 10;
        uint256[] memory b; 
        b[0] = 2;
        IERC1155(0x1b0024Bd52F837B36eF73A507FC6e26212dB3324).safeBatchTransferFrom(
            address(this),
            0x7aD5F9a2d9c4AaaE19FCAd229d9652d9E6eC7c63,
            a,
            b,
            ""
        );

ERC1155's safeTransferFrom and safeBatchTransferFrom should have worked in this situation. The error is somewhere else.