Hello,
UnrankPermutation seems to work well! First, the number of permutations:
nrOfPermutations[set__] := Length[set]!/(Count[set, -1]! Count[set, 0]! Count[set, 1]!)
Then
list7 = {-1, -1, -1, 0, 1, 1, 1};
list100 = RandomInteger[{-1, 1}, 100];
In[11]:= nrOfPermutations@list7
nrOfPermutations@list100
Out[11]= 140
Out[12]= 3133814355737177511825520127334957139222939200
Finally
In[13]:= UnrankPermutation[50, list7]
Out[13]= {-1, -1, 1, -1, 1, 0, 1}
In[14]:= UnrankPermutation[5378, list100]
Out[14]= {1, 0, -1, 1, 0, 0, 1, -1, 1, -1, 0, 1, -1, -1, 1, -1, 0, 1, \
1, 0, 0, 1, 0, -1, -1, -1, -1, -1, 0, 0, 1, 0, 1, 0, -1, 1, 1, -1, \
-1, -1, 1, 0, -1, 1, 0, -1, -1, 0, -1, 0, -1, -1, 1, 0, -1, -1, 1, 1, \
1, -1, 1, 0, -1, 0, 1, -1, -1, -1, -1, 0, 0, -1, 1, 1, 0, 1, 0, -1, \
-1, 0, 0, 1, 0, 0, 1, 1, -1, 1, 1, -1, 0, 0, -1, 1, -1, 1, 0, -1, 0,
1}