База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как найти ближайшее большее расстояние в регистре сведений 1С? › RE: Как найти ближайшее большее расстояние в регистре сведений 1С?
Для решения задачи поиска ближайшего большего расстояния в регистре сведений 1С, можно использовать запрос к этому регистру. Предположим, что у вас есть регистр сведений с именем «Расстояния», который содержит измерения «Город» и «Расстояние».
Вот пример кода, который выполняет данную задачу:
1C
// Параметры поиска
ГородПоиска = "Москва";
ИскомоеРасстояние = 13;
// Создаем запрос
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
Расстояния.Расстояние,
Расстояния.Ресурс
ИЗ
РегистрСведений.Расстояния КАК Расстояния
ГДЕ
Расстояния.Город = &Город
И Расстояния.Расстояние > &ИскомоеРасстояние
УПОРЯДОЧИТЬ ПО
Расстояния.Расстояние";
// Устанавливаем параметры
Запрос.УстановитьПараметр("Город", ГородПоиска);
Запрос.УстановитьПараметр("ИскомоеРасстояние", ИскомоеРасстояние);
// Выполняем запрос
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
// Проверяем, есть ли результаты
Если Выборка.Начало() Тогда
// Получаем ближайшее большее расстояние
БлижайшееРасстояние = Выборка.Расстояние;
Ресурс = Выборка.Ресурс;
Сообщить("Ближайшее большее расстояние: " + БлижайшееРасстояние + ", ресурс: " + Ресурс);
Иначе
Сообщить("Нет расстояний больше " + ИскомоеРасстояние + " для города " + ГородПоиска);
КонецЕсли;
В этом коде мы:
1. Определяем параметры поиска: город и искомое расстояние.
2. Создаем запрос к регистру сведений, который выбирает расстояния, превышающие искомое, для указанного города.
3. Упорядочиваем результаты по расстоянию.
4. Выполняем запрос и проверяем, есть ли результаты.
5. Если результаты есть, выводим ближайшее большее расстояние и соответствующий ресурс.
Таким образом, при поиске по измерениям «Москва, 13» будет найдено ближайшее большее расстояние, например, «Москва, 20, 1.5».