|
Отчет в 1С | ☑ | ||
---|---|---|---|---|
0
Kitttt
17.01.22
✎
15:43
|
Всем добрый вечер, пишу отчет на 1С 8.3. Подскажите пожалуйста, как можно разбить колонки по месяцам? Попробовал в ручную забить, все выводит хорошо, но эти месяца идут в алфавитном порядке, хотелось чтобы они логичней шли с января,....декабрь, когда делал не задумался об этом...как-нибудь можно решить это по другому?
Суть отчета: есть справочник Сотрудники в котором реквизит ДатаРождения, необходимо чтобы за указанный период выводилось количество сотрудников по месяцам и по возрастному диапозону. Диапозон в строках, месяца в колонках... Запроc: ВЫБРАТЬ Сотрудники.Наименование КАК Наименование, Сотрудники.ДатаРождения КАК ДатаРождения, ГОД(&ТекущаяДата) - ГОД(Сотрудники.ДатаРождения) - ВЫБОР КОГДА МЕСЯЦ(&ТекущаяДата) < МЕСЯЦ(Сотрудники.ДатаРождения) ТОГДА 1 ИНАЧЕ ВЫБОР КОГДА МЕСЯЦ(&ТекущаяДата) = МЕСЯЦ(Сотрудники.ДатаРождения) И ДЕНЬ(&ТекущаяДата) < ДЕНЬ(Сотрудники.ДатаРождения) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КОНЕЦ КАК Возраст ПОМЕСТИТЬ ВТ_Информация ИЗ Справочник.Сотрудники КАК Сотрудники ГДЕ ВЫБОР КОГДА ГОД(&ДатаНачала) = ГОД(&ТекущаяДата) ТОГДА МЕСЯЦ(Сотрудники.ДатаРождения) МЕЖДУ МЕСЯЦ(&ДатаНачала) И МЕСЯЦ(&ТекущаяДата) ИНАЧЕ МЕСЯЦ(Сотрудники.ДатаРождения) МЕЖДУ МЕСЯЦ(&ДатаНачала) И МЕСЯЦ(КОНЕЦПЕРИОДА(&ДатаНачала, ГОД)) ИЛИ МЕСЯЦ(Сотрудники.ДатаРождения) МЕЖДУ МЕСЯЦ(НАЧАЛОПЕРИОДА(&ДатаНачала, ГОД)) И МЕСЯЦ(&ТекущаяДата) КОНЕЦ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВЫБОР КОГДА ВТ_Информация.Возраст < 20 ТОГДА "Менее 20" КОГДА ВТ_Информация.Возраст >= 20 И ВТ_Информация.Возраст <= 30 ТОГДА "возраст от 20 до 30" КОГДА ВТ_Информация.Возраст >= 31 И ВТ_Информация.Возраст <= 40 ТОГДА "возраст от 31 до 40" КОГДА ВТ_Информация.Возраст >= 41 И ВТ_Информация.Возраст <= 50 ТОГДА "возраст от 41 до 50" ИНАЧЕ "более 50" КОНЕЦ КАК Диапозон, ВТ_Информация.ДатаРождения КАК ДатаРождения, ВТ_Информация.Наименование КАК Сотрудник ПОМЕСТИТЬ ВТ_Заключение ИЗ ВТ_Информация КАК ВТ_Информация ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Заключение.Диапозон КАК Диапозон, ВЫБОР КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 1 ТОГДА "Январь" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 2 ТОГДА "Февраль" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 3 ТОГДА "Март" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 4 ТОГДА "Апрель" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 5 ТОГДА "Май" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 6 ТОГДА "Июнь" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 7 ТОГДА "Июль" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 8 ТОГДА "Август" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 9 ТОГДА "Сентябрь" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 10 ТОГДА "Октябрь" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 11 ТОГДА "Ноябрь" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 12 ТОГДА "Декабрь" ИНАЧЕ 0 КОНЕЦ КАК Период, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_Заключение.Сотрудник) КАК Сотрудник ИЗ ВТ_Заключение КАК ВТ_Заключение СГРУППИРОВАТЬ ПО ВТ_Заключение.Диапозон, ВЫБОР КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 1 ТОГДА "Январь" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 2 ТОГДА "Февраль" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 3 ТОГДА "Март" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 4 ТОГДА "Апрель" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 5 ТОГДА "Май" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 6 ТОГДА "Июнь" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 7 ТОГДА "Июль" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 8 ТОГДА "Август" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 9 ТОГДА "Сентябрь" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 10 ТОГДА "Октябрь" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 11 ТОГДА "Ноябрь" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 12 ТОГДА "Декабрь" ИНАЧЕ 0 КОНЕЦ |
|||
1
серый КТУЛХУ
17.01.22
✎
15:45
|
ТОГДА "01 Январь" ...
|
|||
2
серый КТУЛХУ
17.01.22
✎
15:45
|
или в скобках можно номер месяца - читабельнее
или через " = " - тоже читабельнее |
|||
3
Kitttt
17.01.22
✎
15:55
|
Спасибо!!
|
|||
4
evgeniy_n
17.01.22
✎
16:22
|
А просто добавить в запрос поле МЕСЯЦ(ВТ_Заключение.ДатаРождения) и по нему упорядочить?
|
|||
5
DrShad
17.01.22
✎
16:53
|
(4) лучше НачалоПериода(, Месяц)
а в отчет выводить дату через формат |
|||
6
Kitttt
17.01.22
✎
23:48
|
(5) Изначально и хотел все сделать без конструкции ВЫБОР ...КОГДА 1 ТОГДА Январь.., ну и так далее, думал просто будут выводиться месяца и через формат смогу их преобразовать в письменный вид, в итоге получилось что колонки у меня просто пронумерованы от 1 до 6 к примеру, вместо того чтобы выводилось с января до июня. А формат не позволяет преобразовать их в письменный вид, ну то есть в тот который мне нужен, а нужен только месяц, формат предлагает к примеру:"18 января 2022", ну или "18 января 2022 00:00:00", может я чего-то не понимаю) но кажется, что мое решение не совсем оптимальное...
|
|||
7
Kitttt
18.01.22
✎
00:05
|
А все, извиняюсь, допёр, исправил)
Только сейчас месяца дублируются чуть ли не по 8 шт...пойду дальше смотреть в чем причины) |
|||
8
Kitttt
18.01.22
✎
10:52
|
(5) Все бы хорошо, но то что года рождения разные, из-за этого группировка в запросе не срабатывает, а в дальнейшем и в отчет выводит по 3-4 одинаковых месяца, но разные года, не знаю как в запросе отсеять года..
|
|||
9
DrShad
18.01.22
✎
11:14
|
(6) если тебе взрослые что-то советуют, то знают о чем говорят - не нужно сомневаться, нужно делать
|
|||
10
Ryzeman
18.01.22
✎
11:19
|
(8) Ты не понял, что тебе посоветовали. Оставь полноценное поле с датой, его ты будешь преобразовывать через формат. Добавь в запрос два поля - год и месяц, сортируй по ним.
|
|||
11
Ryzeman
18.01.22
✎
11:32
|
(10) +
ВЫБРАТЬ ВТ_Заключение.Диапозон КАК Диапозон, ВТ_Заключение.ДатаРождения КАК Период, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_Заключение.Сотрудник) КАК Сотрудник ИЗ ВТ_Заключение КАК ВТ_Заключение СГРУППИРОВАТЬ ПО ВТ_Заключение.Диапозон, ВТ_Заключение.ДатаРождения УПОРЯДОЧИТЬ ПО ГОД(ВТ_Заключение.ДатаРождения), МЕСЯЦ(ВТ_Заключение.ДатаРождения) К периоду условное форматирование |
|||
12
Kitttt
18.01.22
✎
11:56
|
(11) Спасибо, я так делал, только без упорядочивания, результат получается почти один и тот же, только сейчас плюс с порядком, просто у меня проблема в другом, в конечном запросе к примеру есть три сотрудника, с датой рождения: 02.03.1994, 10.03.1970, 16.03.1986, они в запросе не группируются, из-за того что у них года разные, НачалоПериода(ВТ_Заключение.ДатаРождения, Месяц) приводит, к тому что лишь у всех записей дата становится 01.**.****, но года опять же разные. Использовав формат даты над периодом, опять же вернувшись к примеру, в результате в колонках получается: "Март", "Март", "Март", ну и с подобными месяцами также, опять же из-за разных годов.
|
|||
13
Ryzeman
18.01.22
✎
12:13
|
(12) Тебе надо посчитать у скольких людей дни рожденья в каком месяце?
ВЫБРАТЬ ВТ_Заключение.Диапозон КАК Диапозон, МЕСЯЦ(ВТ_Заключение.ДатаРождения) КАК МесяцРождения, МИНИМУМ(ВТ_Заключение.ДатаРождения) КАК Период, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_Заключение.Сотрудник) КАК Сотрудник ИЗ ВТ_Заключение КАК ВТ_Заключение СГРУППИРОВАТЬ ПО ВТ_Заключение.Диапозон, МЕСЯЦ(ВТ_Заключение.ДатаРождения) УПОРЯДОЧИТЬ ПО МЕСЯЦ(ВТ_Заключение.ДатаРождения) Из периода так же форматом вытягивать месяц. МесяцРождения можно не использовать. |
|||
14
Kitttt
18.01.22
✎
13:24
|
(13) Да, нужен подсчет сотрудников по месяцам их рождения. В консоле отрабатывает верно этот запрос с подсчетом, делаю в СКД начинает ругаться, поле не входит в группу "_Заключение.ДатаРождения"(МЕСЯЦ<<?>> ВТ_Заключение.ДатаРождения). Исправил немного конструкцию в самом конструкторе СКД:
УПОРЯДОЧИТЬ ПО МесяцРождения Ошибка ушла, но сейчас подсчитывает совсем по другому, к примеру 10 сотрудников записывает в один месяц, хотя у них разные месяца рождения, но опять же с этой исправленной конструкцией Упорядочить в консоле тоже все верно отрабатывает и подсчитывает.. Не понимаю почему.. |
|||
15
Ryzeman
18.01.22
✎
13:33
|
Ну, СКД тебя тут на пальцах точно никто не научит. Если тебе достаточно простого представления этого отчёта, снеси настройки и при помощи конструктора настроек выведи свои данные списком. Если же это часть какой-то другой задачи и тебе нужно адаптировать твои изменения, то тебе нужно показать всё, но лучше в таком случае сам поучи что как работает. Если планируешь вкатываться в профессию - СКД придётся учить хоть как. Да и запросы.
|
|||
16
Kassern
18.01.22
✎
13:40
|
(0) я так понимаю вы еще учитесь и это тестовое задание?
|
|||
17
Kitttt
18.01.22
✎
13:43
|
(16) Учусь
|
|||
18
Kassern
18.01.22
✎
13:46
|
(17) "ВЫБОР
КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 1 ТОГДА "Январь" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 2 ТОГДА "Февраль" КОГДА МЕСЯЦ(ВТ_Заключение.ДатаРождения) = 3 ТОГДА "Март" " Не надо так. Дату можно через форматную строку превратить в месяц. Разбить по колонками месяца тоже можно, если правильно укажите структуру в настройках (таблица с верными группировками) |
|||
19
Kassern
18.01.22
✎
13:48
|
В итоге у вас должна быть простенькая таблица с сотрудниками и датами рождения, верно указано отображение для месяца и правильно составленная структура
|
|||
20
Kassern
18.01.22
✎
13:50
|
помогу вам с форматной строкой ДФ=ММММ
|
|||
21
Kitttt
18.01.22
✎
13:51
|
(20) Ладно, спасибо
|
|||
22
Ryzeman
18.01.22
✎
13:55
|
(18) В запросе нельзя привести к форматированной строке, а ему по месяцам группировать надо) Сейчас у человека стопор с СКД
|
|||
23
Ryzeman
18.01.22
✎
13:56
|
(21) К слову, при помощи СКД тоже можно группировать и считать такие вещи. Причём как раз можно месяца в колонки вывести, например.
|
|||
24
Kassern
18.01.22
✎
14:01
|
(22) "В запросе нельзя привести к форматированной строке" Да лаааадно? Кто запрещает формат использовать в скд?
|
|||
25
Kassern
18.01.22
✎
14:01
|
(22) попробуйте как-нибудь, будете сильно удивлены)
|
|||
26
Ryzeman
18.01.22
✎
14:03
|
(24) то - в СКД, а то - в запросе. В (0) про СКД ни слова)
|
|||
27
Мультук
гуру
18.01.22
✎
14:07
|
(26)
Да ладно. Там прямым текстом сказано >>>Всем добрый вечер, пишу отчет на 1С 8.3. Постановка задачи прямо говорит -- напиши (протестируй/оформи) за 2 часа на СКД, сдай и бери следующую задачу. |
|||
28
Kassern
18.01.22
✎
14:08
|
(26) это 99% тестовые задания и по любому на СКД надо делать)
|
|||
29
Kassern
18.01.22
✎
14:09
|
поэтому я образно описал в какую сторону смотреть и что использовать, чтобы не городить конструкции "Выбор когда" и явное указание месяцов
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |