An alias does not use command line parameters. It is replaced by its definition, and then the rest of your command line is expanded and appended to it. $1 in your case is not the second word on the command line but the first positional parameter of your interactive shell.
To enable passing of parameters, use a shell function.
So, if I understand correctly, the $1 in this case does nothing. When I issue the command "ff x*", it is expanded as "find . $1 x*" where the system looks for any files that have a name "$1" or starts with x.
Of course every script, also .profile can include function. But if you like function working like alias = global then you need to set ENV and make some file which have to read every time when you start sh process. Usually it has named .kshrc. In my solution I have only show that name can be any. "Standard" is to use .shrc or .kshrc. Bash use .bashrc.
If you like function is usable also in child process then add to the .profile:
ENV=$HOME/.kshrc
export ENV
And make file .kshrc which include ex. those function which you like to be global.
But if you like to put together this need with ksh and bash, then make $HOME/.bashrc
and set ENV=$HOME/.bashrc + export in the profile.
=> function and all other settings are global in the bash and ksh93.
FPATH and autoload is the other method to make function working also in child process. = Autoload function when shell is launched.
I have not seen any command to set function to be global. Compare export for the variables.
I don't know any shells which use .profile when you launch shell.
Profiles are used only in login process or example when use su with option -.
=> if you like your variables are global, you need to make global (export cmd) and for function you need to make it using .bashrc in bash using end set ENV=file in ksh or dash using.
You can test it: when you have logged in, give the command:
bash
# now try your function which you have in .profile, not work or /etc/profile, ~/.bash_profile, ~/.bash_login
# but if function is in the .bashrc or in ksh/dash ENV=filename file, then it works
But if it's enough that it works only in current process, then .profile is okay. But if you like to use function in subprocess, then .profile is wrong place, it not work in child process.