Срез последних на каждую дату для ВСЕЙ номенклатуры, УТ11 #744042


#0 by breezee
Может у меня проблема в понимании? Скажите, пожалуйста, я правильно понимаю? Для того чтобы выбрать все номенклатуру и по всем документам в периоде нужно 1)Выбрать все номенклатуру в этом периоде - волженный запрос в котором просто выбирается вся номенклатура за период 2)Взять из Среза Последних - текущую цену на эту номенклатуру(будет текущей) 3)Взять максимальное значение из вложенного запроса, но меньшее чем в срезе последних для каждой номенклатуры - для этого используется функция МАКСИМУМ(период волженного запроса) - это и будет прдыдущим периодом на который надо получать цены. Все это помещается во временную таблицу 4)Получение цен на предыдущей период - путем добавления таблицы регистра, и связь по периоду и номенклатуре между временной таблицей и таблицей регистра, выбираются все данные из таблицы регистра - если нет записи выбирается 0(проверка на ЕСТЬNULL для цены) Так почему у меня выбираются ВСЕ старые цены, а не максимальные? Где я мог накосяить?     ЦеныНоменклатурыСрезПоследних.Характеристика,
#1 by breezee
АП
#2 by breezee
Да что за фигня то? Почему у меня выбираются ВСЕ старые цены, я же поставил максимм, даже во волженном запросе сразу выбрал сатрые цены
#3 by hhhh
а вот это фантастическое выражение что означает?
#4 by breezee
Пользователь задает период с и по это ораничение на с
#5 by hhhh
тогда >=
#6 by sapphire
даже теоретически непраивльно в ИМХО. Грубо, выбираем все уникальные пары Дата-Номенклатура и для них определяем срез последних запросом, а не виртуальной таблицей.
#7 by breezee
Сейчас првоерил во там везде >= &ДатаНач Я бы так и сделал но мне нужно посторение номенклатуры для каждого регистратор - по -этому выбираю все во волженном запросе(каждую номенклатуру для каждого регистратора за период), а потом уже срезом последних для них получаю предпослежнее значение(связь по номенклатурере, дата мкасимально приближена к дате вложенного запроса но меньше неё)
#8 by breezee
Извиняюсь, не туда смотрел, исправил, не помогло
#9 by manfeese
Поставь задачу правильно! Что ты хочешь получить в итоге? всю номенклатуру и по всем документам в периоде или последние цены по номенклатуре. Полностью опиши свою проблему от начала и до конца!
#10 by hhhh
вот это еще обязательно ИЗ
#11 by breezee
Хочу получить все номенклатуру во всех документах в периоде, назначенном пользователем. Если есть 2 номенклатуры одинкаовые в периоде выводить для эти 2 номенклатуры. Для каждой хочу получать последние цены(не важно в периоде ли последняя цена или нет)
#12 by manfeese
Приведи пример текста запроса, которым ты получаешь всю номенклатуру во всех документах в периоде, назначенном пользователем
#13 by breezee
РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры Работает - я проверял, после этого не раобтает. Пытался еще с получившейся таблицей установить соотвествие по регистратору(не с этой, а с той где получаются уже предыдущие цены) - не помогло, выбирается много раз документ, хотя везде условия по датам проставил и связи по номенклатуре и характеристике
#14 by breezee
>Работает - я проверял, после этого не раобтает. Имел в виду что конктретно этот запрос отрабатывает нормально, дальше выбирается уже не то что надо
#15 by hhhh
вид цены подправил? А то полнейший бред получается. ЦеныНоменклатуры один вид цен, а ЦеныНоменклатурыСрезПоследних совсем другой.
#16 by manfeese
Попробуй так: ВЫБРАТЬ ИЗ
#17 by breezee
Угу Выбралась почему-то одна номенклатура, запрос вот такой Спасибо за помощь! но выбрались только посление номенклатуры, сейчас попробую к этому запросу по регистратору условие прикрутить - может поможет
#18 by breezee
Запрос забыл вставить ВЫБРАТЬ     ЦеныНоменклатурыСрезПоследних.Номенклатура,     ЦеныНоменклатурыСрезПоследних.Характеристика,     ВТВыборкиПредпоследнихЦен.Характеристика,
#19 by breezee
ГИГАААААААААНТСКОЕ СПАСИБО! ВСЕ РАБОТАЕТ. Расскажие секрет пожалуйста, где я накосячил?
#20 by manfeese
Исправляюсь, так попробуй: ВЫБРАТЬ
#21 by manfeese
Попробуй самостоятельно разобраться. Иногда полезно! :)
#22 by breezee
Ок! СПАСИБИЩЕ ЕЩЕ РАЗ!
#23 by manfeese
Зачем тебе в СрезПоследних? Я в привел целый кусок кода, который удовлетворит все твои пожелания!
#24 by breezee
Прости, а можно как то получить еще и текущую цену? Нужно этот запрос поместить во временну таблицу и с ним свзь сделать по таблице регистра? Если просто изменяю дату на менбшую в теущей связи идет задвоение - опять все старые цены подтягиваются ВЫБРАТЬ
#25 by manfeese
Что понимается под текущей ценой?
#26 by breezee
Последняя установленная документом установка цен номенклатуры
#27 by manfeese
ИЗ
#28 by breezee
ТЫ ВОЛШЕБНИК! БРО, ТЫ ЛУЧШИЙ!!! СПАСИБО!!!!!!!!!!!!!!
#29 by manfeese
еще раз пересмотрел свой запрос . Первое ЛЕВОЕ СОЕДИНЕНИЕ походу не нужно! ИЗ
#30 by breezee
Еще раз СПАСИБО!!!
#31 by breezee
Простите что снова поднимаю тему, стал проверять - новая цена подтягивается номально, старая цена подтягивается какая-то левая, может потому что во вложенном запросе не выбирается 1 дата( скрин ) Я окончательно запутался. Может вы скажите что делать? Описание задачи: Пользователь выбирают вид цены и дату начала и конца на которую выводятся все документы "Установка цен номенклатуры" со всей номенклатурой внутри - если для неё было изменение по заданному типу цен - если номенклатура присутствует за период в двух документах - надо вывести её 2 раза для каждого документа(если больше двух - тоже самое), для каждой номенклатуры нужно вывести цену на дату документа и предыдущую цену, установленную на эту номенклатуру. Мои идеи: Воспользоваться "Получением среза последних на каждую дату", только за место физической таблицы использовать вложенный запрос, который выбирает все номенклатуру и все документы, которые её устанавливали
#32 by breezee
АП
#33 by breezee
ААП
#34 by breezee
ап
#35 by Gangar
не пробовал делать по аналогии с остатками на каждую дату из периода? сперва получать таблицу дат и потом от неё танцевать.
#36 by breezee
Сейчас попробую. Получается я должен получить последнии и предпсоеднии даты во вложенном или как лучше - если я хочу получить цены на даты из таблицы дат. Я опять запутался, что с ними дальше делать? У меня получились 2 предпоследнии даты - 27.05 и 26.05 и одна последняя - 27.05 Вот запрос на получение всех дат ВЫБРАТЬ
#37 by breezee
Подумал что если я получу все последнии и предпследниии даты и для каждой вытащю номенклатуру и цену и потом все это свяжу по номенлатуре - получится нормально. Выбрались все даты. Наверное я идиот. Вот запрос, подскажите что делать ВЫБРАТЬ ИЗ ИЗ
#38 by breezee
АП!
#39 by France
что нужно то, старче?
#40 by breezee
За период получить все номенклатуру во всех документах "Установка цен номенклатуры" полуить цену для неё на период текущего документа и цену предыдущуюю(установелнную предыдущим документом)
#41 by France
в ут 11 обработка "Цены (прайс-лист)" показывает цену текущую, и цены старую *предыдущую) - может, это то, что нужно? и не нужно ничего писать?. А если все нужно писать - и ответ проще там поискать..
#42 by France
да, забыл - нужно в обработке "Параметры - Показывать старые цены" установить.
#43 by breezee
Нашел, правда это отчет и там только "Отображать только цены используемы в НДС" в настройках, галочку снял, вывелась только последняя цена
#44 by breezee
up
#45 by France
релиз какой конфы? у мну 11.1.10.131 вид по ссылке
#46 by France
что то не то нашел. Все функции - Обработки - Цены (прайс-лист)
#47 by Chieftain
Из не до конца понял что в итоге нужно получить. Однако цена на каждый день по всей номенклатуре примерно таким запросом получал:     ///////////////////// Формируем ПЕРИОДЫ     ВЫБРАТЬ 0 КАК Цифра ПОМЕСТИТЬ ТабЦифр ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9;     ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&НачПериода, ДЕНЬ, ТабЦифр1.Цифра + 10 * ТабЦифр2.Цифра + 100 * ТабЦифр3.Цифра + 1000 * ТабЦифр4.Цифра) КАК День ПОМЕСТИТЬ ТабДней ИЗ ТабЦифр КАК ТабЦифр1, ТабЦифр КАК ТабЦифр2,ТабЦифр КАК ТабЦифр3,ТабЦифр КАК ТабЦифр4         ГДЕ ДОБАВИТЬКДАТЕ(&НачПериода, ДЕНЬ, ТабЦифр1.Цифра + 10 * ТабЦифр2.Цифра + 100 * ТабЦифр3.Цифра + 1000 * ТабЦифр4.Цифра) <= &КонПериода         ИНДЕКСИРОВАТЬ ПО День;         ПО МаксДаты.ДатаЦены=Цены.Период и МаксДаты.Номенклатура=Цены.Номенклатура и МаксДаты.ТипЦен=Цены.ТипЦен
#48 by breezee
Что-то не то выбирает - условия на дату не сработало. Может, мне сотит лучше описвть задачу. Есть Период и Вид Цены. за весь период надо выбрать всю номенклатру из докумнтов "Установка цен номенклатуры" с ценой на момент документа и предыдущей ценой. Пердыдущая цена цена - предпоследнее значения из регистра "Цены номенклатуры" для этой номенклатуры.
#49 by Chieftain
Параметры НачПериода,КонПериода,ТипЦен. Но оно тебе отдаст актуальные цены на каждую дату.
#50 by breezee
В промежутке между НачПриода и Конпериода? Все равно не точ то надо, может я плохо объяснил. У меня есть запрос который получает последнюю цену и предпослежнюю цену по номенклатуре - т.е. выводится только последнии изменение цен номенклатуры, мне надо чтобы он выводил всю номенклатуру за период и для каждой получал последнюю цену и предпослднюю, т.е. проеследить все изменение цен. Вот зпрос ВЫБРАТЬ
#51 by breezee
Т.е. вот у меня выбирается во второй части запрос то для чего нужно получить еще и старую цену, в пером у меня выбирается только для последней строчки второго
#52 by Chieftain
как-то так:
#53 by breezee
ААААА! ОГРОМНОЕ СПАСИБИЩЕ! В чем был мой косяк? что я делал не так? Т.е. ты получаешь историю цен и делашь свзяку по старой и новой цене? Я же вроде тоже самое делал и ни черта не работало? Все дело в том что ты получаешь их для отдельных таблиц, а не для одной и по этому для каждой таблицы свои значения? ЕЩЕ РАЗ ГИАНТСКОЕ СПАСИБО!!!
#54 by Chieftain
не нужен тут срез последних, а тем более слева к нему движения регистра
#55 by breezee
Блин не туда отписался в 1 раз, от как я думал. ЕЩЕ РАЗ ГИГАНТСКОЕ СПАСБО!!!! Я вроде понял - так получим все изменения на каждый преиод в указанном отрзке времени и потом просто добавм туда цены. Но для того чтобы получить цены нужно так же получить все прериоды из физической таблицы(просто запрос к физ. таблицы за период), потом найти максимально приближенное не последние значение - выбираю по финкции МАКСИМУМ(период таблицы физической) - полусются даты таким образом предпоследняя, последняя; предпоследняя, последняя; ... Потом для каждой даты я выбираю цену - просто свзяь с физической таблицей и таблицей дат и из полученной таблицы я выбираю(вот тут финя полчается)предпоследний период, послдний период и только одно значение из цены, потому что нельзя же установить свзяь таблиц сразу по двум периодам чтобы мне выдавались цены на оба период
#56 by breezee
Так дело было в срезе последних? В том что я получал только последнее значение за период, а не все, которые мне нужны были?
#57 by Chieftain
Во вложенной получаем историю цен, к нему слева цепляем движения по дате меньше исторической, выбираем максимальную. Потом к датам слева по обеим датам берем цены
#58 by Chieftain
Срезом ты сразу выбираешь только актуальные на конкретную дату, динамически дату в срез не подставишь, поэтому значения только на указанную дату. А оттуда историю не вытянешь.
#59 by breezee
ЕЩЕ РАЗ ГИАНТСКОЕ СПАСБО!!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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