1.
Pim
186
28.03.20 16:12
Сейчас в теме
Есть иерархический справочник "Работы" (иерархия элементов и групп). В справочнике есть поле "Дата начала" и "Дата окончания". Есть регистр сведений "Производственный календарь", в кот. указываются, какие дни рабочие (дата, вид дня).
Вывожу справочник в Дерево значений с помощью СКД. Одна группировка Работа (вместе с иерархией). Ресурсы "Дата начала" и "Дата окончания" и "Продолжительность в раб. днях".
Внимание вопрос ;-). Как посчитать количество раб. дней для групп работ СКД, не используя вызов функции общих / глобальных модулей?
Для детальной записи посчитать не проблема:
Продолжительность = КОЛИЧЕСТВО(РАЗЛИЧНЫЕ (выбор когда ДатаКалендаря >= ДатаНачала И ДатаКалендаря <= ДатаОкончания тогда ДатаКалендаря иначе null конец))
А для группировки выражение [КОЛИЧЕСТВО(РАЗЛИЧНЫЕ (выбор когда ДатаКалендаря >= Минимум(ДатаНачала) И ДатаКалендаря <= Максимум(ДатаОкончания) тогда ДатаКалендаря иначе null конец))] выдаёт ошибку.
Набор СКД:
ВЫБРАТЬ
Работы.Ссылка,
Работы.ДатаНачала,
Работы.ДатаОкончания,
Календарь.ДатаКалендаря
ИЗ
Справочник.Работы КАК Работы
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПроизводственныйКалендарь КАК Календарь
ПО
Календарь.ВидДня <> ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Нерабочий)
Как должно быть:
Например, 1 - 5 -- рабочие дни.
"Работа 1" делается с 1 по 2, продолжительность 2 дн. "Работа 2" -- 4 числа, 1 дн. "Группа работ" делается с 1 по 4, т.е. 4 дн.
Готов рассмотреть др. варианты (не используя СКД). Главный критерий -- производительность.