PDA

Просмотр полной версии : Как создать период отчёта за месяц, а не по дате?



agranod
12.12.2016, 23:26
Добрый вечер , помогите разобраться.
Есть готовый отчёт, который формируется по определённой дате. Но мне нужно чтобы он формировался за целый месяц.
Сам отчёт: внешний , имеется форма и макет. Запрос и модули формы написаны правильно. Работа отчёта осуществляется только по определённой дате , а нужно чтобы формировался за весь месяц.


&НаСервере
Процедура ПриСозданииНаСервере(Отка� �, СтандартнаяОбработка)
Дата = ТекущаяДата();
СформироватьОтчет();
КонецПроцедуры

&НаКлиенте
Процедура Сформировать(Команда)
СформироватьОтчет();
КонецПроцедуры

&НаСервере
Процедура СформироватьОтчет()

ТабДок.Очистить();
ТабДок.НачатьАвтогруппиро� �куСтрок();
Макет = Отчеты.ст_ДневнойЛистокУче та.ПолучитьМакет("ДневнойЛистокУчета");

//Получение данных для вывода в отчет
ПостроительЗапроса = Новый ПостроительЗапроса;
ПостроительЗапроса.Текст = "ВЫБРАТЬ
| ст_ПриемНарядУслуги.Ссылка .Номер КАК НомерНаряда,
| ст_ПриемНарядУслуги.Ссылка .Врач КАК Врач,
| ст_ПриемНарядУслуги.Ссылка .Пациент КАК Пациент,
| ст_ПриемНарядУслуги.Услуга Работа КАК УслугаРабота,
| СУММА(ст_ПриемНарядУслуги.� �умма) КАК Сумма,
| ст_ПриемНарядУслуги.Ссылка КАК Регистратор
|ИЗ
| Документ.ст_ПриемНаряд.Усл� �ги КАК ст_ПриемНарядУслуги
|ГДЕ
| ст_ПриемНарядУслуги.Ссылка .Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НаДату, ДЕНЬ) И КОНЕЦПЕРИОДА(&НаДату, ДЕНЬ)
| И ст_ПриемНарядУслуги.Ссылка .Проведен = ИСТИНА
|
|СГРУППИРОВАТЬ ПО
| ст_ПриемНарядУслуги.Ссылка ,
| ст_ПриемНарядУслуги.Ссылка .Номер,
| ст_ПриемНарядУслуги.Ссылка .Врач,
| ст_ПриемНарядУслуги.Ссылка .Пациент,
| ст_ПриемНарядУслуги.Услуга Работа
|
|УПОРЯДОЧИТЬ ПО
| Врач,
| НомерНаряда
|ИТОГИ
| МИНИМУМ(НомерНаряда),
| СУММА(Сумма)
|ПО
| ОБЩИЕ,
| Врач,
| Регистратор,
| УслугаРабота
|АВТОУПОРЯДОЧИВАНИЕ";
ПостроительЗапроса.Параме� �ры.Вставить("НаДату", Дата);
ПостроительЗапроса.Заполн� �тьНастройки();
ПостроительЗапроса.Выполн� �ть();
Результат = ПостроительЗапроса.Резуль� �ат;



Область = Макет.ПолучитьОбласть("Шапка");
Область.Параметры.Дата = Дата;
ТабДок.Вывести(Область);

ИтогиОбщие = Результат.Выбрать(ОбходРез ультатаЗапроса.ПоГруппиро� �кам);

//Получим и заполним общий итог
ИтогиОбщие.Следующий();
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ЗаполнитьЗначенияСвойств(� �бластьПодвал.Параметры, ИтогиОбщие);


ВыборкаВрачи = ИтогиОбщие.Выбрать(ОбходРе зультатаЗапроса.ПоГруппир� �вкам);
Пока ВыборкаВрачи.Следующий() Цикл

Область = Макет.ПолучитьОбласть("СтрокаВрач");
ЗаполнитьЗначенияСвойств(� �бласть.Параметры, ВыборкаВрачи);
ТабДок.Вывести(Область, ВыборкаВрачи.Уровень());

ТабДок.Вывести(Макет.Получ� �тьОбласть("ШапкаТЧ"), ВыборкаВрачи.Уровень());

