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

Как найти пропущенн...
 

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


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

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



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

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

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

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

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

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

    // Возвращаем таблицу пропущенных периодов
    Возврат ПропущенныеПериоды;
КонецПроцедуры

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

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



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