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

Как найти ближайшее...
 

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


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

есть регистр сведений, где измерение название города и расстояние, а ресурс коэффициент. Например Москва, 10, 1.1 или Москва, 20, 1.5. Как сделать так чтобы при поиске по измерениям Москва, 13 он находил ближайшее большее расстояние, в данном примере Москва, 20, 1.5?



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

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

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

1C
// Параметры поиска
ГородПоиска = "Москва";
ИскомоеРасстояние = 13;

// Создаем запрос
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ 
        Расстояния.Расстояние, 
        Расстояния.Ресурс 
    ИЗ 
        РегистрСведений.Расстояния КАК Расстояния 
    ГДЕ 
        Расстояния.Город = &Город 
        И Расстояния.Расстояние > &ИскомоеРасстояние 
    УПОРЯДОЧИТЬ ПО 
        Расстояния.Расстояние";

// Устанавливаем параметры
Запрос.УстановитьПараметр("Город", ГородПоиска);
Запрос.УстановитьПараметр("ИскомоеРасстояние", ИскомоеРасстояние);

// Выполняем запрос
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

// Проверяем, есть ли результаты
Если Выборка.Начало() Тогда
    // Получаем ближайшее большее расстояние
    БлижайшееРасстояние = Выборка.Расстояние;
    Ресурс = Выборка.Ресурс;
    Сообщить("Ближайшее большее расстояние: " + БлижайшееРасстояние + ", ресурс: " + Ресурс);
Иначе
    Сообщить("Нет расстояний больше " + ИскомоеРасстояние + " для города " + ГородПоиска);
КонецЕсли;

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

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

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



   
ОтветитьЦитата