ОбластьПодвалТЧ = Макет.ПолучитьОбласть("ПодвалТЧ");
ЗаполнитьЗначенияСвойств(� �бластьПодвалТЧ.Параметры, ВыборкаВрачи);

ВыборкаДокумент = ВыборкаВрачи.Выбрать(Обход РезультатаЗапроса.ПоГрупп� �ровкам);
Пока ВыборкаДокумент.Следующий( ) Цикл
Область = Макет.ПолучитьОбласть("СтрокаТЧПациент");
ЗаполнитьЗначенияСвойств(� �бласть.Параметры, ВыборкаДокумент);
ТабДок.Вывести(Область, ВыборкаДокумент.Уровень());

ВыборкаУслуги = ВыборкаДокумент.Выбрать(Об ходРезультатаЗапроса.ПоГр� �ппировкам);
Пока ВыборкаУслуги.Следующий() Цикл
Область = Макет.ПолучитьОбласть("СтрокаТЧУслуга");
ЗаполнитьЗначенияСвойств(� �бласть.Параметры, ВыборкаУслуги);
ТабДок.Вывести(Область, ВыборкаУслуги.Уровень());
КонецЦикла;

КонецЦикла;

ТабДок.Вывести(ОбластьПодв алТЧ, ВыборкаВрачи.Уровень());

КонецЦикла;

ТабДок.Вывести(ОбластьПодв ал);

ТабДок.ЗакончитьАвтогрупп� �ровкуСтрок();

ТабДок.ПоказатьУровеньГру� �пировокСтрок(1);

КонецПроцедуры

Kuragane
13.12.2016, 09:23
вот тут ст_ПриемНарядУслуги.Ссылка .Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НаДатуНачала, ДЕНЬ) И КОНЕЦПЕРИОДА(&НаДатуокончания, ДЕНЬ)
а вот в параметрах указываем
ДатаНачала = добавитьмесяц(Дата, -1);
ПостроительЗапроса.Параме� �ры.Вставить("НаДатуНачала", НачалоДня(ДатаНачала));
ПостроительЗапроса.Параме� �ры.Вставить("НаДатуНачала", КонецДня(Дата));

Kuragane
13.12.2016, 09:27
А почему, на скд этот отчет не построил?

agranod
13.12.2016, 09:45
вот тут ст_ПриемНарядУслуги.Ссылка .Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НаДатуНачала, ДЕНЬ) И КОНЕЦПЕРИОДА(&НаДатуокончания, ДЕНЬ)
а вот в параметрах указываем
ДатаНачала = добавитьмесяц(Дата, -1);
ПостроительЗапроса.Параме� �ры.Вставить("НаДатуНачала", НачалоДня(ДатаНачала));
ПостроительЗапроса.Параме� �ры.Вставить("НаДатуНачала", КонецДня(Дата));


Может я не туда написал? Куда именно? Простите меня за мою тупость, плохо разбираюсь.
пишет что: {Отчет.ст_ДневнойЛистокУче� �а.Форма.ФормаОтчета.Форма(6 0)}: Ошибка при получении значения атрибута контекста (Результат)
Результат = ПостроительЗапроса.Резуль� �ат;
по причине:
{(11, 90)}: Не задано значение параметра "НаДатуокончания"
ст_ПриемНарядУслуги.Ссылка .Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НаДатуНачала, ДЕНЬ) И КОНЕЦПЕРИОДА(<<?>>&НаДатуокончания, ДЕНЬ)

Kuragane
13.12.2016, 09:58
блин мой косяк))) второй параметр ПостроительЗапроса.Параме? ?ры.Вставить("НаДатуОкончания", КонецДня(Дата)); вот так должно быть

Kuragane
13.12.2016, 10:00
а вообще, завязывай ты с выведением в ТабличныйДокумент отчетов. Есть для этих дел СКД, работает намного быстрее, и возможностей больше.

agranod
13.12.2016, 10:02
Спасибо вам за ответ. Я разобрался . Но почему когда я хочу сформировать отчёт он мне выбирает опять определённую дату))И Может там нужно сделать две кнопки ?
Типо выбор периода ? "НачалоПриода" и "КонецПериода"

Kuragane
13.12.2016, 10:20
просто у тебя отчет сделан так. добавь в реквизиты формы две даты и будет две даты.