#0
by myr4ik07
Использую конструктор запросов. Нужно вывести Номенклатура КоличествоОстаток ЦенаЗакупочная1 ЦенаЗакупочная2 ЦенаЗакупочная ЦенаРозничная это Справочник.ТипыЦен пишу ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад КАК Склад, ТоварыНаСкладахОстатки.Склад.Подразделение.Родитель = &Склад И ЦеныНоменклатурыСрезПоследних.ТипЦен В(&ТипЦен) В этот параметр ТипЦен передаю ЦенаЗакупочная1, а как вывести, что бы показывало и ЦенаЗакупочная1 и ЦенаЗакупочная2 одновременно?!
#0
by myr4ik07
Использую конструктор запросов. Нужно вывести Номенклатура КоличествоОстаток ЦенаЗакупочная1 ЦенаЗакупочная2 ЦенаЗакупочная ЦенаРозничная это Справочник.ТипыЦен пишу ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад КАК Склад, ТоварыНаСкладахОстатки.Склад.Подразделение.Родитель = &Склад И ЦеныНоменклатурыСрезПоследних.ТипЦен В(&ТипЦен) В этот параметр ТипЦен передаю ЦенаЗакупочная1, а как вывести, что бы показывало и ЦенаЗакупочная1 и ЦенаЗакупочная2 одновременно?!
#5
by Dmitrii
Зачем тут ЛЕВОЕ соединение, если в условии всё равно режутся записи с ненужными типами цен (в т.ч. и NULL)?
#10
by Dmitrii
А если в регистре ЦеныНоменклатуры не найдется ни одной записи с указанным типом цен? Запрос должен вернуть пустой результат? Или показать остатки на складе?
#11
by Dmitrii
Смотря какая консоль. В консоли можно указать список значений в качестве значения параметра.
#14
by Dmitrii
В тесте запроса: ИЛИ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен2 ИЛИ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен3 ИЛИ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен4 ИЛИ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен5 ИЛИ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен6 ИЛИ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен7 ИЛИ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен8 ИЛИ ЦеныНоменклатурыСрезПоследних.ТипЦен = &ТипЦен9)
#15
by Dmitrii
Твой запрос Остатки не покажет. По условия в ГДЕ - выкинет из результата все записи, в которых нужного тебе типа цен не будет.
#17
by Dmitrii
Что за древняя консоль? Почти все существующие консоли позволяют указывать в качестве параметра список значений.
#20
by myr4ik07
написано в ф1 "Функциоальные возможности к стандартной консоли добавил Павел Чистов ;
#23
by Dmitrii
А зачем в это м запросе СУММА? Что вы там группируете? В виртуальной таблице остатков данные уже сгруппированы по измерениям.
#33
by myr4ik07
т.е. здесь ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки правильно?
#34
by Dmitrii
что-то типа: ВЫБРАТЬ ТоварыНаСкладахОстатки.Склад КАК Склад, ТоварыНаСкладахОстатки.Номенклатура, ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура И ЦеныНоменклатурыСрезПоследних.ТипЦен В(&ТипЦен)
#35
by myr4ik07
тут уже будет показываться только те остатки, в которых будет присутствовать Зак1 и Зак2, а остальные не попадут?
#38
by Timon1405
вброшу для примера ВЫБРАТЬ Номенклатура1.Ссылка, ЦеныНоменклатурыСрезПоследних.ТипЦен, ЦеныНоменклатурыСрезПоследних.Цена ИЗ
#40
by myr4ik07
просто мысли в слух скажу для того, что бы если не правильно думаю выправили меня. В виртуальную таблицу регистра накопления мы вторым параметром передаем параметр, которому в итоге присвоим какое то значение (так как в подразделениях у меня есть еще подразделения я выбрал Корневую Группу Родитель) далее соединяю Левым соединением второй регистр, в котором также в параметрах указываем Поле, по которому будет условие и в качестве параметров я буду присваивать значения (ТипыЦена) Соединение у меня с каждой Таблицы будет по Полю Номенклатура, а значит Обязательно в с Левой Таблицы (Остатки) попадут все записи, а с правой таблицы если в какой том поле не будет значение то будет null. Правильно я понимаю это?
#41
by Dmitrii
Группировка тут не нужна. И ты опять забыл про цену ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) У тебя левое содеинение. А значит в поле цена может прилететь значение NULL, если условие соединения не выполняется.
#42
by Dmitrii
Про корневую группу ничего не понятно. Есть подозрение, что условие не правильное. Но чтобы это понять нужно знать особенности вашей конфигурации. Скорее всего условие в параметрах виртуально таблицы должно быть: Склад.Подразделение В ИЕРАРХИИ (&Подразделение)
#43
by myr4ik07
да, без группировки ничего не изменилось а конф у меня УТП для Украины 1.2 Подразделение это Иерархический Справочник Иерархия Элементов Подразделение1 ПодПодразделение1 ПодПодразделени2 и т.д.
#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.
#53
by myr4ik07
доброе утро ), хочу реабилитироваться )) ВЫБРАТЬ И НЕ ВТ.Номенклатура ЕСТЬ NULL УПОРЯДОЧИТЬ ПО вроде все что надо выводит, как вам такой запрос?
#54
by Ёпрст
в этом запросе потеряются товары, которые есть на остатках и у которых нет вообще никакой цены.
#57
by Ёпрст
ГДЕ НЕ ВТ.Номенклатура ЕСТЬ NULL это надо перенести в условие соединения. ЗЫ: ну и минимум от ТипЦен..тоже не фонтан. Может проще поставить условие на один каонкретный тип цен ?
#58
by myr4ik07
можно и на один но придеться сначала на один тип цен делать отчет, а потом второй, хочеться все сразу ))
#59
by myr4ik07
ааа, сто пудов, тут норм, это я написал потому что в Поля Номенклатура и последующие поля были null, там пусто было и оно мне мешало
#61
by myr4ik07
кстати, а подскажите пожалуйста, делаю внешний отчет и строк много, хотелось бы с № по порядку вывести строки, в СКД это не делается? Если делается то как? Типа цикл нужно писать или что?
#62
by ktvladimir
печально что такие вопросы уже детально разжевываются... не методы не методология а тупые соединения...
#63
by myr4ik07
ну ... все Поля по ВЫБРАТЬ пустые были (null), кроме Поле Цена, вот думаю что что то не нужное попало вот и на есть нулл сделал условие
#64
by myr4ik07
извините, хочу понять, живое общение намного лучше воспринимается чем читание мануалов, так пальцем тыкнуть могут в ошибку или неправильность
#65
by ktvladimir
причем тут мануалы... тут задача простая, просто на понимание процессов.... Пусть бы все было не оптимально, пусть с избыточным кодом... это все придет позже, но непонимание что произойдет при соединении... что произойдет при наложении условий... это ересь... Если заранее не представлять алгоритм действий для получения результата, о какой разработке может идти речь... Вообще результат меня ужасает.. как можно анализировать отчет в котором вперемешку разные валюты для цен... это будет первой же претензией от менеджеров, как его читать если у тебя вперемежку и доллары и гривны
#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 Ёпрст
еще бы.. В селекте нужно брать Номенклатуру с останков, а не с ВТ и.. выкинуть вообще это нелепое условие.
#73
by ktvladimir
грубо навскидку.. ВЫБРАТЬ ВЫБОР КОГДА ЦеныНоменклатуры.Валюта = &НужнаяВалюта ТОГДА ЦеныНоменклатуры.Цена КОГДА ЦеныНоменклатуры.Валюта IS NULL ТОГДА 0 ИНАЧЕ ВЫБОР КОГДА ЦеныНоменклатуры.Валюта = &НужнаяВалюта ТОГДА ЦеныНоменклатуры.Цена КОГДА ЦеныНоменклатуры.Валюта IS NULL ТОГДА 0 ИНАЧЕ
#75
by ktvladimir
ну и ограничение на типы цен добавить конечно же, если вам нужно только по розничной или закопочной
#77
by myr4ik07
я тут не могу понять ПО ТоварыНаСкладахОстатки.Номенклатура = ВТ.Номенклатура если уже нет Временной таблицы до зачем это условие?
#78
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
те все соединения выглядят так РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение В ИЕРАРХИИ (&Подразделение)) КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатуры
#92
by myr4ik07
о, вот тут бомба розжовано, но ПО ИСТИНА почему? Типа если в РН.ТоварыНаСкладах.Остатки есть значение взято с КурсыВалют то Истина, правильно?
#93
by ktvladimir
По истина служит просто чтоб соединение было без условий. ВСЕГДА для ВСЕХ записей из ТоварыНаСкладах без каких либо условий прицепить информацию о курсе нужной нам валюты
#96
by ktvladimir
грубо Соединение это оператор ПО это завершение этого оператора да мы можем использовать и РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Подразделение В ИЕРАРХИИ (&Подразделение)) КАК ТоварыНаСкладахОстатки ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних(, Валюта = &НужнаяВалюта) КАК КурсВалютыНужнойВалюты ПО ИСТИНА но это излишне так как это будет лишнее соединение с тем же результатом В любом случае нам нужно указать по каким полям происходит соединение в РС КурсВалюты нет номенклатуры с чем ты будешь соединять?
#97
by ktvladimir
конечно можно написать ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.КурсВалюты.СрезПоследних(, Валюта = &НужнаяВалюта) КАК КурсВалютыНужнойВалюты ПО ТоварыНаСкладахОстатки.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура, но какой в этом смысл?
#98
by ktvladimir
убрать внутреннее условие и добавить его в описание соединения, НО это плохо тем, что виртуальные таблицы это по сути подзапросы. Те сперва будет получена выборка последних данных по ВСЕМ валютам, и только потом при соединении мы отсекаем лишнее.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Параметр Запроса типа "Список значений"-Консользапросов
- как в таблицу значений передать список значений
- Консоль отчетов и расшифровка
- 7.7 список значений из значений перечисления, сортировка
- консоль запросов
- Консоль запросов
- НАЧАЛОПЕРИОДА , консоль запросов, консоль отчетов
- Консоль SQL-запросов
- 8.2 Динамический список на управляемой форме. Как перебрать полученный список?
- Консоль запросов
- Консоль и СКД
- Как передать несколько значений в параметр запроса?
В этой группе 1С
- Как очистить таблицу файловой БД 8.1
- Списание материалов из эксплуатации
- КД Обмен УТ- БП, настройка ПКО
- Неточные измерения остатков.
- Как рассчитать среднюю цену для совпадающей номенклатуры?
- СКД Вычисляемые поля
- Нумерация документов в БП 3.0 Корп
- Настройки групп пользователей в 1с бухгалтерия КОРП 3.0
- Не получается удалить неиспользуемое поле в настройке СКД...
- Ошибка БД
- УФ: как программно завершить ввод новой строки?
- ут 11.1 настройки страницы обработки печать ценников
- Выборка из периодического регистра сведений.
- УТ 10.3 В каком отчёте посмотреть остатки по себестоимости?
- Как полю табличной части присвоить значение константы?
- ЗУП 3.0. Отчётность, справки - где включить?
- Реорганизация в форме преобразования ЗУП
- Динамический список.
- Выбрать Различные поля по условию в Запросе
- Формы выбора, управляемое приложение.