Имя: Пароль:
1C
1С v8
Параметры запроса
,
0 Эльчин
 
07.03.13
18:02
Создал отчет с помошю СКД. Данные беру из регистра сведений "ДокументыПрием". Хочу что если параметр периода передам, отчет формировался по заданном периоду.  Иначе по текущем периоду.
Для реквизита Врач сделал так: в запросе написал условие:
ВЫБОР
   КОГДА &Врач = ЗНАЧЕНИЕ(Справочник.Врачи.ПустаяСсылка)
       ТОГДА ИСТИНА
   ИНАЧЕ ДокументыПрием.Врач = &Врач
КОНЕЦ
Если выберу параметр сформируется по врачам. Иначе сформируется по всем врачам. А по периоду не получается никак. Буду благодарен если поможете(извините из за ошибок в тексте)
1 Эльчин
 
07.03.13
18:05
как в запросе проверить пустая ли реквизит на форме отчета с именем Период, или нет?
2 1C-band
 
07.03.13
18:06
(0) Никак.
3 Эльчин
 
07.03.13
18:07
ВЫБОР
   КОГДА &Период = "00010101"
       ТОГДА ДокументыПрием.Период = &ТекПериод
   ИНАЧЕ ДокументыПрием.Период = &Период
КОНЕЦ
по моему на месту "00010101" надо что  то другое написать. а что?
4 1C-band
 
07.03.13
18:07
(3) уже лучше ))
5 fisher
 
07.03.13
18:09
(0) Рекомендую здесь задать вопрос: http://devtrainingforum.v8.1c.ru/forum/
Там терпимее относятся к начинающим.
6 exwill
 
07.03.13
18:18
(0) А ничего и не надо делать.
Посмотри, что у тебя после ИЗ стоит.
Параметр видишь?
7 Эльчин
 
07.03.13
18:22
:)
8 Эльчин
 
07.03.13
18:34
здесь тоже выбают терпиливые и добрые люди которые очень помогали мне ранше :)
9 Эльчин
 
07.03.13
18:36
(6) это условие у меня тоже после ИЗ
10 Эльчин
 
07.03.13
18:36
(6) и условие для врача тоже
11 Эльчин
 
07.03.13
18:37
(6) после этого условие появляется параметр автоматически
12 Эльчин
 
07.03.13
18:38
по моему я должен передать значение параметру как для врача сделаль. не правилно ли так делать?
13 exwill
 
07.03.13
19:49
(12) В запросе выбирай таблицу "ДокументыПрием.СрезПоследних".
14 t731
 
08.03.13
15:52
На примере отчета "Взаиморасчеты" из УНФ.
Открываем ОсновнуюСхемуКомпоновкиДанных

В запросе пишешь Где ДокументыПрием.Дата МЕЖДУ &НачалоПериода И &КонецПериода

На закладке "Параметры" для параметра НачалоПериода в колонке "Выражение" пишешь НачалоПериода(&НачалоПериода, "День")

Для параметра КонецПериода пишешь:
ВЫБОР КОГДА &КонецПериода = Неопределено ИЛИ &КонецПериода = NULL ИЛИ &КонецПериода = ДатаВремя(1,1,1) ТОГДА ДатаВремя(3999,12,31)  ИНАЧЕ КонецПериода(&КонецПериода, "День") КОНЕЦ

А на врача лучше поставить условие
ГДЕ ДокументыПрием.Врач В ИЕРАРХИИ (&Врач)

Тогда если врач не заполнен, то выберет для всех врачей
15 GANR
 
08.03.13
16:10
В СКД есть {}, такое условие
{ГДЕ Врач = &Врач} будет проверяться только если параметр &Врач задан, иначе - будет исключено из конечного запроса.
16 Эльчин
 
09.03.13
01:13
спосибо всем большое. завтра на работе буду проверять. спосибо
17 Эльчин
 
09.03.13
12:45
Для периода условие написал: "ДокументыПрием.Период = &Период". а значение передаю так:
Если Период <> Дата(1,1,1) тогда
   Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[1].Значение = НачалоМесяца(Период);
   Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[1].Использование = Истина;
Иначе
   Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[1].Значение = НачалоМесяца(ТекущаяДата());
   Отчет.КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы[1].Использование = Истина;
КонецЕсли;  и все.
(14) "А на врача лучше поставить условие
ГДЕ ДокументыПрием.Врач В ИЕРАРХИИ (&Врач)
Тогда если врач не заполнен, то выберет для всех врачей"
- не получается. для врача оставил как было. кажется это самый хороший вариант
18 Эльчин
 
09.03.13
12:46
(13) что даст мне СрезПоследних в этом случае?