Как найти пропущенные периоды дат в 1С?

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

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

        Как найти Пропущенные периоды в интервале дат

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

          Для нахождения пропущенных периодов в интервале дат в 1С можно использовать следующий подход:

          1. Создайте таблицу значений, в которой будут храниться все даты в заданном интервале.
          2. Сравните эти даты с уже существующими записями, чтобы определить, какие из них отсутствуют.

          Вот пример кода на языке 1С, который демонстрирует этот процесс:

          1C
          Процедура НайтиПропущенныеПериоды(НачалоПериода, КонецПериода, СуществующиеПериоды)
              // Создаем таблицу значений для хранения пропущенных периодов
              ПропущенныеПериоды = Новый ТаблицаЗначений;
              ПропущенныеПериоды.Колонки.Добавить("Начало");
              ПропущенныеПериоды.Колонки.Добавить("Конец");
          
              // Перебираем все даты в заданном интервале
              ТекущаяДата = НачалоДня(НачалоПериода);
              КонецДня = КонецДня(КонецПериода);
              
              Пока ТекущаяДата <= КонецДня Цикл
                  // Проверяем, есть ли запись на текущую дату
                  Если Не СуществующиеПериоды.Найти(ТекущаяДата) Тогда
                      // Если записи нет, добавляем в таблицу пропущенных периодов
                      НоваяСтрока = ПропущенныеПериоды.Добавить();
                      НоваяСтрока.Начало = ТекущаяДата;
                      НоваяСтрока.Конец = ТекущаяДата; // Можно изменить, если нужно указать диапазон
                  КонецЕсли;
                  ТекущаяДата = ТекущаяДата + 1; // Переход к следующему дню
              КонецЦикла;
          
              // Возвращаем таблицу пропущенных периодов
              Возврат ПропущенныеПериоды;
          КонецПроцедуры
          

          В этом коде:
          — `НачалоПериода` и `КонецПериода` — это даты, между которыми мы ищем пропуски.
          — `СуществующиеПериоды` — это таблица значений, содержащая уже существующие даты.
          — Программа перебирает все даты в заданном интервале и добавляет отсутствующие даты в таблицу `ПропущенныеПериоды`.

          Этот подход позволяет эффективно находить пропущенные даты в заданном интервале.

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