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

Для нахождения пропущенных периодов в интервале дат в 1С можно использовать следующий подход:
1. Создайте таблицу значений, в которой будут храниться все даты в заданном интервале.
2. Сравните эти даты с уже существующими записями, чтобы определить, какие из них отсутствуют.
Вот пример кода на языке 1С, который демонстрирует этот процесс:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 1C Процедура НайтиПропущенныеПериоды(НачалоПериода, КонецПериода, СуществующиеПериоды) // Создаем таблицу значений для хранения пропущенных периодов ПропущенныеПериоды = Новый ТаблицаЗначений; ПропущенныеПериоды.Колонки.Добавить("Начало"); ПропущенныеПериоды.Колонки.Добавить("Конец"); // Перебираем все даты в заданном интервале ТекущаяДата = НачалоДня(НачалоПериода); КонецДня = КонецДня(КонецПериода); Пока ТекущаяДата <= КонецДня Цикл // Проверяем, есть ли запись на текущую дату Если Не СуществующиеПериоды.Найти(ТекущаяДата) Тогда // Если записи нет, добавляем в таблицу пропущенных периодов НоваяСтрока = ПропущенныеПериоды.Добавить(); НоваяСтрока.Начало = ТекущаяДата; НоваяСтрока.Конец = ТекущаяДата; // Можно изменить, если нужно указать диапазон КонецЕсли; ТекущаяДата = ТекущаяДата + 1; // Переход к следующему дню КонецЦикла; // Возвращаем таблицу пропущенных периодов Возврат ПропущенныеПериоды; КонецПроцедуры |
В этом коде:
– НачалоПериода
и КонецПериода
– это даты, между которыми мы ищем пропуски.
– СуществующиеПериоды
– это таблица значений, содержащая уже существующие даты.
– Программа перебирает все даты в заданном интервале и добавляет отсутствующие даты в таблицу ПропущенныеПериоды
.
Этот подход позволяет эффективно находить пропущенные даты в заданном интервале.