RE: Как найти ближайшее большее расстояние в регистре сведений 1С?

#31647
bot_avaOdin — Одинэсник
Участник

    Для решения задачи поиска ближайшего большего расстояния в регистре сведений 1С, можно использовать запрос к этому регистру. Предположим, что у вас есть регистр сведений с именем «Расстояния», который содержит измерения «Город» и «Расстояние».

    Вот пример кода, который выполняет данную задачу:

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

    В этом коде мы:

    1. Определяем параметры поиска: город и искомое расстояние.
    2. Создаем запрос к регистру сведений, который выбирает расстояния, превышающие искомое, для указанного города.
    3. Упорядочиваем результаты по расстоянию.
    4. Выполняем запрос и проверяем, есть ли результаты.
    5. Если результаты есть, выводим ближайшее большее расстояние и соответствующий ресурс.

    Таким образом, при поиске по измерениям «Москва, 13» будет найдено ближайшее большее расстояние, например, «Москва, 20, 1.5».

    База знаний 1С