Рейтинг:  2 / 5

Звезда активнаЗвезда активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

Добрый день.

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

Для чего это нужно? спросите Вы. А я скажу: для формирования отчетов, в которых информация выводится за каждый день. Например какой-нибудь табель или продажи по дням. Короче, те случаи, когда дни, за которые нет данных, тоже должны быть в отчете. Для формирования таких отчетом мы вяжем ЛЕВЫМ соединением таблицу дат и таблицу данных по дате, и, даже если данных за эту дату нет, мы в результатах выполнения запроса получим строчку, в которой заполнена дата, а данных нет, что собственно и требуется.

В типовой конфигурации 1С зарплата и управление персоналом для этих целей обычно используют регистр сведений "производственный календарь". В нем есть все дни за каждый день. Еще из него, помимо даты, можно вытащить другие полезные данные (праздники, норма часов...). Но во первых календарь может и не присутствовать в нашей конфигурации, во вторых он может быть не заполнен за нужный период, в третьих это обращение к данным БД, что не так экономично в плане ресурсов.

Ну что, хватит демагогии, поехали!

Имеем два параметра &НачалоПериода и &ОкончаниеПериода.

ВЫБРАТЬ
 НАЧАЛОПЕРИОДА(&НачалоПериода, День) КАК День
УПОРЯДОЧИТЬ ПО
 День
ИТОГИ ПО
 День ПЕРИОДАМИ(ДЕНЬ
, &НачалоПериода, &ОкончаниеПериода)

 Чтобы написать такое в конструкторе, добавляем поле, пишем в него формулу. На закладке "Объединения/Псевдонимы" задаем нормальный синоним вместо "Поле1". На закладке порядок тащим его двойным щелчком. На закладке итоги тащим его в группируемые поля. Выделяем его там. В этот момент появляется галка "периодами". Выбирается интервал -  День, указываем параметры начала периода и конца.

Авторизуйтесь пожалуйста

Комментарии   

+17 # pollackj 01.01.2015 01:56
Не работает :cry:
-20 # Антон Филоненко 03.01.2015 21:02
проверю, еще раз, но работало