Консоль запросов. Как передать список значений в параметр запроса #732451


#0 by myr4ik07
Использую конструктор запросов. Нужно вывести Номенклатура КоличествоОстаток ЦенаЗакупочная1 ЦенаЗакупочная2 ЦенаЗакупочная ЦенаРозничная это Справочник.ТипыЦен пишу ВЫБРАТЬ     ТоварыНаСкладахОстатки.Склад КАК Склад,     ТоварыНаСкладахОстатки.Склад.Подразделение.Родитель = &Склад     И ЦеныНоменклатурыСрезПоследних.ТипЦен В(&ТипЦен)      В этот параметр ТипЦен передаю ЦенаЗакупочная1, а как вывести, что бы показывало и ЦенаЗакупочная1 и ЦенаЗакупочная2 одновременно?!
#0 by myr4ik07
Использую конструктор запросов. Нужно вывести Номенклатура КоличествоОстаток ЦенаЗакупочная1 ЦенаЗакупочная2 ЦенаЗакупочная ЦенаРозничная это Справочник.ТипыЦен пишу ВЫБРАТЬ     ТоварыНаСкладахОстатки.Склад КАК Склад,     ТоварыНаСкладахОстатки.Склад.Подразделение.Родитель = &Склад     И ЦеныНоменклатурыСрезПоследних.ТипЦен В(&ТипЦен)      В этот параметр ТипЦен передаю ЦенаЗакупочная1, а как вывести, что бы показывало и ЦенаЗакупочная1 и ЦенаЗакупочная2 одновременно?!
#1 by myr4ik07
*ЦенаРозничная  имею ввиду ЦенаЗакупочная
#2 by Dmitrii
Передать в качестве значения параметра массив
#3 by myr4ik07
приведите пример пожалуйста
#4 by myr4ik07
а если в Поместить, а потом еще добавить Закупочная2?!
#5 by Dmitrii
Зачем тут ЛЕВОЕ соединение, если в условии всё равно режутся записи с ненужными типами цен (в т.ч. и NULL)?
#6 by ПсихотерапевтаВызыва
два левых соединения к таблице цен с ПВТ = &ТипЦены1 и =&ТипЦены2
#7 by myr4ik07
мне по остатках нужно вывести зак1 + зак2 цену (там доллар и гривна)
#8 by Dmitrii
как-то так
#9 by myr4ik07
так я ж в консоле запросов работаю
#10 by Dmitrii
А если в регистре ЦеныНоменклатуры не найдется ни одной записи с указанным типом цен? Запрос должен вернуть пустой результат? Или показать остатки на складе?
#11 by Dmitrii
Смотря какая консоль. В консоли можно указать список значений в качестве значения параметра.
#12 by myr4ik07
обязательно Остатки, а уже по остаткам цены, если даже они и пустые
#13 by myr4ik07
ну ... в той консоле в которой я использую такого не вижу
#14 by Dmitrii
В тесте запроса:     ИЛИ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен2     ИЛИ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен3    ИЛИ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен4    ИЛИ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен5    ИЛИ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен6    ИЛИ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен7    ИЛИ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен8    ИЛИ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен9)
#15 by Dmitrii
Твой запрос Остатки не покажет. По условия в ГДЕ - выкинет из результата все записи, в которых нужного тебе типа цен не будет.
#16 by myr4ik07
браво! В точку!
#17 by Dmitrii
Что за древняя консоль? Почти все существующие консоли позволяют указывать в качестве параметра список значений.
#18 by Рэйв
Держи:-)
#19 by myr4ik07
о, спасибо )
#20 by myr4ik07
написано в ф1 "Функциоальные возможности к стандартной консоли добавил Павел Чистов ;
#21 by myr4ik07
управляемые формы? потому что у меня обычные
#22 by Рэйв
Нет, Обычные формы
#23 by Dmitrii
А зачем в это м запросе СУММА? Что вы там группируете? В виртуальной таблице остатков данные уже сгруппированы по измерениям.
#24 by myr4ik07
опа, а можно пример правильного?
#25 by Рэйв
правда не помню будет ли под 8.1 запускаться.
#26 by myr4ik07
спасибо, ща гляну
#27 by myr4ik07
8.2 у меня
#28 by Dmitrii
Поле цена должно выглядеть как-то так:
#29 by Рэйв
Я там еще выполнение кода и доп параметры прикрутил.Разберешься поди:-)
#30 by myr4ik07
ого консолище ) у меня скромнее все было )
#31 by Рэйв
Наслаждайся:-)
#32 by myr4ik07
спасибо )
#33 by myr4ik07
т.е. здесь ИЗ     РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки правильно?
#34 by Dmitrii
что-то типа: ВЫБРАТЬ   ТоварыНаСкладахОстатки.Склад КАК Склад,   ТоварыНаСкладахОстатки.Номенклатура,         ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура И ЦеныНоменклатурыСрезПоследних.ТипЦен В(&ТипЦен)
#35 by myr4ik07
тут уже будет показываться только те остатки, в которых будет присутствовать Зак1 и Зак2, а остальные не попадут?
#36 by Dmitrii
+ к условие ГДЕ не нужно вообще
#37 by myr4ik07
ану сейчас попробую разобраться
#38 by Timon1405
вброшу для примера ВЫБРАТЬ     Номенклатура1.Ссылка,     ЦеныНоменклатурыСрезПоследних.ТипЦен,     ЦеныНоменклатурыСрезПоследних.Цена ИЗ
#39 by myr4ik07
будьте добры     ТоварыНаСкладахОстатки.Склад КАК Склад, как бы работает так как надо
#40 by myr4ik07
просто мысли в слух скажу для того, что бы если не правильно думаю выправили меня. В виртуальную таблицу регистра накопления мы вторым параметром передаем параметр, которому в итоге присвоим какое то значение (так как в подразделениях у меня есть еще подразделения я выбрал Корневую Группу Родитель) далее соединяю Левым соединением второй регистр, в котором также в параметрах указываем Поле, по которому будет условие и в качестве параметров я буду присваивать значения (ТипыЦена) Соединение у меня с каждой Таблицы будет по Полю Номенклатура, а значит Обязательно в с Левой Таблицы (Остатки) попадут все записи, а с правой таблицы если в какой том поле не будет значение то будет null. Правильно я понимаю это?
#41 by Dmitrii
Группировка тут не нужна. И ты опять забыл про цену ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) У тебя левое содеинение. А значит в поле цена может прилететь значение NULL, если условие соединения не выполняется.
#42 by Dmitrii
Про корневую группу ничего  не понятно. Есть подозрение, что условие не правильное. Но чтобы это понять нужно знать особенности вашей конфигурации. Скорее всего условие в параметрах виртуально таблицы должно быть: Склад.Подразделение В ИЕРАРХИИ (&Подразделение)
#43 by myr4ik07
да, без группировки ничего не изменилось а конф у меня УТП для Украины 1.2 Подразделение это Иерархический Справочник Иерархия Элементов Подразделение1 ПодПодразделение1 ПодПодразделени2 и т.д.
#44 by myr4ik07
да  Склад.Подразделение В ИЕРАРХИИ (&Подразделение) вот это то что надо
#45 by myr4ik07
а что можно предпринять, у меня выходит в консоле запросов Номенклатура1 Остаток Цена ТипЦен(Зак1) Номенклатура1 Остаток Цена ТипЦен(Зак1) Номенклатура3 Остаток Цена ТипЦена(Зак2) Номенклатура2 Остаток Цена ТипЦен(Зак1) Номенклатура3 Остаток Цена ТипЦена(Зак2) примечание Зак1 = доллар, Зак2 = гривна тут видно, что Номенклатура1 имеет Зак1 и Зак2 цену, что бы сделать, что бы было видно, что есть номенклатура и с Зак1 и Зак2, что бы можно было не считать два раза и по долларовой и по гривненвой цене
#46 by myr4ik07
в итоге у меня задача есть пощитать стоимость одной из торговых точек номенклатура закупалась как в долларовом так и в гривневом эквиваленте
#47 by myr4ik07
значит с помощью добился остаток цену и типцен, а теперь же мне нужно отобрать все долларовую номенклатуру, умножить на курс, что бы была гривна и потом прибавить к гривне но тут нюанс, что в одной номенклатуре быть и грн и дол. закупка, а так как я уже перевел номенклатуру с доллара то номенклатуру долларовую уже не нужно считать в гривне капец ) сам не понял что написал, если чо, еще раз попробую обьяснить )
#48 by myr4ik07
типа, для каждой номенклатуры из результата должен быть запрос и если для этой номенклатуры есть и Зак1 и Зак2 цена то показать только раз, не важно Зак1 или Зак2 цену
#49 by Dmitrii
Тогда делай группировку. Поле Цена и ТипЦен: Но тут может быть ситуация, что по МАКИСИМУМ(ТипЦен) будет ТипЦены1, но по МАКСИМУМ(Цена) - цена от ТипЦены2.
#50 by myr4ik07
типа ВЫБРАТЬ ?
#51 by myr4ik07
РАЗЛИЧНЫЕ и всякие группировки тоже не срабатывают
#52 by Dmitrii
Извини, но ты совсем ерунду пишешь... :(
#53 by myr4ik07
доброе утро ), хочу реабилитироваться )) ВЫБРАТЬ     И НЕ ВТ.Номенклатура ЕСТЬ NULL УПОРЯДОЧИТЬ ПО вроде все что надо выводит, как вам такой запрос?
#54 by Ёпрст
в этом запросе потеряются товары, которые есть на остатках и у которых нет вообще никакой цены.
#55 by myr4ik07
"покажите пальце" где "ошибка"?
#56 by myr4ik07
* пальцем
#57 by Ёпрст
ГДЕ     НЕ ВТ.Номенклатура ЕСТЬ NULL это надо перенести в условие соединения. ЗЫ: ну и минимум от ТипЦен..тоже не фонтан. Может проще поставить условие на один каонкретный тип цен ?
#58 by myr4ik07
можно и на один но придеться сначала на один тип цен делать отчет, а потом второй, хочеться все сразу ))
#59 by myr4ik07
ааа, сто пудов, тут норм, это я написал потому что в Поля Номенклатура и последующие поля были null, там пусто было и оно мне мешало
#60 by Ёпрст
? че мешало ?
#61 by myr4ik07
кстати, а подскажите пожалуйста, делаю внешний отчет и строк много, хотелось бы с № по порядку вывести строки, в СКД это не делается? Если делается то как? Типа цикл нужно писать или что?
#62 by ktvladimir
печально что такие вопросы уже детально разжевываются... не методы не методология а тупые соединения...
#63 by myr4ik07
ну ... все Поля по ВЫБРАТЬ пустые были (null), кроме Поле Цена, вот думаю что что то не нужное попало вот и на есть нулл сделал условие
#64 by myr4ik07
извините, хочу понять, живое общение намного лучше воспринимается чем читание мануалов, так пальцем тыкнуть могут в ошибку или неправильность
#65 by ktvladimir
причем тут мануалы... тут задача простая, просто на понимание процессов.... Пусть бы все было не оптимально, пусть с избыточным кодом... это все придет позже, но непонимание что произойдет при соединении... что произойдет при наложении условий... это ересь... Если заранее не представлять алгоритм действий для получения результата, о какой разработке может идти речь... Вообще результат меня ужасает.. как можно анализировать отчет в котором вперемешку разные валюты для цен... это будет первой же претензией от менеджеров, как его читать если у тебя вперемежку и доллары и гривны
#66 by myr4ik07
ну как есть, учусь. Потом в екселе сортировка, что бы было удобнее
#67 by ktvladimir
а преобразовать цену в другую валюту не судьба?... те потом тебе скажут ок в гривне классно, а выведи тоже самое в долларах и ты пойдешь всех мучать по новой? или в экселе пересчитаешь а скажут в евро?. курс плавающий если что 1.0000000001 / 1.0000000001 * ТоварыНаСкладахОстатки.КоличествоОстаток * ВТ.Цена КАК Сумма, вот это я вообще отказываюсь понимать
#68 by myr4ik07
ну на счет переобразовать то наверное да, тут могут попросить. а вот эта дикость 1.0000000001 / 1.0000000001 * ТоварыНаСкладахОстатки.КоличествоОстаток * ВТ.Цена КАК Сумма, для того, что бы моя Консоль запросов показывала не менее 4 цифр, например умножаэться 1 * 4444444 = а равно будет 4444
#69 by myr4ik07
а с этой строкой 1.0000000001 / 1.0000000001 * ТоварыНаСкладахОстатки.КоличествоОстаток * ВТ.Цена КАК Сумма, выводит нормально умножение
#70 by myr4ik07
в одной из моих тем было предложено такой выход, я от него не отказался, потому как работает
#71 by Ёпрст
еще бы.. В селекте нужно брать Номенклатуру с останков, а не с ВТ и.. выкинуть вообще это нелепое условие.
#72 by Ёпрст
+71
#73 by ktvladimir
грубо навскидку.. ВЫБРАТЬ     ВЫБОР     КОГДА ЦеныНоменклатуры.Валюта = &НужнаяВалюта ТОГДА         ЦеныНоменклатуры.Цена     КОГДА ЦеныНоменклатуры.Валюта IS NULL ТОГДА         0     ИНАЧЕ     ВЫБОР     КОГДА ЦеныНоменклатуры.Валюта = &НужнаяВалюта ТОГДА         ЦеныНоменклатуры.Цена     КОГДА ЦеныНоменклатуры.Валюта IS NULL ТОГДА         0     ИНАЧЕ
#74 by myr4ik07
спасибо
#75 by ktvladimir
ну и ограничение на типы цен добавить конечно же, если вам нужно только по розничной или закопочной
#76 by myr4ik07
да, нужно 2 цены
#77 by myr4ik07
я тут не могу понять ПО ТоварыНаСкладахОстатки.Номенклатура = ВТ.Номенклатура если уже нет Временной таблицы до зачем это условие?
#78 by myr4ik07
и какое условие здесь первое выполняется РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение В ИЕРАРХИИ (&Подразделение)) КАК ТоварыНаСкладахОстатки         ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатуры
#79 by myr4ik07
что то тут так соединение много что я не могу ничего понять
#80 by ktvladimir
к таблице товаров левым соединением приклеиваем цены номенклатуры тут понятно думаю. далее к ценам номенклатуры приклеиваем курсы те получим товар,склад,Цена (В валюте типа цены), курс и кратоность по валюте (типа цены)
#81 by ktvladimir
помимо всего прочего к таблице товаров присоединяем курсы по конкретной валюте, так как условие соединения по истине то просто к каждой записи получаемой из товаров присоединяем запись курса валюты по конкретной валюте
#82 by ktvladimir
по сути  если по шагам к таблице товаров цепляем цены номенклатуры и курсы для текущей валюты. Далее к полученным данным присоединяем курсы по валюте полученной из цены номенклатуры
#83 by myr4ik07
стоп, у меня РегистрСведений.КурсВалюты.СрезПоследних КАК КурсВалюты тут бред, а не курсы
#84 by ktvladimir
ы чем бред? я не знаю как в вашей системе называется регистр хранящий курсы валют, поэтому написал так
#85 by myr4ik07
та не, к вам притензий никаких, очень помогаете понять, спасибо и регистр верный просто мы никогда не использовали данный функционал по курсам
#86 by myr4ik07
типа сначала выполняется РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение В ИЕРАРХИИ (&Подразделение)) КАК ТоварыНаСкладахОстатки         ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатуры    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних(, Валюта = &НужнаяВалюта) КАК КурсВалютыНужнойВалюты тут где условие по чем соединять?
#87 by ktvladimir
нет... после соединения обязательно должно быть ключевое слово ПО чтоб определить по каким полям соединить если вы посмотрите на кода то идет вложение соединений и для ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатуры соответствует ПО ТоварыНаСкладахОстатки.Номенклатура = ВТ.Номенклатура
#88 by ktvladimir
а ПО  ЦеныНоменклатуры.Валюта = КурсВалюты.Валюта относится к ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних КАК КурсВалюты
#89 by ktvladimir
Вы же понимаете что первое КонецЕсли относится не к первому условию а ко второму так и тут смотрите к чему относится ПО
#90 by ktvladimir
те все соединения выглядят так   РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение В ИЕРАРХИИ (&Подразделение)) КАК ТоварыНаСкладахОстатки         ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатуры
#91 by myr4ik07
ух ) сейчас, голову напряжу, попытаюсь понять )
#92 by myr4ik07
о, вот тут бомба розжовано, но ПО ИСТИНА почему? Типа если в РН.ТоварыНаСкладах.Остатки есть значение взято с КурсыВалют то Истина, правильно?
#93 by ktvladimir
По истина служит просто чтоб соединение было без условий. ВСЕГДА для ВСЕХ записей из ТоварыНаСкладах без каких либо условий прицепить информацию о курсе нужной нам валюты
#94 by myr4ik07
если ПО ИСТИНА заменить на ПОЛНОЕ СОЕДИНЕНИЕ будет одно и тоже?
#95 by myr4ik07
#96 by ktvladimir
грубо Соединение это оператор ПО это завершение этого оператора да мы можем использовать и РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение В ИЕРАРХИИ (&Подразделение)) КАК ТоварыНаСкладахОстатки         ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних(, Валюта = &НужнаяВалюта) КАК КурсВалютыНужнойВалюты         ПО  ИСТИНА но это излишне так как это будет лишнее соединение с тем же результатом В любом случае нам нужно указать по каким полям происходит соединение в РС КурсВалюты нет номенклатуры с чем ты будешь соединять?
#97 by ktvladimir
конечно можно написать ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних(, Валюта = &НужнаяВалюта) КАК КурсВалютыНужнойВалюты ПО       ТоварыНаСкладахОстатки.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура, но какой в этом смысл?
#98 by ktvladimir
убрать внутреннее условие и добавить его в описание соединения, НО это плохо тем, что виртуальные таблицы это по сути подзапросы. Те сперва будет получена выборка последних данных по ВСЕМ валютам, и только потом при соединении мы отсекаем лишнее.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С