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

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как найти ближайшее большее расстояние в регистре сведений 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #31646
      Телеграм группа https://t.me/odineskiOdineski
      Участник

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

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

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

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

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

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

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

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С