Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Параметр влияет на порядок в запросе

Параметр влияет на порядок в запросе
Я
   LittlePumpkin
 
23.08.20 - 12:26
Есть регистр, в котором реквизит Партия - ссылка на документ приходная накладная. Делаю запрос к этому регистру, чтобы получить приходные накладные в порядке убывания:
|УПОРЯДОЧИТЬ ПО
|СебестоимостьПродажОстатки.Партия.МоментВремени УБЫВ";

Указываю в виртуальной таблице реквизита параметр &МоментВремени. И указание этого параметра сносит порядок в запросе: вместо того, чтобы вернуть самую последнюю накладную - возвращает самую первую. Как это работает и в чем моя ошибка, подскажите пожалуйста.
   Ненавижу 1С
 
1 - 23.08.20 - 12:58
МоментВремени документа может не совпадать с моментом времени в регистре по этому регистратору.
Грубо говоря, я могу в регистр записывать данные датой и временем не совпадающие с документом.
Посмотрите время и дату записей регистра и сравните с регистратором.
   LittlePumpkin
 
2 - 23.08.20 - 13:02
Посмотрел - они совпадают. Почему МоментВремени отсекает все приходные накладные, кроме последней - непонятно(
   Ненавижу 1С
 
3 - 23.08.20 - 13:03
ты уж определись, кроме последней или кроме первой?
   LittlePumpkin
 
4 - 23.08.20 - 13:05
Оу, кроме первой. Прошу прощения, опечатался.
   Ненавижу 1С
 
5 - 23.08.20 - 13:21
наверное дело в запросе
   RomanYS
 
6 - 23.08.20 - 13:26
В прошлый раз не разобрались почему МВ в запросе даёт сюрпризы

МоментВремени в условии ГДЕ в Запросе.
   LittlePumpkin
 
7 - 23.08.20 - 13:57
Смотрю через консоль в регистр:
Приходная накладная 000000003 от 23.08.2020 15:52:42
Приходная накладная 000000002 от 23.08.2020 15:52:37
Приходная накладная 000000001 от 23.08.2020 15:52:29

Делаю простейший запрос:
ВЫБРАТЬ
        |    СебестоимостьПродажОстатки.Номенклатура,
        |    СебестоимостьПродажОстатки.Партия,
        |    СебестоимостьПродажОстатки.КоличествоОстаток,
        |    СебестоимостьПродажОстатки.СуммаОстаток
        |ИЗ
        |    РегистрНакопления.СебестоимостьПродаж.Остатки(&МоментВремени, ) КАК СебестоимостьПродажОстатки;

И получаю.. ничего. Втф?
   LittlePumpkin
 
8 - 23.08.20 - 14:02
Убираем МоментВремени и получаю данные. Спрашивается какого черта
   Вафель
 
9 - 23.08.20 - 14:02
значит на выбранный момент данных нет.
порядок тут вообще не причем
   LittlePumpkin
 
10 - 23.08.20 - 14:07
Если приход был в 15:52, а я срезаю данные в 16:00 то как их может не быть?)
   Вафель
 
11 - 23.08.20 - 14:08
(10) ты уверен что срезаешь именно во столько?
   acht
 
12 - 23.08.20 - 14:09
(10) Что именно ты передаешь параметром в запрос?
   LittlePumpkin
 
13 - 23.08.20 - 14:10
(12) МоментВремени()
   RomanYS
 
14 - 23.08.20 - 14:20
(13) после этого вопрос в (11) стал ещё более актуальным.
Просто скопируй пару строк кода с УстановитьПараметр и укажи в каком контексте этот код выполняется(модуль документа?).
   youalex
 
15 - 23.08.20 - 14:20
(13) покажи, откуда ты этот момент() берешь
   Ненавижу 1С
 
16 - 23.08.20 - 14:22
(7) ты сейчас показываешь регистраторы с их моментами времени, а не моменты времени записей регистра
   LittlePumpkin
 
17 - 23.08.20 - 14:24
Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура,
        |    СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество
        |ПОМЕСТИТЬ ТДок
        |ИЗ
        |    Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
        |ГДЕ
        |    РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////

        |ВЫБРАТЬ
        |    ТДок.Номенклатура,
        |    ТДок.Количество,
        |    СебестоимостьПродажОстатки.Партия,
        |    СебестоимостьПродажОстатки.КоличествоОстаток,
        |    СебестоимостьПродажОстатки.СуммаОстаток
        |ИЗ
        |    ТДок КАК ТДок
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СебестоимостьПродаж.Остатки(&МоментВремени, ) КАК СебестоимостьПродажОстатки
        |        ПО ТДок.Номенклатура = СебестоимостьПродажОстатки.Номенклатура
        |
        |УПОРЯДОЧИТЬ ПО
        |    СебестоимостьПродажОстатки.Партия.МоментВремени УБЫВ";
    
    Запрос.УстановитьПараметр("МоментВремени", Новый Граница (МоментВремени(), ВидГраницы.Включая));
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    

Вот полный текст запроса, мне кажется так понятнее будет
   LittlePumpkin
 
18 - 23.08.20 - 14:25
МоментВремени() равен текущему времени, это я проверил уже кучу раз. Но в итоге получаю пустые данные из регистра.
   LittlePumpkin
 
19 - 23.08.20 - 14:27
Вот значение МоментаВремени(): 23.08.2020 16:26:35; Расходная накладная 000000002 от 23.08.2020 16:26:35
   RomanYS
 
20 - 23.08.20 - 14:31
(19) В регистре СебестоимостьПродаж считаешь складскую себестоимость? Оригинально.
Показывай записи РН, может ты их просто сделать забыл
   youalex
 
21 - 23.08.20 - 14:33
(18) данные получаешь в момент проведения РН? А если сначала РН распровести?
   LittlePumpkin
 
22 - 23.08.20 - 14:36
Кажется нашел в чем проблема, но не понимаю в чем моя ошибка. Дело вот в чем:
Если изменять время у уже созданного сегодняшнего (но не проведенного) документа, то получаю пустые записи из регистра.
Если создать новый документ, то все записи получаются нормально.
Не понимаю как это работает(
   LittlePumpkin
 
23 - 23.08.20 - 14:37
(21) И так распровел, меняю время и провожу заново и не получаю ничего( Если создавать новый документ, то все ок.
   Ненавижу 1С
 
24 - 23.08.20 - 15:16
Какая хоть конфигурация?
   LittlePumpkin
 
25 - 23.08.20 - 15:21
(24) Бесплатная учебная версия:) Скачал, чтобы готовиться к экзамену
   Ненавижу 1С
 
26 - 23.08.20 - 15:56
Может оно регламентно заполняется. Отсюда трудно сказать
   Вафель
 
27 - 23.08.20 - 16:02
попробуй дату а не момент времени
   hhhh
 
28 - 23.08.20 - 22:08
(22)  Запрос.УстановитьПараметр("МоментВремени", МоментВремени());

так сделай. не надо никакой границы
   H A D G E H O G s
 
29 - 24.08.20 - 03:23
(0) Скинь dt шник куда нибудь


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.