Як в запиті отримати таблицю всіх днів (місяців, років

Рейтинг: 2/5

Сьогодні ми вирішимо наступну задачу: в запиті без звернення до даних отримаємо таблицю складається з однієї колонки, в якій будуть всі дати, за вказаний період.

Для чого це потрібно? запитаєте Ви. А я скажу: для формування звітів, в яких інформація виводиться за кожен день. Наприклад якийсь табель або продажу по днях. Коротше, ті випадки, коли дні, за які немає даних, теж повинні бути в звіті. Для формування таких звітом ми в'яжемо ЛІВИМ з'єднанням таблицю дат і таблицю даних за датою, і, навіть якщо даних за цю дату немає, ми в результатах виконання запиту отримаємо рядок, в якій заповнена дата, а даних немає, що власне і потрібно.

У типовій конфігурації 1С зарплата і управління персоналом для цих цілей зазвичай використовують регістр відомостей "виробничий календар". У ньому є все дні за кожен день. Ще з нього, крім дати, можна витягнути інші корисні дані (свята, норма годин.). Але по-перше календар може і не бути присутнім в нашій конфігурації, по-друге він може бути не заповнений за потрібний період, по-третє це звернення до даних БД, що не так економічно в плані ресурсів.

Ну що, вистачить демагогії, поїхали!

Маємо два параметра НачалоПеріода і ОкончаніеПеріода.

ВИБРАТИ
ПОЧАТОК ПЕРІОДУ( Початок періоду. День) ЯК День
ВПОРЯДКУВАТИ ЗА
день
ПІДСУМКИ ПО
День період (ДЕНЬ. Початок періоду. ОкончаніеПеріода)

Щоб написати таке в конструкторі, додаємо поле, пишемо в нього формулу. На закладці "Об'єднання / Псевдоніми" задаємо нормальний синонім замість "Поле1". На закладці порядок тягнемо його подвійним клацанням. На закладці підсумки тягнемо його в групуються поля. Виділяємо його там. У цей момент з'являється галка "періодами". Вибирається інтервал - День, вказуємо параметри початку періоду і кінця.