В БД канала хранимая
функция [crt].[GETNEARBYSTORESFUNCTION]
"Группы указателей магазинов" (store locator groups) используется, чтобы определить список "претендентов". Информация о координатах берется из вьюхи STOREVIEW и по ним считается расстояние, а если адрес не задан, то координаты NULL и соответственно ничего не выводится.
Вот кусок из вьюхи, который получает координаты
X++:
SELECT
...
lpa.LATITUDE,
lpa.LOCATION,
lpa.LONGITUDE,
...
geography::STGeomFromText('POINT(' + CONVERT(VARCHAR(100), lpa.LONGITUDE) + ' '
+ CONVERT(VARCHAR(100), lpa.LATITUDE) + ')', 4326) AS 'GEOLOCATION',
...
FROM [ax].RETAILCHANNELTABLE rct
INNER JOIN [ax].RETAILSTORETABLE rst ON rct.RECID = rst.RECID
...
LEFT OUTER JOIN [ax].DIRPARTYTABLE dp ON dp.RECID = rct.OMOPERATINGUNITID
...
LEFT OUTER JOIN [ax].DIRPARTYLOCATION AS dpl ON dpl.PARTY = dp.RECID AND dpl.ISPRIMARY = 1
...
LEFT OUTER JOIN [ax].LOGISTICSPOSTALADDRESS AS lpa ON
lpa.LOCATION = dpl.LOCATION
AND lpa.ISPRIVATE = 0
AND GETUTCDATE() BETWEEN VALIDFROM AND VALIDTO