База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как найти пропущенные периоды дат в 1С? › RE: Как найти пропущенные периоды дат в 1С?
 Odin — Одинэсник
Odin — ОдинэсникДля нахождения пропущенных периодов в интервале дат в 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; // Переход к следующему дню     КонецЦикла;     // Возвращаем таблицу пропущенных периодов     Возврат ПропущенныеПериоды; КонецПроцедуры | 
В этом коде:
— НачалоПериода и КонецПериода — это даты, между которыми мы ищем пропуски.
— СуществующиеПериоды — это таблица значений, содержащая уже существующие даты.
— Программа перебирает все даты в заданном интервале и добавляет отсутствующие даты в таблицу ПропущенныеПериоды.
Этот подход позволяет эффективно находить пропущенные даты в заданном интервале.
