СрезПоследних в регистре сведений #808443


#0 by grandmaster
Подскажите, как работает срезпоследних. Что я делаю не так? Возвращает целый список из регистра (ДокументыЭД). Нужно получать последнее значение по текущей дате                        ДокументыЭДСрезПоследних.ИдентификаторЗапроса КАК ИдентификаторЗапроса,                        ДокументыЭДСрезПоследних.Период Как Период,                        РеализацияТоваровУслуг.Ссылка КАК Ссылка
#1 by Cyberhawk
Чтобы получать "получать последнее значение по текущей дате", срез не подходит, т.к. ты не знаешь, с какими значениями измерений эта запись
#2 by grandmaster
разве нет такой функции, чтоб получать последнее значение из регистра? я думал как раз срезпоследних это оно, разве не так?
#3 by grandmaster
и что значит ваше "ты не знаешь, с какими значениями измерений эта запись"
#4 by FIXXXL
срез последних - он по СОЧЕТАНИЯМ измерений у тебя там сколько измерений?
#5 by grandmaster
что значит измерений? количество строк? полей? я не понимаю строк очень много надо получать последнее по текущей дате
#6 by lodger
начни с того, что написать структуру регистра. Измерения: ... ... ресурсы: ... ...
#7 by grandmaster
Измерения: Документ ВариантОбмена Ресурсы: Файл Статус ИдентификаторЗапроса
#8 by h-sp
ну значит по каждому документу реализация и по каждому варианту обмена будет отдельная строчка в срезе. Ну то есть в ваш срез должны по-любому попасть все документы реализации, который есть в регистре.
#9 by Cyberhawk
Функция как раз есть: ПолучитьПоследнее
#10 by Cyberhawk
То и значит
#11 by grandmaster
так а я что делаю?                     РеализацияТоваровУслуг.Ссылка = ДокументыЭДСрезПоследних.Документ
#12 by grandmaster
так и как быть то?
#13 by h-sp
что означает эта магическая формула? И какое отношение она имеет к теме разговора?
#14 by azernot
Подумать, что ты хочешь получить, посмотреть что ты по факту получаешь, и понять, как добиться того, чтобы эти две сущности совпали.
#15 by h-sp
не использовать срез последних.
#16 by HEKPOH
в инете много статей, объясняющих что такое "срез последних". Изучай
#17 by Cyberhawk
Отдай на аутсорс
#18 by azernot
Срез последних лучше всего понимается через пример  "КурсыВалют". Есть измерение - Валюта, есть ресурс - Курс. Срез на дату - даст последние (на эту дату) курсы каждой валюты. Было бы странно, если бы срез выдавал самый последний введённый курс по какой-то непонятной валюте.
#19 by grandmaster
ахаха у меня такое чувство, что я попал на ответы мэила. - что это значит? Cyberhawk То и значит - что тогда делать? h-sp не использовать срез последних. не все же такие умные господа, как вы могли бы и помочь человеку.
#20 by grandmaster
спасибо, более-менее уже прояснилось
#21 by azernot
Это всего лишь означает, что тебе надо переформулировать вопрос. Если ты не получаешь ответ, значит твой вопрос непонятен.
#22 by grandmaster
что может быть не понятного в том, что мне надо получить последнюю запись регистра сведений. что тут может быть не понятного то?
#23 by azernot
Если бы в не было текста запроса, ты бы уже получил ответ. Но текст запроса, говорит о том, что не всё так просто. Для чего тебе запись? Ты хочешь получить документ из неё?
#24 by grandmaster
последняя созданная строка в регистре сведений
#25 by grandmaster
идентификатор
#26 by lodger
вот здесь добавь &ВариантОбмена ИЗ в ГДЕ пиши ДокументыЭДСрезПоследних.Документ ССЫЛКА Документ.РеализацияТоваровУслуг соединение с таблицей "Документ.РеализацияТоваровУслуг" пока что убери. потом с ней разберешься.
#27 by azernot
ВЫБРАТЬ ПЕРВЫЕ 1     ДокументыЭД.Документ КАК Документ ,     ДокументыЭД.ВариантОбмена КАК ВариантОбмена ,
#28 by lodger
получишь один ближайший документ перед указанной датой. это то что ТопикСтартеру и надо было?
#29 by azernot
Исходя из - да. Если ТС получит не то, что ожидает, он переформулирует задачу.
#30 by Cyberhawk
Вроде тебе уже ответили в этой ветке, как это сделать
#31 by grandmaster
#32 by lodger
ну додумкал бы. ВариантОбмена = &ВариантОбмена
#33 by grandmaster
#34 by lodger
в этом случаем "ГДЕ ДокументыЭДСрезПоследних.ВариантОбмена = &ВариантОбмена" - избыточное условие. оно уже выполнено тут "ВариантОбмена=&ВариантОбмена". по итогу, вот это то что ты хотел?
#35 by h-sp
всё-таки он хотел. Наверное.
#36 by grandmaster
#37 by h-sp
ну наверно разные задаешь параметры &Документ и &РеализацияТоваровУслуг. Задай одинаково.
#38 by grandmaster
где я задаю? у меня &РеализацияТоваровУслуг это нужное значение поля ДокументыЭДСрезПоследних.Документ
#39 by МимохожийОднако
Возьми консоль запросов. На ней и тренируй свои запросы
#40 by lodger
пиши так: ВЫБРАТЬ     ДокументыЭДСрезПоследних.ИдентификаторЗапроса КАК ИдентификаторЗапроса, ИЗ
#41 by azernot
Мне просто интересно, как ТС понимает параметеры: &ВариантОбмена &Документ И почему заводит отдельные параметры &ВЕТИС &РеализацияТоваровУслуг
#42 by grandmaster
&ВЕТИС &РеализацияТоваровУслуг Это значения параметров по которым я делаю срез
#43 by grandmaster
так в ней и работаю
#44 by h-sp
ну и пиши как в это как раз срез. а то что ты пишешь ГДЕ     ДокументыЭДСрезПоследних.ВариантОбмена = &ВЕТИС         это уже не срез. Это бред какой-то. Выкинь это ГДЕ.
#45 by azernot
А что такое &ВариантОбмена &Документ ? И почему это не &ВЕТИС &РеализацияТоваровУслуг ? И таки не совсем последняя запись тебе нужна, а последняя по конкретному документу и варианту обмена? ;)
#46 by grandmaster
ну у меня и так и так вы водит строки
#47 by МимохожийОднако
Регистр подчинён регистратору?
#48 by grandmaster
&ВариантОбмена И &Документ - это параметры А ВЕТИС и РеализацияТоваровУслуг - это значения этих параметров по которым идёт отбор Почему же бред. Если я пишу условие параметров, по которым надо найти строку
#49 by МимохожийОднако
Сначала получи таблицу без отбора, потом добавляй, если не удаётся разобраться. Повторяю вопрос: Регистр подчинён регистратору?
#50 by h-sp
в этом ваша ошибка. Потому что &ВариантОбмена И &Документ тоже значения.
#51 by Сти
бред - потому что в условии самого среза (которое внутри скобок) оно уже отобрано по этим условиям
#52 by azernot
Вы попробовали запрос из ? Он выдал то, что вы хотели?
#53 by grandmaster
не подченён регистру нет не выдал, ничего не выдал ИЗ     РегистрСведений.ДокументыЭД.СрезПоследних( Тут значения параметров записаны в виде параметра т.к.  стоит амперсант. Вроде так нельзя писать
#54 by azernot
Давайте весь код, как вы инициируете запрос, какие параметры устанавливаете, как запрос выполняете. Похоже это единственный способ вам помочь Запрос в безупречен, он не может не сработать, если у вас есть в регистре записи по варианту обмена &ВЕТИС и по документу &РеализацияТоваровУслуг
#55 by h-sp
получается, что не получится. ему надо Документ ССЫЛКА РеализацияТоваровУслуг
#56 by grandmaster
#57 by azernot
Этот запрос не сработает точно. Возвращаемся к началу. Что вам нужно? Пробовали ли вы запрос из ? Чем он вас не устроил?
#58 by grandmaster
возвращать последнее значение с отбором "ВариантОбмена", "ВЕТИС"); "Документ",      "РеализацияТоваровУслуг");
#59 by azernot
Далее. Какой тип имеет измерение "ВариантОбмена" регистра "ДокументыЭД"? Что будет если вместо "И Документ = &Документ" написать "И Документ ССЫЛКА Документ.РеализацияТоваровУслуг"
#60 by azernot
Таких записей в регистре нет (если конечно, измерение "Документ" не имеет тип "Строка")
#61 by azernot
Давайте зайдём с другого конца. Какую задачу вы решаете? Для чего вам эти записи, что вы с ними будете делать? И вообще, это какая-то типовая конфигурация или полная самописка?
#62 by grandmaster
#63 by azernot
Так попробуйте
#64 by grandmaster
по последней данной записи мне нужно вытягивать из поля идентификатор - значение
#65 by azernot
Запрос.УстановитьПараметр("ВариантОбмена", Перечисление.ВариантыУниверсальногоОбмена.ВЕТИС);
#66 by azernot
Короче, вот так попробуйте, вообще без параметров, кроме даты ВЫБРАТЬ     ДокументыЭДСрезПоследних.ИдентификаторЗапроса КАК ИдентификаторЗапроса, ИЗ
#67 by grandmaster
слава яйцам прошу за грубость)) возвращает теперь все значения с ВЕТИС и Документом реализация товаров и услуг Осталось теперь получать только последнее по текущей дате
#68 by azernot
Пи...ц (прошу за грубость). Чем не устроил этот запрос? ВЫБРАТЬ ПЕРВЫЕ 1     ДокументыЭД.Документ КАК Документ ,     ДокументыЭД.ВариантОбмена КАК ВариантОбмена ,
#69 by azernot
Если проблема в том, что даёт не по ВЕТИС, и не по РеализацииТоваровУслуг, то надо просто дописать условия: ВЫБРАТЬ ПЕРВЫЕ 1     ДокументыЭД.Документ КАК Документ ,     ДокументыЭД.ВариантОбмена КАК ВариантОбмена ,        И ДокументыЭД.Документ ССЫЛКА Документ.РеализацияТоваровУслуг
#70 by grandmaster
Ну потому что здесь берёт последнюю запись из регистра. Без отбора. Тоесть последней может быть с другим документом и статусом и запрос её выберет
#71 by grandmaster
щас попробую
#72 by grandmaster
вместо &НужнаяДата я так понял писать ТекущаяДата?
#73 by azernot
Запрос.УстановитьПараметр("НужнаяДата",   ТекущаяДата);
#74 by grandmaster
ну да я это и имел ввиду
#75 by azernot
А вы можете предположить, почему я написал именно "НужнаяДата", а не "ТекущаяДата"?
#76 by grandmaster
а не подскажете как теперь вытянуть из запроса поле (идентификатор запроса). управляемая форма. не находит идентификаторзапроса
#77 by grandmaster
честно не знаю даже
#78 by h-sp
receiveRequestXDTO.applicationId    = Результат[0].ИдентификаторЗапроса;
#79 by grandmaster
azernot и  h-sp - огромное вам спасибо добрые люди! +1 вам к карме. Всё вышло что хотел. Впредь буду более аккуратен, в первую очередь в постановки вопрос
#80 by azernot
#81 by azernot
Т.е. так:
#82 by azernot
А-а, там Выгрузить уже есть.. тогда . ТОлько может быть там нет ни одной строки, и будет ошибка.
#83 by grandmaster
не будет, оно сначала выгружает ответ сервера в регистр, затем по идентификатору выполняется запрос на сервер. Вообще м ошибки в любом случае не будет! Ещё раз спасибо
#84 by azernot
А всё просто. Потому, что там не обязательно именно Текущая дата. Запрос сработает с любой датой. Захотите вы получить последнюю запись по Вентису, по реализации за прошлый год - просто передадите туда конец прошлого года.
#85 by lodger
почитал ветку с начала - слов нет. ыыы.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям