Имя: Пароль:
1C
 
Отчет СКД по регистру сведений
0 Prog_man
 
гуру
11.08.25
08:44
Добрый день,
подскажите как в отчет вывести все даты за период из регистра сведений? если делаю дополнение день, пишет ошибку:

Дополнение в периоде может быть выполнено только по одному полю "НачалоПериода(наборДанных1.Период,"День")"
1 Prog_man
 
гуру
11.08.25
08:44
ВЫБРАТЬ
	мЗаданияНаРаботуСписком.Организация КАК Организация,
	мЗаданияНаРаботуСписком.Сотрудник КАК Сотрудник,
	мЗаданияНаРаботуСписком.Начало КАК Начало,
	мЗаданияНаРаботуСписком.Окончание КАК Окончание,
	мЗаданияНаРаботуСписком.Регистратор.Наименование КАК Наименование,
	мЗаданияНаРаботуСписком.Регистратор.Ссылка КАК ДокументЗадание,
	мЗаданияНаРаботуСписком.Регистратор.Ссылка КАК ссылка,
	мЗаданияНаРаботуСписком.ПодразделениеОрганизации КАК Подразделение,
	мЗаданияНаРаботуСписком.Регистратор.Контрагент КАК Контрагент,
	мЗаданияНаРаботуСписком.Период КАК Период
ИЗ
	РегистрСведений.мЗаданияНаРаботуСписком КАК мЗаданияНаРаботуСписком
ГДЕ
	мЗаданияНаРаботуСписком.Начало МЕЖДУ &НачалоПериода И &КонецПериода
	И мЗаданияНаРаботуСписком.Организация = &Организация
2 Prog_man
 
гуру
11.08.25
08:46
+ без дополнения, выводит только те даты по которым есть информация
3 Kongo2019
 
11.08.25
08:51
(0)Начальной и конечной датой вероятнее всего должен быть "ТипДополненияПериодаКомпоновкиДанных", "Месяц".
4 Prog_man
 
гуру
11.08.25
09:17
(3) не совсем понятно, нужно ведь дополнить днями в которых не было записей, таблица должна получиться типа календаря, чтобы видно было в какой день сотрудник занят, в какой свободен. Для чего тут добавлять месяц? там произвольный период может быть.
5 Климов Сергей
 
11.08.25
09:36
(0) ИМХО, без соединения с каким-то календарём не получится. В типовых конфигурациях можно использовать РС ДанныеПроизводственногоКалендаря.
6 d4rkmesa
 
11.08.25
09:45
(0) Я бы попробовал еще использовать вычисляемые или пользовательские поля для вывода месяца (ПериодМесяц), т.к. вроде как нужно дополнять только Период, который выводится с периодичностью День.
7 Timon1405
 
11.08.25
10:46
мЗаданияНаРаботуСписком.Период КАК Период
НачалоПериода(мЗаданияНаРаботуСписком.Период, День) КАК Период
8 craxx
 
11.08.25
11:09
(6) сложно сгенерировать список дат между начальной и конечной запросом?
9 Prog_man
 
гуру
11.08.25
11:09
(7) 🔥, благодарю
10 Prog_man
 
гуру
11.08.25
11:10
(8) все проще, метод дополнения стал работать
11 Kongo2019
 
11.08.25
11:44
(10) но почему ты нам конечно не расскажешь, да? Магия.
12 Timon1405
 
11.08.25
11:50
(11) дополнение не умеет в подчиненные через точку поля (как было у ТС Период.ДатыНачала.НачалоДня). и в вычисляемые тоже не умеет.
приведение периодичности в запросе частично решает проблему.
если нужно-таки будет дополнение с произвольной периодичностью придётся в запросе написать
выбор
когда &нужнаяпериодичность="ДЕНЬ" тогда НачалоПериода(.. ,ДЕНЬ),
когда &нужнаяпериодичность="МЕСЯЦ" тогда НачалоПериода(.. ,МЕСЯЦ) итд
и устанавливать дополнение программно при компоновке запроса в зависимости от параметра &нужнаяпериодичность
14 Гена
 
гуру
11.08.25
11:58
(11) В (7) предложена идея каждый день делать началом периода.
15 Прохожий
 
11.08.25
14:06
(2) Запрос.Текст = "ВЫБРАТЬ
    |    ДАТАВРЕМЯ(1, 1, 1) КАК Период
    |ПОМЕСТИТЬ Представления_Периоды
    |ГДЕ
    |    ""НачалоИнтервала"" = &НачалоПериода
    |    И ""ОкончаниеИнтервала"" = &КонецПериода
    |    И ""Периодичность"" = ""ДЕНЬ""
    |    И ""ИспользоватьКонецПериода"" = Ложь
    |";
    
    Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
    Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
    ЗарплатаКадрыОбщиеНаборыДанных.ЗаменитьЗапросыКПредставлениямВиртуальныхТаблиц(Запрос.Текст,Запрос);
    Запрос.Выполнить();
16 Прохожий
 
11.08.25
14:06
А представления не предлагать?