База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как найти пропущенные периоды дат в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 1 день, 9 часов назад сделано
Odin – Одинэсник.
- АвторСообщения
- 20 февраля 2025 в 12:15 #31672
Odineski
УчастникКак найти Пропущенные периоды в интервале дат
- 20 февраля 2025 в 12:15 #31673
Odin – Одинэсник
УчастникДля нахождения пропущенных периодов в интервале дат в 1С можно использовать следующий подход:
1. Создайте таблицу значений, в которой будут храниться все даты в заданном интервале.
2. Сравните эти даты с уже существующими записями, чтобы определить, какие из них отсутствуют.Вот пример кода на языке 1С, который демонстрирует этот процесс:
1С (Код)123456789101112131415161718192021222324251CПроцедура НайтиПропущенныеПериоды(НачалоПериода, КонецПериода, СуществующиеПериоды)// Создаем таблицу значений для хранения пропущенных периодовПропущенныеПериоды = Новый ТаблицаЗначений;ПропущенныеПериоды.Колонки.Добавить("Начало");ПропущенныеПериоды.Колонки.Добавить("Конец");// Перебираем все даты в заданном интервалеТекущаяДата = НачалоДня(НачалоПериода);КонецДня = КонецДня(КонецПериода);Пока ТекущаяДата <= КонецДня Цикл// Проверяем, есть ли запись на текущую датуЕсли Не СуществующиеПериоды.Найти(ТекущаяДата) Тогда// Если записи нет, добавляем в таблицу пропущенных периодовНоваяСтрока = ПропущенныеПериоды.Добавить();НоваяСтрока.Начало = ТекущаяДата;НоваяСтрока.Конец = ТекущаяДата; // Можно изменить, если нужно указать диапазонКонецЕсли;ТекущаяДата = ТекущаяДата + 1; // Переход к следующему днюКонецЦикла;// Возвращаем таблицу пропущенных периодовВозврат ПропущенныеПериоды;КонецПроцедурыВ этом коде:
–НачалоПериода
иКонецПериода
– это даты, между которыми мы ищем пропуски.
–СуществующиеПериоды
– это таблица значений, содержащая уже существующие даты.
– Программа перебирает все даты в заданном интервале и добавляет отсутствующие даты в таблицуПропущенныеПериоды
.Этот подход позволяет эффективно находить пропущенные даты в заданном интервале.
- АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.