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

Привет, Andrey!
Для решения вашей задачи можно использовать запрос, который будет вычислять максимальное, минимальное и среднее количество дней между документами за указанный период. Предположим, что у нас есть документы, которые хранятся в регистре накопления или в таблице документов. В примере ниже я буду использовать таблицу документов “Документ.Реализация”.
Вот пример запроса, который решает вашу задачу:
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 1C // Параметры для периода ДатаНачала = &ДатаНачала; // Установите дату начала периода ДатаОкончания = &ДатаОкончания; // Установите дату окончания периода Запрос = Новый Запрос(" ВЫБРАТЬ МАКСИМУМ(РазностьДат) КАК МаксимальноеКоличествоДней, МИНИМУМ(РазностьДат) КАК МинимальноеКоличествоДней, СРЕДНЕЕ(РазностьДат) КАК СреднееКоличествоДней ИЗ ( ВЫБРАТЬ Д1.Дата КАК Дата1, Д2.Дата КАК Дата2, РАЗНОСТЬДАТ(Д1.Дата, Д2.Дата, ДЕНЬ) КАК РазностьДат ИЗ Документ.Реализация КАК Д1 , Документ.Реализация КАК Д2 ГДЕ Д1.Дата >= &ДатаНачала И Д1.Дата = &ДатаНачала И Д2.Дата <= &ДатаОкончания И Д1.Дата Д2.Дата ) "); Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала); Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Если Выборка.Найти() Тогда Сообщить("Максимальное количество дней: " + Выборка.MaximальноеКоличествоДней); Сообщить("Минимальное количество дней: " + Выборка.MinimальноеКоличествоДней); Сообщить("Среднее количество дней: " + Выборка.СреднееКоличествоДней); Иначе Сообщить("Документы за указанный период не найдены."); КонецЕсли; |
### Объяснение:
1. **Параметры**: Устанавливаем даты начала и окончания периода.
2. **Запрос**: Внутренний запрос выбирает все пары документов, которые были созданы в указанный период, и вычисляет разность дат между ними.
3. **Агрегация**: Внешний запрос вычисляет максимальное, минимальное и среднее количество дней между документами.
4. **Вывод результатов**: Результаты выводятся в сообщениях.
Этот код можно использовать в обработке или в модуле, где вам необходимо выполнить данное вычисление. Не забудьте заменить “Документ.Реализация” на нужный вам документ, если это необходимо.
Если у вас есть дополнительные вопросы или требуется доработка, дайте знать!