|
v8: (Запрос), которому трудно придумать название в теме | ☑ | ||
---|---|---|---|---|
0
Adgjj
23.11.11
✎
16:20
|
ВЫБРАТЬ
уатОстаткиГСМнаТС.Регистратор КАК Регистратор, уатСчетчикиТС.СпНач КАК СпНач, уатСчетчикиТСпосл.Значение КАК СпКон ИЗ РегистрНакопления.уатОстаткиГСМнаТС КАК уатОстаткиГСМнаТС ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатСчетчикиТС КАК уатСчетчикиТС ПО уатОстаткиГСМнаТС.Регистратор = уатСчетчикиТС.Регистратор ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатСчетчикиТС.СрезПоследних КАК уатСчетчикиТСпосл ПО уатОстаткиГСМнаТС.Регистратор = уатСчетчикиТСпосл.Регистратор ГДЕ уатОстаткиГСМнаТС.Период >= &ДатаС И уатОстаткиГСМнаТС.Период <= &ДатаПо И уатОстаткиГСМнаТС.Регистратор ССЫЛКА Документ.уатПутевойЛист И уатОстаткиГСМнаТС.ТС = &ТС СГРУППИРОВАТЬ ПО уатОстаткиГСМнаТС.Регистратор, уатСчетчикиТС.СпНач, уатСчетчикиТСпосл.Значение Рез-т запроса - таблица: Путевой лист СпНач СпКон ПЛ1 77024 - ПЛ2 77056 77066 ПЛ3 77030 - СпНач нужен для каждой путевки, а СпКон берется из самой поздней по времени ПЛ. Как В ЗАПРОСЕ сделать, чтобы 77066 писалось в каждой строке вместо "-"? |
|||
1
Ненавижу 1С
гуру
23.11.11
✎
16:25
|
вот так:
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатСчетчикиТС.СрезПоследних КАК уатСчетчикиТСпосл ПО ИСТИНА |
|||
2
Adgjj
23.11.11
✎
16:27
|
тогда строчек становится намного больше и числа в последнем столбце неизвестные
|
|||
3
rs_trade
23.11.11
✎
16:34
|
Убрать последний джойн, заменив его на скалярный подзапрос получения последнего значения. И в селект выводить значение.
|
|||
4
rs_trade
23.11.11
✎
16:37
|
Типа кросс-джойн получиться единственного значения из подзапроса с результатами левого соединения
|
|||
5
Ненавижу 1С
гуру
23.11.11
✎
16:40
|
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатСчетчикиТС.СрезПоследних КАК уатСчетчикиТСпосл
ПО <тут соединение по ТС> |
|||
6
IBTM
24.11.11
✎
01:39
|
(0) Выбор когда уатСчетчикиТСпосл.Значение = "-" Тогда 77066 Иначе уатСчетчикиТСпосл.Значение Конец
Не? |
|||
7
Adgjj
24.11.11
✎
08:53
|
(5) результат как в (2)
(6) ВЫБРАТЬ уатОстаткиГСМнаТС.ТС КАК ТС, уатОстаткиГСМнаТС.Регистратор КАК Регистратор, уатСчетчикиТС.СпНач КАК СпНач, //ЕСТЬnull(уатСчетчикиТСпосл.Значение,уатСчетчикиТСпосл.Значение) КАК СпКон Выбор когда уатСчетчикиТСпосл.Значение = 0 Тогда 5 Иначе уатСчетчикиТСпосл.Значение Конец КАК СпКон ИЗ РегистрНакопления.уатОстаткиГСМнаТС КАК уатОстаткиГСМнаТС //ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатМестонахождениеТС.СрезПоследних(&ДатаПо, ) КАК уатМестонахождениеТССрезПоследних //ПО уатОстаткиГСМнаТС.ТС = уатМестонахождениеТССрезПоследних.ТС //ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатПервоначальныеСведенияТС КАК уатПервоначальныеСведенияТС //ПО уатОстаткиГСМнаТС.ТС = уатПервоначальныеСведенияТС.ОсновноеСредство ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатСчетчикиТС КАК уатСчетчикиТС ПО уатОстаткиГСМнаТС.Регистратор = уатСчетчикиТС.Регистратор ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатСчетчикиТС.СрезПоследних КАК уатСчетчикиТСпосл ПО уатОстаткиГСМнаТС.Регистратор = уатСчетчикиТСпосл.Регистратор Выбор когда уатСчетчикиТСпосл.Значение = 0 Тогда - не знаю, к чему приравнять: 0, Null не подходят |
|||
8
Adgjj
24.11.11
✎
09:41
|
(3)(4)
пробую пока не катит ВЫБРАТЬ уатОстаткиГСМнаТС.ТС КАК ТС, уатОстаткиГСМнаТС.Регистратор КАК Регистратор, уатСчетчикиТС.СпНач КАК СпНач, уатСчетчикиТСпосл.Значение КАК СпКон //ЗапросСпКон.Значение КАК СпКон //Выбор когда уатСчетчикиТСпосл.Значение = 0 Тогда // 555 //Иначе уатСчетчикиТСпосл.Значение //Конец КАК СпКон ИЗ РегистрНакопления.уатОстаткиГСМнаТС КАК уатОстаткиГСМнаТС ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатМестонахождениеТС.СрезПоследних(&ДатаПо, ) КАК уатМестонахождениеТССрезПоследних ПО уатОстаткиГСМнаТС.ТС = уатМестонахождениеТССрезПоследних.ТС ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатПервоначальныеСведенияТС КАК уатПервоначальныеСведенияТС ПО уатОстаткиГСМнаТС.ТС = уатПервоначальныеСведенияТС.ОсновноеСредство ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатСчетчикиТС КАК уатСчетчикиТС ПО уатОстаткиГСМнаТС.Регистратор = уатСчетчикиТС.Регистратор, //ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатСчетчикиТС.СрезПоследних КАК уатСчетчикиТСпосл //ПО уатОстаткиГСМнаТС.Регистратор = уатСчетчикиТСпосл.Регистратор //ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.уатСчетчикиТС.СрезПоследних КАК уатСчетчикиТСпосл // ПО уатОстаткиГСМнаТС.Регистратор = уатСчетчикиТСпосл.Регистратор //ЛЕВОЕ СОЕДИНЕНИЕ //(ВЫБРАТЬ // РегистрНакопления.уатОстаткиГСМнаТС КАК уатОстаткиГСМнаТС //ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатМестонахождениеТС.СрезПоследних(&ДатаПо, ) КАК уатМестонахождениеТССрезПоследних //ПО уатОстаткиГСМнаТС.ТС = уатМестонахождениеТССрезПоследних.ТС //ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатПервоначальныеСведенияТС КАК уатПервоначальныеСведенияТС //ПО уатОстаткиГСМнаТС.ТС = уатПервоначальныеСведенияТС.ОсновноеСредство //ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатСчетчикиТС КАК уатСчетчикиТС //ПО уатОстаткиГСМнаТС.Регистратор = уатСчетчикиТС.Регистратор //ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатСчетчикиТС.СрезПоследних КАК уатСчетчикиТСпосл //ПО уатОстаткиГСМнаТС.Регистратор = уатСчетчикиТСпосл.Регистратор //ИЗ РегистрСведений.уатСчетчикиТС.СрезПоследних КАК уатСчетчикиТСпосл //ПО уатОстаткиГСМнаТС.Регистратор = уатСчетчикиТСпосл.Регистратор) КАК ЗапросСпКон //ПО ЗапросСпКон.Регистратор = уатСчетчикиТСпосл.Регистратор РегистрСведений.уатСчетчикиТС.СрезПоследних КАК уатСчетчикиТСпосл // ПО уатОстаткиГСМнаТС.Регистратор = уатСчетчикиТСпосл.Регистратор) КАК ЗапросСпКон //ПО ЗапросСпКон.Регистратор = уатСчетчикиТСпосл.Регистратор ГДЕ уатОстаткиГСМнаТС.Период >= &ДатаС И уатОстаткиГСМнаТС.Период <= &ДатаПо И уатОстаткиГСМнаТС.Регистратор ССЫЛКА Документ.уатПутевойЛист И уатОстаткиГСМнаТС.ТС = &ТС СГРУППИРОВАТЬ ПО уатОстаткиГСМнаТС.ТС, уатОстаткиГСМнаТС.Регистратор, уатСчетчикиТС.СпНач, уатСчетчикиТСпосл.Значение |
|||
9
IBTM
24.11.11
✎
15:21
|
(7) Как незнаешь? Ты же можешь поспотреть что идет в ячейку!!! Или Например можешь использовать параметр в запрос, если (судя по (0)) это ТекстПоле "-". Тогда
Запрос.УстановитьПараметр("парам", "-"); ------------------------------------------ Выбор когда уатСчетчикиТСпосл.Значение = &парам Тогда 77066 Иначе уатСчетчикиТСпосл.Значение Конец Не? |
|||
10
rs_trade
24.11.11
✎
15:29
|
(8) так понятно?
ВЫБРАТЬ ЗаказКлиентаТовары.Номенклатура, ЗаказКлиентаТовары.Количество, ВложенныйЗапрос.Курс ИЗ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ЗаказКлиента ПО ЗаказКлиентаТовары.Ссылка = ЗаказКлиента.Ссылка, (ВЫБРАТЬ КурсыВалютСрезПоследних.Курс КАК Курс ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&Дата, Валюта = &Валюта) КАК КурсыВалютСрезПоследних) КАК ВложенныйЗапрос ГДЕ ЗаказКлиента.Ссылка = &Ссылка |
|||
11
rs_trade
24.11.11
✎
15:34
|
Во вложенном запросе, скалярный запрос возвращающий СпКон из самой поздней по времени ПЛ. Это значение потом соединяется с каждой строкой результата предыдущих джойнов. Так же надо?
|
|||
12
Adgjj
25.11.11
✎
09:53
|
ИЗ
РегистрНакопления.уатОстаткиГСМнаТС КАК уатОстаткиГСМнаТС ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатМестонахождениеТС.СрезПоследних(&ДатаПо, ) КАК уатМестонахождениеТССрезПоследних ПО уатОстаткиГСМнаТС.ТС = уатМестонахождениеТССрезПоследних.ТС ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатПервоначальныеСведенияТС КАК уатПервоначальныеСведенияТС ПО уатОстаткиГСМнаТС.ТС = уатПервоначальныеСведенияТС.ОсновноеСредство ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.уатСчетчикиТС КАК уатСчетчикиТС ПО уатОстаткиГСМнаТС.Регистратор = уатСчетчикиТС.Регистратор, //ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.уатСчетчикиТС.СрезПоследних КАК уатСчетчикиТСпосл // ПО уатОстаткиГСМнаТС.Регистратор = уатСчетчикиТСпосл.Регистратор (ВЫБРАТЬ //уатСчетчикиТСпосл.Регистратор КАК Регистратор, уатСчетчикиТСпосл.Значение КАК СпКон ИЗ РегистрСведений.уатСчетчикиТС.СрезПоследних КАК уатСчетчикиТСпосл) КАК ВложенныйЗапрос Почему-то пишет "Поле не найдено: уатСчетчикиТСпосл.Значение"? |
|||
13
Adgjj
25.11.11
✎
09:59
|
ВЫБРАТЬ
//уатСчетчикиТСпосл.Регистратор КАК Регистратор, уатСчетчикиТСпосл.Значение КАК СпКон ИЗ РегистрСведений.уатСчетчикиТС.СрезПоследних КАК уатСчетчикиТСпосл эта внутренняя часть работает |
|||
14
Adgjj
25.11.11
✎
10:01
|
отбой
|
|||
15
Adgjj
25.11.11
✎
10:04
|
rs_trade, огромное Вам спасибо, получилось!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |