|
Консоль запросов. Как передать список значений в параметр запроса | ☑ | ||
---|---|---|---|---|
0
myr4ik07
29.01.15
✎
14:10
|
Использую конструктор запросов.
Нужно вывести Номенклатура КоличествоОстаток ЦенаЗакупочная1 ЦенаЗакупочная2 ЦенаЗакупочная ЦенаРозничная это Справочник.ТипыЦен пишу ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад КАК Склад, ТоварыНаСкладахОстатки.Номенклатура, СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК Остаток, СУММА(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена, ЦеныНоменклатурыСрезПоследних.ТипЦен ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура ГДЕ ТоварыНаСкладахОстатки.Склад.Подразделение.Родитель = &Склад И ЦеныНоменклатурыСрезПоследних.ТипЦен В(&ТипЦен) В этот параметр ТипЦен передаю ЦенаЗакупочная1, а как вывести, что бы показывало и ЦенаЗакупочная1 и ЦенаЗакупочная2 одновременно?! |
|||
24
myr4ik07
29.01.15
✎
14:28
|
(15) опа, а можно пример правильного?
|
|||
25
Рэйв
29.01.15
✎
14:28
|
правда не помню будет ли под 8.1 запускаться.
|
|||
26
myr4ik07
29.01.15
✎
14:28
|
(22) спасибо, ща гляну
|
|||
27
myr4ik07
29.01.15
✎
14:28
|
(25) 8.2 у меня
|
|||
28
Dmitrii
гуру
29.01.15
✎
14:28
|
(0) Поле цена должно выглядеть как-то так:
ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) |
|||
29
Рэйв
29.01.15
✎
14:29
|
(27)Я там еще выполнение кода и доп параметры прикрутил.Разберешься поди:-)
|
|||
30
myr4ik07
29.01.15
✎
14:29
|
(25) ого консолище ) у меня скромнее все было )
|
|||
31
Рэйв
29.01.15
✎
14:30
|
(30)Наслаждайся:-)
|
|||
32
myr4ik07
29.01.15
✎
14:30
|
(31) спасибо )
|
|||
33
myr4ik07
29.01.15
✎
14:32
|
(28) т.е.
здесь ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура правильно? |
|||
34
Dmitrii
гуру
29.01.15
✎
14:33
|
(24) что-то типа:
ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад КАК Склад, ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена, ЦеныНоменклатурыСрезПоследних.ТипЦен ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(,Склад.Подразделение.Родитель = &Склад) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура И ЦеныНоменклатурыСрезПоследних.ТипЦен В(&ТипЦен) |
|||
35
myr4ik07
29.01.15
✎
14:33
|
(28) а вот
И ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен ИЛИ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен2) тут уже будет показываться только те остатки, в которых будет присутствовать Зак1 и Зак2, а остальные не попадут? |
|||
36
Dmitrii
гуру
29.01.15
✎
14:34
|
+ к (34) условие ГДЕ не нужно вообще
|
|||
37
myr4ik07
29.01.15
✎
14:38
|
(34) ану сейчас попробую разобраться
|
|||
38
Timon1405
29.01.15
✎
14:47
|
вброшу для примера
ВЫБРАТЬ Номенклатура1.Ссылка, ЦеныНоменклатурыСрезПоследних.ТипЦен, ЦеныНоменклатурыСрезПоследних.Цена ИЗ Справочник.Номенклатура КАК Номенклатура1 ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен В (&Тип1, &Тип2)) КАК ЦеныНоменклатурыСрезПоследних ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = Номенклатура1.Ссылка) |
|||
39
myr4ik07
29.01.15
✎
14:56
|
(38) (36) будьте добры
ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад КАК Склад, ТоварыНаСкладахОстатки.Номенклатура, СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК Количество, ЦеныНоменклатурыСрезПоследних.Цена, ЦеныНоменклатурыСрезПоследних.ТипЦен ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение.Родитель = &Подразделение) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен В (&ТипЦен1, &ТипЦен)) КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура СГРУППИРОВАТЬ ПО ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.Склад, ЦеныНоменклатурыСрезПоследних.Цена, ЦеныНоменклатурыСрезПоследних.ТипЦен УПОРЯДОЧИТЬ ПО Склад как бы работает так как надо |
|||
40
myr4ik07
29.01.15
✎
15:11
|
просто мысли в слух скажу для того, что бы если не правильно думаю выправили меня.
В виртуальную таблицу регистра накопления мы вторым параметром передаем параметр, которому в итоге присвоим какое то значение (так как в подразделениях у меня есть еще подразделения я выбрал Корневую Группу Родитель) далее соединяю Левым соединением второй регистр, в котором также в параметрах указываем Поле, по которому будет условие и в качестве параметров я буду присваивать значения (ТипыЦена) Соединение у меня с каждой Таблицы будет по Полю Номенклатура, а значит Обязательно в с Левой Таблицы (Остатки) попадут все записи, а с правой таблицы если в какой том поле не будет значение то будет null. Правильно я понимаю это? |
|||
41
Dmitrii
гуру
29.01.15
✎
15:30
|
(39) Группировка тут не нужна.
И ты опять забыл про цену ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) У тебя левое содеинение. А значит в поле цена может прилететь значение NULL, если условие соединения не выполняется. |
|||
42
Dmitrii
гуру
29.01.15
✎
15:32
|
(40) Про корневую группу ничего не понятно. Есть подозрение, что условие не правильное. Но чтобы это понять нужно знать особенности вашей конфигурации.
Скорее всего условие в параметрах виртуально таблицы должно быть: Склад.Подразделение В ИЕРАРХИИ (&Подразделение) |
|||
43
myr4ik07
29.01.15
✎
15:46
|
(41) да, без группировки ничего не изменилось
а конф у меня УТП для Украины 1.2 Подразделение это Иерархический Справочник Иерархия Элементов А значит Подразделение1 ПодПодразделение1 ПодПодразделени2 и т.д. |
|||
44
myr4ik07
29.01.15
✎
15:48
|
(42) да Склад.Подразделение В ИЕРАРХИИ (&Подразделение) вот это то что надо
|
|||
45
myr4ik07
29.01.15
✎
15:51
|
(42) а что можно предпринять, у меня выходит в консоле запросов
Номенклатура1 Остаток Цена ТипЦен(Зак1) Номенклатура1 Остаток Цена ТипЦен(Зак1) Номенклатура3 Остаток Цена ТипЦена(Зак2) Номенклатура2 Остаток Цена ТипЦен(Зак1) Номенклатура3 Остаток Цена ТипЦена(Зак2) примечание Зак1 = доллар, Зак2 = гривна тут видно, что Номенклатура1 имеет Зак1 и Зак2 цену, что бы сделать, что бы было видно, что есть номенклатура и с Зак1 и Зак2, что бы можно было не считать два раза и по долларовой и по гривненвой цене |
|||
46
myr4ik07
29.01.15
✎
15:53
|
в итоге у меня задача есть пощитать стоимость одной из торговых точек
номенклатура закупалась как в долларовом так и в гривневом эквиваленте |
|||
47
myr4ik07
29.01.15
✎
15:56
|
значит с помощью (41) добился остаток цену и типцен, а теперь же мне нужно отобрать все долларовую номенклатуру, умножить на курс, что бы была гривна и потом прибавить к гривне но тут нюанс, что в одной номенклатуре быть и грн и дол. закупка, а так как я уже перевел номенклатуру с доллара то номенклатуру долларовую уже не нужно считать в гривне
капец ) сам не понял что написал, если чо, еще раз попробую обьяснить ) |
|||
48
myr4ik07
29.01.15
✎
16:15
|
типа, для каждой номенклатуры из результата должен быть запрос и если для этой номенклатуры есть и Зак1 и Зак2 цена то показать только раз, не важно Зак1 или Зак2 цену
|
|||
49
Dmitrii
гуру
29.01.15
✎
16:40
|
(48) Тогда делай группировку. Поле Цена и ТипЦен:
МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.Цена), МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.ТипЦен), Но тут может быть ситуация, что по МАКИСИМУМ(ТипЦен) будет ТипЦены1, но по МАКСИМУМ(Цена) - цена от ТипЦены2. |
|||
50
myr4ik07
29.01.15
✎
17:00
|
(49) типа
ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад КАК Склад, МАКСИМУМ(ТоварыНаСкладахОстатки.Номенклатура) КАК Номенклатура, ТоварыНаСкладахОстатки.КоличествоОстаток КАК Осталось, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, "нет цены") КАК Цена, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.ТипЦен, "нет цены") КАК ТипЦен, ЕСТЬNULL(1.00000000001 / 1.00000000001 * ТоварыНаСкладахОстатки.КоличествоОстаток * ЦеныНоменклатурыСрезПоследних.Цена, "нет ценв") КАК Сумма ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение В ИЕРАРХИИ (&Подразделение)) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен В (&ТипЦен1, &ТипЦен)) КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура ГДЕ ТоварыНаСкладахОстатки.КоличествоОстаток > 0 СГРУППИРОВАТЬ ПО ЦеныНоменклатурыСрезПоследних.Цена, ЦеныНоменклатурыСрезПоследних.ТипЦен, ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.КоличествоОстаток УПОРЯДОЧИТЬ ПО Склад, ТипЦен, Осталось УБЫВ ? |
|||
51
myr4ik07
29.01.15
✎
17:12
|
РАЗЛИЧНЫЕ
и всякие группировки тоже не срабатывают |
|||
52
Dmitrii
гуру
29.01.15
✎
17:52
|
(50) Извини, но ты совсем ерунду пишешь... :(
|
|||
53
myr4ik07
30.01.15
✎
09:29
|
(52) доброе утро ), хочу реабилитироваться ))
ВЫБРАТЬ ЦеныНоменклатурыСрезПоследних.Номенклатура, МИНИМУМ(ЦеныНоменклатурыСрезПоследних.ТипЦен) КАК ТипЦен, МИНИМУМ(ЦеныНоменклатурыСрезПоследних.Цена) КАК Цена ПОМЕСТИТЬ ВТ ИЗ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен В (&ТипЦен1, &ТипЦен2)) КАК ЦеныНоменклатурыСрезПоследних СГРУППИРОВАТЬ ПО ЦеныНоменклатурыСрезПоследних.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад КАК Склад, ВТ.Номенклатура, ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество, ВТ.Цена КАК Цена, 1.0000000001 / 1.0000000001 * ТоварыНаСкладахОстатки.КоличествоОстаток * ВТ.Цена КАК Сумма, ВТ.ТипЦен КАК ТипЦен ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение В ИЕРАРХИИ (&Подразделение)) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК ВТ ПО ТоварыНаСкладахОстатки.Номенклатура = ВТ.Номенклатура ГДЕ ТоварыНаСкладахОстатки.КоличествоОстаток > 1 И НЕ ВТ.Номенклатура ЕСТЬ NULL УПОРЯДОЧИТЬ ПО Склад, Количество УБЫВ вроде все что надо выводит, как вам такой запрос? |
|||
54
Ёпрст
30.01.15
✎
09:38
|
(53)в этом запросе потеряются товары, которые есть на остатках и у которых нет вообще никакой цены.
|
|||
55
myr4ik07
30.01.15
✎
09:41
|
(54) "покажите пальце" где "ошибка"?
|
|||
56
myr4ik07
30.01.15
✎
09:42
|
* пальцем
|
|||
57
Ёпрст
30.01.15
✎
09:43
|
ГДЕ
НЕ ВТ.Номенклатура ЕСТЬ NULL это надо перенести в условие соединения. ЗЫ: ну и минимум от ТипЦен..тоже не фонтан. Может проще поставить условие на один каонкретный тип цен ? |
|||
58
myr4ik07
30.01.15
✎
09:45
|
(57) можно и на один но придеться сначала на один тип цен делать отчет, а потом второй, хочеться все сразу ))
|
|||
59
myr4ik07
30.01.15
✎
09:46
|
(57) ааа, сто пудов, тут норм, это я написал потому что в Поля Номенклатура и последующие поля были null, там пусто было и оно мне мешало
|
|||
60
Ёпрст
30.01.15
✎
09:47
|
(59) ?
че мешало ? |
|||
61
myr4ik07
30.01.15
✎
09:48
|
(57) кстати, а подскажите пожалуйста, делаю внешний отчет и строк много, хотелось бы с № по порядку вывести строки, в СКД это не делается? Если делается то как? Типа цикл нужно писать или что?
|
|||
62
ktvladimir
30.01.15
✎
09:48
|
печально что такие вопросы уже детально разжевываются... не методы не методология а тупые соединения...
|
|||
63
myr4ik07
30.01.15
✎
09:50
|
(60) ну ... все Поля по ВЫБРАТЬ пустые были (null), кроме Поле Цена, вот думаю что что то не нужное попало вот и на есть нулл сделал условие
|
|||
64
myr4ik07
30.01.15
✎
09:51
|
(62) извините, хочу понять, живое общение намного лучше воспринимается чем читание мануалов, так пальцем тыкнуть могут в ошибку или неправильность
|
|||
65
ktvladimir
30.01.15
✎
10:07
|
причем тут мануалы... тут задача простая, просто на понимание процессов.... Пусть бы все было не оптимально, пусть с избыточным кодом... это все придет позже, но непонимание что произойдет при соединении... что произойдет при наложении условий... это ересь...
Если заранее не представлять алгоритм действий для получения результата, о какой разработке может идти речь... Вообще результат меня ужасает.. как можно анализировать отчет в котором вперемешку разные валюты для цен... это будет первой же претензией от менеджеров, как его читать если у тебя вперемежку и доллары и гривны |
|||
66
myr4ik07
30.01.15
✎
10:20
|
(65) ну как есть, учусь. Потом в екселе сортировка, что бы было удобнее
|
|||
67
ktvladimir
30.01.15
✎
10:26
|
а преобразовать цену в другую валюту не судьба?...
те потом тебе скажут ок в гривне классно, а выведи тоже самое в долларах и ты пойдешь всех мучать по новой? или в экселе пересчитаешь а скажут в евро?. курс плавающий если что 1.0000000001 / 1.0000000001 * ТоварыНаСкладахОстатки.КоличествоОстаток * ВТ.Цена КАК Сумма, вот это я вообще отказываюсь понимать |
|||
68
myr4ik07
30.01.15
✎
10:29
|
(67) ну на счет переобразовать то наверное да, тут могут попросить.
а вот эта дикость 1.0000000001 / 1.0000000001 * ТоварыНаСкладахОстатки.КоличествоОстаток * ВТ.Цена КАК Сумма, для того, что бы моя Консоль запросов показывала не менее 4 цифр, например умножаэться 1 * 4444444 = а равно будет 4444 |
|||
69
myr4ik07
30.01.15
✎
10:30
|
(67) а с этой строкой
1.0000000001 / 1.0000000001 * ТоварыНаСкладахОстатки.КоличествоОстаток * ВТ.Цена КАК Сумма, выводит нормально умножение |
|||
70
myr4ik07
30.01.15
✎
10:31
|
(67) в одной из моих тем было предложено такой выход, я от него не отказался, потому как работает
|
|||
71
Ёпрст
30.01.15
✎
10:39
|
(63) еще бы.. В селекте нужно брать Номенклатуру с останков, а не с ВТ и.. выкинуть вообще это нелепое условие.
|
|||
72
Ёпрст
30.01.15
✎
10:40
|
+71
|ВЫБРАТЬ | ТоварыНаСкладахОстатки.Склад КАК Склад, | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, |// ВТ.Номенклатура, |
|||
73
ktvladimir
30.01.15
✎
10:43
|
грубо навскидку..
ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад КАК Склад, ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество, ВЫБОР КОГДА ЦеныНоменклатуры.Валюта = &НужнаяВалюта ТОГДА ЦеныНоменклатуры.Цена КОГДА ЦеныНоменклатуры.Валюта IS NULL ТОГДА 0 ИНАЧЕ ЦеныНоменклатуры.Цена * (КурсВалюты.Курс / КурсВалюты.Кратность) * (КурсВалютыНужнойВалюты.Кратность / КурсВалютыНужнойВалюты.Курс) КОНЕЦ КАК Цена, ВЫБОР КОГДА ЦеныНоменклатуры.Валюта = &НужнаяВалюта ТОГДА ЦеныНоменклатуры.Цена КОГДА ЦеныНоменклатуры.Валюта IS NULL ТОГДА 0 ИНАЧЕ ЦеныНоменклатуры.Цена * (КурсВалюты.Курс / КурсВалюты.Кратность) * (КурсВалютыНужнойВалюты.Кратность / КурсВалютыНужнойВалюты.Курс) КОНЕЦ * ТоварыНаСкладахОстатки.КоличествоОстаток КАК Сумма ЦеныНоменклатуры.ТипЦен КАК ТипЦен ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение В ИЕРАРХИИ (&Подразделение)) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних КАК КурсВалюты ПО ЦеныНоменклатуры.Валюта = КурсВалюты.Валюта ПО ТоварыНаСкладахОстатки.Номенклатура = ВТ.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних(, Валюта = &НужнаяВалюта) КАК КурсВалютыНужнойВалюты ПО ИСТИНА ГДЕ ТоварыНаСкладахОстатки.КоличествоОстаток > 1 УПОРЯДОЧИТЬ ПО Склад, Количество УБЫВ |
|||
74
myr4ik07
30.01.15
✎
10:46
|
(73) (72) спасибо
|
|||
75
ktvladimir
30.01.15
✎
10:52
|
ну и ограничение на типы цен добавить конечно же, если вам нужно только по розничной или закопочной
|
|||
76
myr4ik07
30.01.15
✎
10:58
|
(75) да, нужно 2 цены
|
|||
77
myr4ik07
30.01.15
✎
11:05
|
(75) я тут не могу понять
ПО ТоварыНаСкладахОстатки.Номенклатура = ВТ.Номенклатура если уже нет Временной таблицы до зачем это условие? |
|||
78
myr4ik07
30.01.15
✎
11:06
|
(75) и какое условие здесь первое выполняется
РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение В ИЕРАРХИИ (&Подразделение)) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних КАК КурсВалюты ПО ЦеныНоменклатуры.Валюта = КурсВалюты.Валюта ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних(, Валюта = &НужнаяВалюта) КАК КурсВалютыНужнойВалюты ПО ИСТИНА |
|||
79
myr4ik07
30.01.15
✎
11:07
|
(75) что то тут так соединение много что я не могу ничего понять
|
|||
80
ktvladimir
30.01.15
✎
11:09
|
к таблице товаров левым соединением приклеиваем цены номенклатуры тут понятно думаю. далее к ценам номенклатуры приклеиваем курсы те получим
товар,склад,Цена (В валюте типа цены), курс и кратоность по валюте (типа цены) |
|||
81
ktvladimir
30.01.15
✎
11:11
|
помимо всего прочего к таблице товаров присоединяем курсы по конкретной валюте, так как условие соединения по истине то просто к каждой записи получаемой из товаров присоединяем запись курса валюты по конкретной валюте
|
|||
82
ktvladimir
30.01.15
✎
11:12
|
по сути если по шагам
к таблице товаров цепляем цены номенклатуры и курсы для текущей валюты. Далее к полученным данным присоединяем курсы по валюте полученной из цены номенклатуры |
|||
83
myr4ik07
30.01.15
✎
11:13
|
(80) стоп, у меня РегистрСведений.КурсВалюты.СрезПоследних КАК КурсВалюты тут бред, а не курсы
|
|||
84
ktvladimir
30.01.15
✎
11:15
|
ы чем бред? я не знаю как в вашей системе называется регистр хранящий курсы валют, поэтому написал так
|
|||
85
myr4ik07
30.01.15
✎
11:16
|
(82) та не, к вам притензий никаких, очень помогаете понять, спасибо и регистр верный просто мы никогда не использовали данный функционал по курсам
|
|||
86
myr4ik07
30.01.15
✎
11:18
|
(84) типа сначала выполняется
РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение В ИЕРАРХИИ (&Подразделение)) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатуры ПО ИСТИНА потом РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение В ИЕРАРХИИ (&Подразделение)) КАК ТоварыНаСкладахОстатки ПО ЦеныНоменклатуры.Валюта = КурсВалюты.Валюта а ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних(, Валюта = &НужнаяВалюта) КАК КурсВалютыНужнойВалюты тут где условие по чем соединять? |
|||
87
ktvladimir
30.01.15
✎
11:20
|
нет... после соединения обязательно должно быть ключевое слово ПО чтоб определить по каким полям соединить если вы посмотрите на кода то идет вложение соединений и для
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатуры соответствует ПО ТоварыНаСкладахОстатки.Номенклатура = ВТ.Номенклатура |
|||
88
ktvladimir
30.01.15
✎
11:20
|
а ПО ЦеныНоменклатуры.Валюта = КурсВалюты.Валюта
относится к ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних КАК КурсВалюты |
|||
89
ktvladimir
30.01.15
✎
11:23
|
Похоже на
Если Условие1 Тогда Если Условие 2 Тогда Текст КонецЕсли; //Если Условие 2 Тогда Иначе Текст КонецЕсли; //Если Условие1 Тогда Вы же понимаете что первое КонецЕсли относится не к первому условию а ко второму так и тут смотрите к чему относится ПО |
|||
90
ktvladimir
30.01.15
✎
11:25
|
те все соединения выглядят так
РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение В ИЕРАРХИИ (&Подразделение)) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатуры ПО ТоварыНаСкладахОстатки.Номенклатура = ВТ.Номенклатура РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение В ИЕРАРХИИ (&Подразделение)) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних(, Валюта = &НужнаяВалюта) КАК КурсВалютыНужнойВалюты ПО ИСТИНА РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних КАК КурсВалюты ПО ЦеныНоменклатуры.Валюта = КурсВалюты.Валюта |
|||
91
myr4ik07
30.01.15
✎
11:29
|
(90) ух ) сейчас, голову напряжу, попытаюсь понять )
|
|||
92
myr4ik07
30.01.15
✎
11:32
|
(90) о, вот тут бомба розжовано, но ПО ИСТИНА почему? Типа если в РН.ТоварыНаСкладах.Остатки есть значение взято с КурсыВалют то Истина, правильно?
|
|||
93
ktvladimir
30.01.15
✎
11:34
|
По истина служит просто чтоб соединение было без условий. ВСЕГДА для ВСЕХ записей из ТоварыНаСкладах без каких либо условий прицепить информацию о курсе нужной нам валюты
|
|||
94
myr4ik07
30.01.15
✎
11:35
|
(93) если ПО ИСТИНА заменить на ПОЛНОЕ СОЕДИНЕНИЕ будет одно и тоже?
|
|||
95
myr4ik07
30.01.15
✎
11:36
|
(93) ну, типа
ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних(, Валюта = &НужнаяВалюта) КАК КурсВалютыНужнойВалюты ...Номенклатура = ...Номенклатура |
|||
96
ktvladimir
30.01.15
✎
11:40
|
грубо Соединение это оператор
ПО это завершение этого оператора да мы можем использовать и РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение В ИЕРАРХИИ (&Подразделение)) КАК ТоварыНаСкладахОстатки ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних(, Валюта = &НужнаяВалюта) КАК КурсВалютыНужнойВалюты ПО ИСТИНА но это излишне так как это будет лишнее соединение с тем же результатом В любом случае нам нужно указать по каким полям происходит соединение в РС КурсВалюты нет номенклатуры с чем ты будешь соединять? |
|||
97
ktvladimir
30.01.15
✎
11:41
|
конечно можно написать
ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних(, Валюта = &НужнаяВалюта) КАК КурсВалютыНужнойВалюты ПО ТоварыНаСкладахОстатки.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура, но какой в этом смысл? |
|||
98
ktvladimir
30.01.15
✎
11:44
|
можно написать
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних() КАК КурсВалютыНужнойВалюты ПО Валюта = &НужнаяВалюта убрать внутреннее условие и добавить его в описание соединения, НО это плохо тем, что виртуальные таблицы это по сути подзапросы. Те сперва будет получена выборка последних данных по ВСЕМ валютам, и только потом при соединении мы отсекаем лишнее. |
|||
99
myr4ik07
30.01.15
✎
12:03
|
(96) )) не смотрел в Курсах Поле Номенклатура )), понял, если типа нет ПО чем соединить можно ПО ИСТИНА и тогда все соединиться
|
|||
100
myr4ik07
30.01.15
✎
12:05
|
(90) а вы пишете мол
РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение В ИЕРАРХИИ (&Подразделение)) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатуры ПО ТоварыНаСкладахОстатки.Номенклатура = ВТ.Номенклатура тут ВТ.Номенклатура это Вы ошиблись или вы намекаете, что бы все же была создана ВТ (временная таблица), а потом уже соединять? |
|||
101
ktvladimir
30.01.15
✎
12:07
|
ошибка. я писал в блокноте дергая куски с вашего кода конечно же там не ВТ а ЦеныНоменклатуры
|
|||
102
myr4ik07
30.01.15
✎
12:11
|
(101) я очень вас благодарю за помощь, еще раз пройдусь по запросу
|
|||
103
myr4ik07
30.01.15
✎
12:13
|
(101) ану ща попробую без РС.КурсыВалют и вместо ВЫБОР КОГДА ТОГДА КОНЕЦ вместо РС.Курсы подставлю Параметры типа Число, что бы Курс можно было ввести
|
|||
104
ktvladimir
30.01.15
✎
12:16
|
(103) чтоб вводить в курс надо четко понимать какая валюта сейчас используется те в любом случае нужно делать тогда
выбор когда ЦеныНоменклатуры.ТипЦен.Валюта = &Гривна Тогда ЦеныНоменклатуры.Цена Иначе ЦеныНоменклатуры.Цена * &Курс Конец |
|||
105
myr4ik07
30.01.15
✎
12:20
|
(104) понял, пробую
|
|||
106
myr4ik07
30.01.15
✎
13:15
|
(104) я небось опять что то упустил
ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад, ЦеныНоменклатурыСрезПоследних.Номенклатура, ТоварыНаСкладахОстатки.КоличествоОстаток КАК Осталось, МИНИМУМ(ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен = &Доллар ТОГДА ЦеныНоменклатурыСрезПоследних.Цена * &КурсДоллар ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена КОНЕЦ) КАК Цена, МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.ТипЦен) КАК ТипЦен ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение В ИЕРАРХИИ (&Подразделение)) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен В (&ТипЦен1, &ТипЦен2)) КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура СГРУППИРОВАТЬ ПО ЦеныНоменклатурыСрезПоследних.Номенклатура, ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.КоличествоОстаток есть строчки в которых все поля имеют тип null , а Поле Осталось имеет количество |
|||
107
ktvladimir
30.01.15
✎
13:24
|
2 строка почему вы упорно берете номенклатуру из ЦеныНоменклатуры? а не из основной таблицы ТоварыНаСкладах
|
|||
108
ktvladimir
30.01.15
✎
13:28
|
и я правда не понимаю зачем вам в результате знать тип цены ....
по идее мы получаем тип цены такой то вот вам список номенклатуры с ценами тип цены такой то вот вам другой список а все в одной куче... Впрочем сами смотрите что вам надо |
|||
109
myr4ik07
30.01.15
✎
13:30
|
(107) я думал, что тут не играет роль с какой таблицы брать )
|
|||
110
myr4ik07
30.01.15
✎
13:31
|
(108) типы цен не нужно знать, я для теста просмотро смотрю, а вдруг я что то начудил и есть такие типы цен которые мне не нужны, поэтому Поле ТипыЦен вывожу, это для теста
|
|||
111
Vladal
30.01.15
✎
13:32
|
(9) Консоли бывают разные. Моя, например, умеет вычилять передаваемый параметр по формуле или вообще произвольный код, а потом результат этого года передавать как параметр (массив, список и т.д.)
А так - помещай свою таблицу значений во временную таблицу и работай с ней |
|||
112
ktvladimir
30.01.15
✎
13:32
|
разница в том что если в правой таблице нет записи удовлетворяющей условию, то в результате вы получите null
|
|||
113
myr4ik07
30.01.15
✎
13:32
|
(106) а там, оказывается где естьнул это у меня номенклатура в которой нет ни долларово зак цены ни гривна зак цены но почему тодгда наименование номенклатуры не показывает? Потому что Поле Номенклатура беру на с РН.Остатки?
|
|||
114
myr4ik07
30.01.15
✎
13:32
|
(112) понял понял )
|
|||
115
myr4ik07
30.01.15
✎
13:35
|
(112) во, теперь и мне нравится и результат и запрос, огромное спасибо за подсказки
|
|||
116
myr4ik07
30.01.15
✎
13:41
|
(112) если я захочу результирующий код перенести в Внешний отчет
то Поле МИНИМУМ(ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.ТипЦен = &Доллар ТОГДА ЦеныНоменклатурыСрезПоследних.Цена * &КурсДоллар ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена КОНЕЦ) КАК Цена, МАКСИМУМ(ЦеныНоменклатурыСрезПоследних.ТипЦен) КАК ТипЦен в СКД как сделать? Вычисляемые поля? |
|||
117
ktvladimir
30.01.15
✎
13:43
|
оставить как есть запрос карма не позволит?
|
|||
118
myr4ik07
30.01.15
✎
13:47
|
(117) хм, с утра делал другой Внешний отчет, код с консоли переносил, там с параметрами запрос, так после вставки через СКД запроса с параметрами результата небыло, только после того как параметры удалил результат был, поэтому спрашиваю как быть с параметрами
|
|||
119
myr4ik07
30.01.15
✎
15:38
|
(117) я тут начитался ))) и у меня вопрос, а почему вы рекомендуете, не знаю как назвать, два соединения
ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение В ИЕРАРХИИ (&Подразделение)) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних КАК КурсВалюты ПО ЦеныНоменклатуры.Валюта = КурсВалюты.Валюта ПО ТоварыНаСкладахОстатки.Номенклатура = ВТ.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних(, Валюта = &НужнаяВалюта) КАК КурсВалютыНужнойВалюты ПО ИСТИНА если рекомендуется использовать Временные таблицы, а потом пакетным запросом или средствами языка перебирать?! |
|||
120
ktvladimir
30.01.15
✎
15:41
|
давайте сделайте так
оставьте только запрос выбрать ТоварыНаСкладахОстатки.склад, ТоварыНаСкладахОстатки.Номенклатура из РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение В ИЕРАРХИИ (&Подразделение)) КАК ТоварыНаСкладахОстатки посмотрите результат таблицы скопируйте потом добавиьте соединение с ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатуры добавьте в выборку ЦеныНоменклатуры.Валюта гляньте результат скопируйте посмотрите чвто изменилось и так далее глядишь и вопросы пропадут |
|||
121
ktvladimir
30.01.15
✎
15:45
|
зачем вам тут временные таблицы? временые таблицы рекомендованы когда у вас хитро.. подзапросы реализованы, так как в этом случае может быть выбран неоптимальный план запросов
виртуальные таблицы конечно тоже являются по своей сути подзапросами, НО используя временные таблицы вы разгружаете процессор, но нагружаете дисковую систему. В данном случае вероятность что план будет выбран неоптимальный весьма и весьма низкая... тут более вероятно что вы с индексами напутали |
|||
122
ktvladimir
30.01.15
✎
15:47
|
в общем пока пишите как вам проще. можете подзапросами можете временными неважно.. Как набъете руку то почитайте про оптимизацию ее хорошо читать когда Вы уже понимаете как это работает. Тогда уже и произойдет переосмысление ваших запросов
|
|||
123
myr4ik07
30.01.15
✎
16:11
|
(122) ага, понял, это типа я начитался да начал умничать )) благодарю вас за помощь еще раз
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |