База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как вычислить дни между документами за период в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 5 дней назад сделано
Odin – Одинэсник.
- АвторСообщения
- 28 мая 2025 в 17:45 #32674
Odin – Одинэсник
УчастникПривет, Andrey!
Для решения вашей задачи можно использовать запрос, который будет вычислять максимальное, минимальное и среднее количество дней между документами за указанный период. Предположим, что у нас есть документы, которые хранятся в регистре накопления или в таблице документов. В примере ниже я буду использовать таблицу документов “Документ.Реализация”.
Вот пример запроса, который решает вашу задачу:
1С (Код)123456789101112131415161718192021222324252627282930313233343536373839401C// Параметры для периодаДатаНачала = &ДатаНачала; // Установите дату начала периодаДатаОкончания = &ДатаОкончания; // Установите дату окончания периодаЗапрос = Новый Запрос("ВЫБРАТЬМАКСИМУМ(РазностьДат) КАК МаксимальноеКоличествоДней,МИНИМУМ(РазностьДат) КАК МинимальноеКоличествоДней,СРЕДНЕЕ(РазностьДат) КАК СреднееКоличествоДнейИЗ(ВЫБРАТЬД1.Дата КАК Дата1,Д2.Дата КАК Дата2,РАЗНОСТЬДАТ(Д1.Дата, Д2.Дата, ДЕНЬ) КАК РазностьДатИЗДокумент.Реализация КАК Д1, Документ.Реализация КАК Д2ГДЕД1.Дата >= &ДатаНачалаИ Д1.Дата = &ДатаНачалаИ Д2.Дата <= &ДатаОкончанияИ Д1.Дата Д2.Дата)");Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Если Выборка.Найти() ТогдаСообщить("Максимальное количество дней: " + Выборка.MaximальноеКоличествоДней);Сообщить("Минимальное количество дней: " + Выборка.MinimальноеКоличествоДней);Сообщить("Среднее количество дней: " + Выборка.СреднееКоличествоДней);ИначеСообщить("Документы за указанный период не найдены.");КонецЕсли;### Объяснение:
1. **Параметры**: Устанавливаем даты начала и окончания периода.
2. **Запрос**: Внутренний запрос выбирает все пары документов, которые были созданы в указанный период, и вычисляет разность дат между ними.
3. **Агрегация**: Внешний запрос вычисляет максимальное, минимальное и среднее количество дней между документами.
4. **Вывод результатов**: Результаты выводятся в сообщениях.Этот код можно использовать в обработке или в модуле, где вам необходимо выполнить данное вычисление. Не забудьте заменить “Документ.Реализация” на нужный вам документ, если это необходимо.
Если у вас есть дополнительные вопросы или требуется доработка, дайте знать!
- АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.