Имя: Пароль:
1C
1С v8
Получить срез последних на дату из запроса.
0 shane13
 
29.07.11
13:15
Всем привет! Знаю, что тема избита и много раз обсуждалась... но у меня не получается(( никак.
Делаю отчет в котором в одном запросе нужно получить данные из регистра лл_ОказаниеУслуг и для каждой записи регистра получить значение из периодического регистра сведений.
На СКД такое получилось через наборы данных и правильно установленные связи, но от СКД пришлось отказаться, поскольку отчет с сильно нестандартным макетом и были проблемы с вычисляемыми полями, поэтому пытаюсь сама сделать запрос конструктором.
Пишу так:
"ВЫБРАТЬ
       |    лл_ОказаниеУслугОбороты.Регистратор,
       |    лл_ОказаниеУслугОбороты.Доктор КАК Доктор,
       |    лл_ОказаниеУслугОбороты.Услуга,
       |    лл_ОказаниеУслугОбороты.СуммаОборот КАК СуммаОборот,
       |    лл_ОказаниеУслугОбороты.КоличествоОборот КАК КоличествоОборот,
       |    лл_ЦеныПараметрыУслугСрезПоследних.Сеансы КАК Сеансы,
       |    лл_ЦеныПараметрыУслугСрезПоследних.КоэффициентВрача,
       |    лл_ОказаниеУслугОбороты.Филиал КАК Филиал,
       |    лл_ОказаниеУслугОбороты.Услуга.Родитель КАК УслугаРодитель
       |ИЗ
       |    РегистрНакопления.лл_ОказаниеУслуг.Обороты(&ДатаНачала, &ДатаКонца, Регистратор, ) КАК лл_ОказаниеУслугОбороты
       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.лл_ЦеныПараметрыУслуг.СрезПоследних КАК лл_ЦеныПараметрыУслугСрезПоследних
       |        ПО лл_ОказаниеУслугОбороты.Филиал = лл_ЦеныПараметрыУслугСрезПоследних.Организация
       |            И лл_ОказаниеУслугОбороты.Услуга = лл_ЦеныПараметрыУслугСрезПоследних.Услуга
       |            И лл_ОказаниеУслугОбороты.Регистратор.Дата = лл_ЦеныПараметрыУслугСрезПоследних.Период
       |ИТОГИ
       |    СУММА(СуммаОборот),
       |    СУММА(КоличествоОборот),
       |    СУММА(Сеансы)
       |ПО
       |    Филиал,
       |    УслугаРодитель,
       |    Доктор";

Как передать дату для среза последних из лл_ОказаниеУслуг?((((
1 shane13
 
29.07.11
13:15
ссылка телепат-бота не спасла
2 vicof
 
29.07.11
13:17
РегистрСведений.лл_ЦеныПараметрыУслуг.СрезПоследних(&Дата) не?
3 shane13
 
29.07.11
13:17
очень прошу какой-нибудь простой и понятный пример
4 shane13
 
29.07.11
13:18
(2) по идее да, но туда мне кажется нереально передать параметром дату из записи регистра лл_ОказаниеУслуг
5 szhukov
 
29.07.11
13:19
(3) Через срез никак.
Нужно брать саму таблицу и выбирать записи с максимальным периодом < лл_ОказаниеУслуг.Период
6 vicof
 
29.07.11
13:21
(4) не получится. См (5)
7 vicof
 
29.07.11
13:21
8 shane13
 
29.07.11
13:22
(5) как это правильно сделать? через временные таблицы? если можно на пальцах)
9 szhukov
 
29.07.11
13:24
(8) идея полно описана в (7)
10 shane13
 
29.07.11
13:26
(9) это я уже прочитала и на СКД получилось сделать, там есть картинки (что лично мне помогает врубиться что, где нужно ткнуть им написать), а просто по запросу мне трудно воссоздать это в конструкторе для своего примера.....
11 shane13
 
29.07.11
13:27
может быть подскажите в типовых где можно простой такой пример глянуть?
12 szhukov
 
29.07.11
13:43
(11)Меняете
И лл_ОказаниеУслугОбороты.Регистратор.Дата = лл_ЦеныПараметрыУслугСрезПоследних.Период
На
И лл_ОказаниеУслугОбороты.Регистратор.Дата <= лл_ЦеныПараметрыУслугСрезПоследних.Период

После ВЫБРАТЬ
МАКСИМУМ(лл_ЦеныПараметрыУслугСрезПоследних.Период).

Результат во временную таблицу или как вложенный запрос.
Временную таблицу связываете с РегистрСведений.лл_ЦеныПараметрыУслуг
13 szhukov
 
29.07.11
13:45
+(12) т.е. В первом (вложенном запросе) вы получаете период (МАКСИМУМ(...Период) как ИскомыйПериодСреза), в котором вам нужна запись из РегистрСведений.лл_ЦеныПараметрыУслуг.
А затем вложенный запрос связываете с РегистрСведений.лл_ЦеныПараметрыУслуг
таким образом
РегистрСведений.лл_ЦеныПараметрыУслуг.Период =ВложенныйЗапрос.ИскомыйПериодСреза
14 szhukov
 
29.07.11
13:46
+(12) Да и уберите в запросе СрезПоследних. Нужна просто таблица РегистрСведений.лл_ЦеныПараметрыУслуг
15 szhukov
 
29.07.11
13:48
+(12) Блин? ошибся с условием (в другую сторону конечно, больше либо равно)
И лл_ОказаниеУслугОбороты.Регистратор.Дата >= лл_ЦеныПараметрыУслуг.Период
16 shane13
 
29.07.11
14:16
(12) -(15) спасибо, пробую
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший