"Последний" регистратор в срезе последних #348070


#0 by Собеседник
Недавно была тема о срезе последних по 2-измерениям для регистра где есть 3-измерения. Необходимо было получить последний регистратор и значения ресурсов. Максимум(Регистратор) - понятно, не совсем подходит. Вернее совсем не подходит Сделал вот так.( правда только по одному измерению, но это не суть) Мож кому пригодится. А может я чего-то перемудрил? :) ВЫБРАТЬ    ТаблицаСрезПоследних.Номенклатура КАК Номенклатура, ИЗ    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(                РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
#1 by Собеседник
сорри за настойчивость, хотелось бы услышать можеть хоть какую ругань в свой адрес :) так как в - правильно или нет
#2 by Garkin
перемудрил однозначно 3 вложенных запроса - это на 2 замного.
#3 by Собеседник
несогласен ;) обосновать?
#4 by Долорес И
тему не видела, но разве срез последних не показывает регистратора?
#5 by Собеседник
есть три измерения - надо только по двум
#6 by Долорес И
а, то есть, фиксируешь два, а из оставшихся значений берёшь с наиболее поздним регистратором. например, так можно: в подзапросе получаем таблицу с датой, соответствующей максимальному регистратору, которую во внешнем запросе соединяем внутренним соединением по дате и совпадающим измерениям и берем максимум уже по регистратору. получим то, что нужно.
#7 by Собеседник
- это не моя задача, просто было интересно. Максимум(регистратор) <> "последний" регистратор, поэтому вложенных запроса 3. 1 - максимальный период 2 - источник для максимального регистратора 3 - максимальный регистратор а потом уже итог
#8 by Долорес И
что такое источник для максимального регистратора?
#9 by Собеседник
3 вложенных для нагядности, но как сказано в - не согласен
#10 by Долорес И
не поняла, зачем п.2 если тебе известна дата последнего регистратора, то максимум по всем документам с такой датой и даст необходимый регистратор. поскольку позиция документа - это дата + ид, а максимум по документу вычисляется как раз по ид(то есть, максимальный в пределах нужной даты документ и будет последним).
#11 by Собеседник
не вопрос - для краткости можно и так но как по мне - это менее читаемо ?) ВЫБРАТЬ    ТаблицаСрезПоследних.Номенклатура КАК Номенклатура, ИЗ    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
#12 by Собеседник
- ВОТ. вот тут то вы и не правы.
#13 by Garkin
Если интерестно то посмотри "Проф. разработка в системе 1С:Предприятие 8" А.П. Гарбец и компания стр 126. Там есть пример получения среза последних запросом.
#14 by Собеседник
- спасибо за участие. Но вы, господа, не поняли.  (на стр 126 - не в тему, все равно, если нужен будет регистратор - необходм будет еще одн вложеный запрос) В качестве примера мной был приведен рс ЦеныНоменклатуры, не совсем корректно. Не имеет смысла получение цены без учета характеристики... Я не помню как конкретно назывался РС в задаче - пусть это будет "ХарактеристикиПродукции" Исходные данные: РС: "ХарактеристикиПродукции", периодичность - В пределах дня, подчинен регистратору Измерения: "Продукция", "Характеристика1", "Характеристика2" Ресурсы:   "Ресурс" Необходимо получить последнее значение "Ресурс" и "Регистратор" для Продукция=ПродА и Характеристика1 = Х11 (т.е. без учета значения измерения "Характеристика2") Имеем данные в РС по ПродА и Х11: Регистратор         Период    Продукция   Х-ка1   Х-ка2 Ресурс   01.01.08 00:00:00   01.01.08  ПродА       Х11      <>     Зн1 01.01.08 00:00:20   10.01.08  ПродА       Х11      Х21    Зн2 01.01.08 00:00:10   10.01.08  ПродА       Х11      Х22    Зн3 Все три строки являются срезом последних для ПродА и Х11. Время регистратора во второй строке не является ошибкой - именно так будет представлен список РС(или результат запроса с автоупорядочиванием), при периодичности "День". Причем Регистратор в строке 1 внесен в БД позже "всех". Согласны, что Максимум(Регистратор) - понятие далекое от "последний" на временной оси документ? Т.е. необходимо определить сначала максимальный период, потом макс регистратор в этом периоде и уж потом одну из строк (2 или 3) в зависимости от того, что будем считать макс периодом(и как вополняется регистрация в РС). Можно в первом запросе получать или МАКСИМУМ(Период) и соединять со вторым по Период или МАКСИМУМ(Регистратор.Дата) и соединять со вторым Регистратор.Дата Уф. НапЫсав :)
#15 by Immortal
это всё равно что остатки получать из Остатки с необходимостью получить документ поступления.недавно делал. то что в нормально соединений могло быть меньше, но при этом вложенных запросов было бы больше. так что один фиг.
#16 by Собеседник
- вот это в тему т.е. я хотел сказать, что по методике можно и "последний" приход получать просто в более нагладно в компактней. вобЧим весь этот мой треп к тому что 1) МАКСИМУМ(Регистратор) - фонарь т.е. необходимо как минимум 2 вложенных запроса. Всем спасибо
#17 by Garkin
ВЫБРАТЬ ИЗ не подойдет?
#18 by Собеседник
- не подойдет. во первых: если в периоде два регистратора с одной датой(дата время) Регистратор         Период    Продукция   Х-ка1   Х-ка2 Ресурс   01.01.08 00:00:00   01.01.08  ПродА       Х11      <>     Зн1 01.01.08 00:00:10   10.01.08  ПродА       Х11      Х21    Зн2 01.01.08 00:00:10   10.01.08  ПродА       Х11      Х22    Зн3 то в результате получим две строки- 2 и 3 а не одну 2) во вторых есть мнение, что если дата регистратора <> период (такое ведь может быть) можем получить интересные набор данных  а после соединени с РегистрСведений.ХарактеристикиПродукции(а не с СрезПоследних) получим у точно не срез последних :) ИМХО.
#19 by sapphire
Задолбали. Учите сикель/ЫЙД (SQL)
#20 by Immortal
давай свой вариант, нечего орать=)
#21 by sapphire
Идите нафиг. Сколько можно. Гуглите в конце концов.
#22 by Immortal
в общем нету вариантов=)
#23 by H A D G E H O G s
Спокойно, чего разволновались то? Счаст разберемся.. Так-ссс...
#24 by sapphire
Варианты есть всегда, если есть мозги и желание разобраться. Заниматься генной инженерией последний год мне по-просту влом.
#25 by H A D G E H O G s
А, ну нафих, лом разбираться, я не в теме был..
#26 by sapphire
Нормальному с моей точки зрения программисту понадобиться максимум 2 минуты на решение - иначе мне такой коллега нафиг не нужен.
#27 by Garkin
Согласен, неправ.
#28 by Собеседник
да я без претензий :). самому интересно вот - грит: "все бобаны, один я - крут. но как я крут не скажу!" :)
#29 by Шурик71
Или я чтего-то не понимаю, или ВЫБРАТЬ ПЕРВЫЕ 1 р1.регистратор ,р1.период ,р2.ресурс1 ,р2.ресурс2 ИЗ  регистрсведений.МойРегистр как р1 Левое соединение регистрсведений.МойРегистр как р2  И р1.измерение2 = &ФильтрИзмерения2 Упорядочить по Период Убыв это то, что просили?
#30 by PowerBoy
А нафига их связывать - нельзя просто сделать: ВЫБРАТЬ ПЕРВЫЕ 1 р1.регистратор ,р1.период ,р1.ресурс1  И р1.измерение2 = &ФильтрИзмерения2 Упорядочить по Период Убыв
#31 by Шурик71
#32 by Собеседник
- это не выполняет условия задачи :)
#33 by Шурик71
почему не выполняет? Или это типа шутка (смайлик в обращен к самому себе как к автору темы)?
#34 by Шурик71
Если имеется в виду, что периодичность регистра низкая, то в запросе примерно Упорядочить по Период Убыв, Регистратор Убыв - смысл все равно не меняется
#35 by Immortal
ну ну-) откуда данные фильтров?=) + про период выше уже озвучили неоднозначность.
#36 by Immortal
нельзя. или ртфм учи
#37 by Immortal
потом сравним с моим рабочим вариантом-)
#38 by Шурик71
Ну-ну... ВЫБРАТЬ ПЕРВЫЕ 1    ЦеныНоменклатуры.Период КАК Период,    ЦеныНоменклатуры.Регистратор, ИЗ    РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры Как ни странно, работает и выводит на цены, записанные _последним_ регистратором по номенклатуре (1 изм) и типу цен (2 изм), несмотря на то, что в одну дату по этой номенклатуре есть цены по нескольким характеристикам номенклатуры (3 изм), и то, что периодичность регистра = дата (без времени) :) > Недавно была тема о срезе последних по 2-измерениям для регистра > где есть 3-измерения. > Необходимо было получить последний регистратор и значения ресурсов. Разве я отклонился от задачи?
#39 by Garkin
Задача не в том чтобы найти последний регистратор для заданных значений измерения, а в том чтобы найти последние регистраторы для всех значений измерений
#40 by Шурик71
Согласись, от постановки это несколько отличается :) Тогда вот так:                И ЦеныНоменклатуры1.Номенклатура В ИЕРАРХИИ(&Номенклатура) ==== В юзается вирт. таблица СрезПоследних. А вот для данной задачи она никак не катит... В неверно одновременное определение максимума периода и регистратора. P.S. В задаче еще как минимум одна дырка: если в последнем документе устанавливаются значения для нескольких 3-х измерений, то тогда какое брать - неясно.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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