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