Есть такая задача (https://projecteuler.net/problem=816) - для заданного множества точек на плоскости найти минимальное расстояние между двумя точками. Эту задачу уже решили 614 человек и она очень простая. Точки расположены так, что для решения надо упорядочить ряд точек по оси Х или оси Y, затем найти расстояние между соседними точками и выбрать минимальное. В общем случае алгоритм сложнее, но для данного набора точек предложенный подход дает правильное значение. Вопрос состоит в том, как найти ответ с помощью запроса в 1С. На первом шаге заполняется таблица с координатами и передается в запрос через параметр.
ВЫБРАТЬ
Координаты.Х,
Координаты.У
ПОМЕСТИТЬ Координаты
ИЗ
&Координаты КАК Координаты;
ВЫБРАТЬ
Минимум(sqrt((Координаты1.Х-Координаты0.Х)*(Координаты1.Х-Координаты0.Х) + (Координаты1.У-Координаты0.У)*(Координаты1.У-Координаты0.У)))
ИЗ
Координаты КАК Координаты0
Полное Соединение
Координаты КАК Координаты1
ПО (Координаты1.Х<>Координаты0.Х
ИЛИ Координаты1.У<>Координаты0.У)