Имя: Пароль:
1C
1С v8
СКД: связи наборов данных
,
0 Scorpion_1986
 
10.04.13
10:52
Сделал 2 набора данных. 1 набор получаю дату, транспортное средство
2 набор регистр сведений срез последних получаю Дату, Трансп. средство подразделение. (параметр в регистре Дата,Трансп. средство )
Нужно по дате из первого набора получить подразделение(на эту дату) из второго набора. Связался по дате и трансп. средству и указал параметры.

Но вытягивает мне только те подразделения в которых дата из первого набора совпадает с датой из воторого.
Подскажите что делать....
1 cw014
 
10.04.13
10:56
А что нужно то?
2 cw014
 
10.04.13
10:57
"Нужно по дате из первого набора получить подразделение(на эту дату) из второго набора."

"Но вытягивает мне только те подразделения в которых дата из первого набора совпадает с датой из воторого."

Как бэ задача решена...
3 Scorpion_1986
 
10.04.13
10:59
Набор первый: Заправки автомобиля.
Набор второй: Срез последних перемещения ТС между подразделениями

Задача: Получить подразделение которое было на дату заправки.
И если заправка 16.01.13 а перемещение было 12.01.13 - то не выводит ничего, а елси и заправка 16.01.13 и перемещения 16.01.13 то выводит подразделение
4 Scorpion_1986
 
10.04.13
11:01
Была проблема в датах еще. Заправки у меня ДатаВремя, а перемещение Дата.

Я взял дату заправки НачалоПериода, день - то выводить если дата совпадает, а если дата изи второго набора меньше то не выводит
5 cw014
 
10.04.13
11:01
(3) Ну тут ты конечно загнул. Тебе придется тут уже проверять на вхождение в промежуток между предыдущей заправкой и следующей заправкой
6 Scorpion_1986
 
10.04.13
11:02
не надо никокого промежутка. Просто я получаю дату заправки и нужно передать во второй набор(а во втором срез последних). Тоесть получаэться срез последних на дату заправки
7 cw014
 
10.04.13
11:03
То есть первый набор данных тебе кроме того, что дату заправки и автомобиль выбрал, нужно еще сравнить с самой собой по автомобилю и максимальной датой на сравнение что максимальная дата < текущей даты
8 cw014
 
10.04.13
11:04
(6) Дата из второго набора - это измерение?
9 toypaul
 
гуру
10.04.13
11:04
связь как бы подразумевает, что связанные реквизиты должна совпадать. или я что-то не понимаю.

обязательно через наборы делать? может через временную таблицу будет лучше.
10 cw014
 
10.04.13
11:05
+(8) Хотя даже если измерение - ничего это не даст
11 cw014
 
10.04.13
11:06
+(8) нужно ее наверное дублировать в ресурс тогда
12 cw014
 
10.04.13
11:08
Хотя задачка интересная, но два набора тут не нужно
13 Scorpion_1986
 
10.04.13
11:08
(8) Дата - жто просто период регистра, ТС - измерение
14 Scorpion_1986
 
10.04.13
11:09
Ок, ну если не набором то как получить?
15 SherifSP
 
10.04.13
11:11
(14) Поменять местами наборы, не предлагать?))))
16 Scorpion_1986
 
10.04.13
11:12
неа, мне на дату заправки нужно получить подразделение, а не на дату перемещения получить заправку..((
17 cw014
 
10.04.13
11:19
Ну что то типа такого и одним запросом:

// Заглушка для описания первого набора [
ВЫБРАТь
   ПервыйНабор.Транспорт,
   ПервыйНабор.ДатаЗаправки
ПОМЕСТИТЬ ПервыйНабор
ИЗ
   &ПервыйНабор КАК ПервыйНабор
;
// Заглушка для описания первого набора ]



ВЫБРАТЬ
   ВторойНаборСрезПоследних.Период,
   ВторойНаборСрезПоследних.Транспорт,
   ВторойНаборСрезПоследних.Подразделение
ПОМЕСТИТЬ ВторойНабор_ОтборТранспорта
ИЗ
   РегистрСведений.ВторойНабор.СрезПоследних(&Период, Транспорт В (ВЫБРАТЬ РАЗЛИЧНЫЕ ПервыйНабор.Транспорт ИЗ ПервыйНабор КАК ПервыйНабор)) КАК ВторойНаборСрезПоследних
;

ВЫБРАТЬ
   ВторойНабор_ОтборТранспорта_ПериодДействия.Период,
   ПервыйНабор.Транспорт,
   ВторойНабор_ОтборТранспорта_ПериодДействия.Подразделение
   ПервыйНабор.ДатаЗаправки
ИЗ
   ПервыйНабор КАК ПервыйНабор
   ЛЕВОЕ СОЕДИНЕНИЕ
       (ВЫБРАТЬ
           ВторойНабор_ОтборТранспорта.Период,
           ВторойНабор_ОтборТранспорта.Транспорт,
           ВторойНабор_ОтборТранспорта.Подразделение,
           МАКСИМУМ(ВторойНабор_ОтборТранспорта_Окончание.Период) КАК ПериодОкончания
       ИЗ
           ВторойНабор_ОтборТранспорта КАК ВторойНабор_ОтборТранспорта
           ЛЕВОЕ СОЕДИНЕНИЕ
               ВторойНабор_ОтборТранспорта КАК ВторойНабор_ОтборТранспорта_Окончание
               ПО ВторойНабор_ОтборТранспорта.Транспорт = ВторойНабор_ОтборТранспорта_Окончание.Транспорт
                И ВторойНабор_ОтборТранспорта.Период < ВторойНабор_ОтборТранспорта_Окончание.Период

       СГРУППИРОВАТЬ ПО
           ВторойНабор_ОтборТранспорта.Период,
           ВторойНабор_ОтборТранспорта.Транспорт,
           ВторойНабор_ОтборТранспорта.Подразделение) КАК ВторойНабор_ОтборТранспорта_ПериодДействия
       ПО ПервыйНабор.ДатаЗаправки МЕЖДУ (ВторойНабор_ОтборТранспорта_ПериодДействия.Период) И (ВторойНабор_ОтборТранспорта_ПериодДействия.ПериодОкончания)
        И ПервыйНабор.Транспорт = ВторойНабор_ОтборТранспорта_ПериодДействия.Транспорт
18 ЧашкаЧая
 
10.04.13
11:26
Соединение нужно сделать с параметрами:
Книга знаний: Срез последних на каждую дату в запросе
19 Scorpion_1986
 
10.04.13
11:30
(18) Я так и делаю. Все с параметрами. Раньше у меня получалось.
20 Scorpion_1986
 
10.04.13
11:30
тут есть какой то нюанс, не могу понять какой... вот и обращаюсь сюда
21 cw014
 
10.04.13
11:31
(20) а в (17) тебе реализация не нравится?
22 Scorpion_1986
 
10.04.13
11:33
(21) Немного сложновато, хочеться докопаться до истины тут, так часто буду делать. Спасибо тебе.
23 Scorpion_1986
 
10.04.13
11:34
(20) отличаеться только тем что у вас в запросе:
в условие компановки выводяться все поля а у меня только те по которым я соединяюсь
24 cw014
 
10.04.13
11:40
(22) А что там сложного то? Выбираешь из второго набора и соединяешь с самим собой по транспорту но что бы период у второго набора был больше... Только я ошибся, поставь вместо МАКСИМУМ - МИНИМУМ
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший