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