2 дня уже потратил, ищу тему про СКД, как выводить в таблице не ресурсы, а текстовые значения? Посоветуйте что почитать? Или помогите разобраться...
Есть регистр сведений :
Сотрудник, Расписание (измерения)
Иванов | Пн
Иванов | Ср
Иванов | Пт
Петров | Пт
Петров | Вс
Нужно в отчете (скрин):
В строках сотрудники, колонки пользовательские поля День1-День7.
В пересечении строк и колонок данные из регистра из измерения Расписание: "Пн", "Вт", "Ср".
Сотрудники | День1 | День2 ...
Иванов | Пн | Ср
Петров | Пт | Вс
Как подскажите это реализовать?
Есть регистр сведений :
Сотрудник, Расписание (измерения)
Иванов | Пн
Иванов | Ср
Иванов | Пт
Петров | Пт
Петров | Вс
Нужно в отчете (скрин):
В строках сотрудники, колонки пользовательские поля День1-День7.
В пересечении строк и колонок данные из регистра из измерения Расписание: "Пн", "Вт", "Ср".
Сотрудники | День1 | День2 ...
Иванов | Пн | Ср
Петров | Пт | Вс
Как подскажите это реализовать?
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Да 2 поля в регистре сведений. А день1 и день2 - это колонки отчета с абстрактными названиями дней, как бы по этим колонкам можно быстро сказать сколько дней отмечено в расписании сотрудника. Т.е. максимум 7 колонок (7дней). Они не относятся к каким-либо полям таблиц. Можно сказать они фиксированные, пользовательские. Но как это сделать в СКД я не знаю. Поэтому я в отчете в таблице в колонках задал Расписание и оно же Ресурс - догадываюсь, что так нельзя делать. Но сам не пойму как создать эти колонки. В колонке День1 может быть для одного сотрудника Пн, а для другого Вс. Не важно, что Вс будет День1, это как бы не номер дня недели, а номер дня в расписании сотрудника и для него может быть только одна запись в регистре, она означает, что у него в расписании один день Вс. С ресурсом "Расписание" сделал по аналогии как в найденных статьях, поставил функцию максимум, которая должна работать не только с числами. Но к сожалению "Расписание" в регистре не является ресурсом, а лишь измерением. Переделывать регистр нет возможности. Хотя конечно если решений не найдется наверное придется переделывать регистр, тогда нужно перепроводить документы? или писать отчет программно. Хочется понять, можно ли на СКД сделать такой отчет))
(4) Прикрепляю скрин, я уже создал в отчете Пользовательские поля День1-День7 и даже ошибок нет, отчет выводит ресурсы (они же измерения Расписание), функция Количество выводит количество дней, теперь нужно написать в выражении чтобы выводился первый элемент, а в поле7 чтобы выводился 7-й, но список функций ресурсов этого не позволяет сделать
Прикрепленные файлы:
задача про то как пронумеровать строки в запросе в пределах группировки...
можно сделать в этом конкретном случае соединив набор с самим собой вроде такого
sel ect s, d, sum(d) n fr om t t0 join t t1 on t0.s = t1.s and t0.d >= t1.d
group by t0.s,t0.d
можно сделать в этом конкретном случае соединив набор с самим собой вроде такого
sel ect s, d, sum(d) n fr om t t0 join t t1 on t0.s = t1.s and t0.d >= t1.d
group by t0.s,t0.d
что то задачка посложнее оказалась, чем в соседней теме.
решена частично, т.к. в запросе используется конструкция первые 1000 для сортировки
Физлицо - строки, ДеньПоПорядку - колонки, День - Ресурс (Максимум)
решена частично, т.к. в запросе используется конструкция первые 1000 для сортировки
ВЫБРАТЬ
"День1" КАК ДеньПоПорядку,
1 КАК НомерПоПорядку
ПОМЕСТИТЬ ДниПоПорядку
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"День2",
2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"День3",
3
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"День4",
4
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"День5",
5
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"День6",
6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
"День7",
7
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1000
ЕщеРасписание.Физлицо КАК Физлицо,
ЕщеРасписание.День КАК День,
АВТОНОМЕРЗАПИСИ() КАК НомерЗаписи
ПОМЕСТИТЬ ТабАвтопорядок
ИЗ
РегистрСведений.ЕщеРасписание КАК ЕщеРасписание
УПОРЯДОЧИТЬ ПО
Физлицо,
ЕщеРасписание.День.Порядок
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ТабАвтопорядок.Физлицо КАК Физлицо,
МИНИМУМ(ТабАвтопорядок.НомерЗаписи) КАК МинНомер
ПОМЕСТИТЬ ТабМинимум
ИЗ
ТабАвтопорядок КАК ТабАвтопорядок
СГРУППИРОВАТЬ ПО
ТабАвтопорядок.Физлицо
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ТабАвтопорядок.Физлицо КАК Физлицо,
ТабАвтопорядок.День КАК День,
ТабАвтопорядок.НомерЗаписи - ТабМинимум.МинНомер + 1 КАК НомерПоПорядку
ПОМЕСТИТЬ ТабИтоговая
ИЗ
ТабАвтопорядок КАК ТабАвтопорядок
ЛЕВОЕ СОЕДИНЕНИЕ ТабМинимум КАК ТабМинимум
ПО ТабАвтопорядок.Физлицо = ТабМинимум.Физлицо
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ДниПоПорядку.ДеньПоПорядку КАК ДеньПоПорядку,
ТабИтоговая.Физлицо КАК Физлицо,
ТабИтоговая.День КАК День
ИЗ
ДниПоПорядку КАК ДниПоПорядку
ЛЕВОЕ СОЕДИНЕНИЕ ТабИтоговая КАК ТабИтоговая
ПО ДниПоПорядку.НомерПоПорядку = ТабИтоговая.НомерПоПорядку
ПоказатьФизлицо - строки, ДеньПоПорядку - колонки, День - Ресурс (Максимум)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот