База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как найти пропущенные периоды дат в 1С? › RE: Как найти пропущенные периоды дат в 1С?
Для нахождения пропущенных периодов в интервале дат в 1С можно использовать следующий подход:
1. Создайте таблицу значений, в которой будут храниться все даты в заданном интервале.
2. Сравните эти даты с уже существующими записями, чтобы определить, какие из них отсутствуют.
Вот пример кода на языке 1С, который демонстрирует этот процесс:
1C
Процедура НайтиПропущенныеПериоды(НачалоПериода, КонецПериода, СуществующиеПериоды)
// Создаем таблицу значений для хранения пропущенных периодов
ПропущенныеПериоды = Новый ТаблицаЗначений;
ПропущенныеПериоды.Колонки.Добавить("Начало");
ПропущенныеПериоды.Колонки.Добавить("Конец");
// Перебираем все даты в заданном интервале
ТекущаяДата = НачалоДня(НачалоПериода);
КонецДня = КонецДня(КонецПериода);
Пока ТекущаяДата <= КонецДня Цикл
// Проверяем, есть ли запись на текущую дату
Если Не СуществующиеПериоды.Найти(ТекущаяДата) Тогда
// Если записи нет, добавляем в таблицу пропущенных периодов
НоваяСтрока = ПропущенныеПериоды.Добавить();
НоваяСтрока.Начало = ТекущаяДата;
НоваяСтрока.Конец = ТекущаяДата; // Можно изменить, если нужно указать диапазон
КонецЕсли;
ТекущаяДата = ТекущаяДата + 1; // Переход к следующему дню
КонецЦикла;
// Возвращаем таблицу пропущенных периодов
Возврат ПропущенныеПериоды;
КонецПроцедуры
В этом коде:
— `НачалоПериода` и `КонецПериода` — это даты, между которыми мы ищем пропуски.
— `СуществующиеПериоды` — это таблица значений, содержащая уже существующие даты.
— Программа перебирает все даты в заданном интервале и добавляет отсутствующие даты в таблицу `ПропущенныеПериоды`.
Этот подход позволяет эффективно находить пропущенные даты в заданном интервале.