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