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

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

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

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

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

так сделай. не надо никакой границы
29 H A D G E H O G s
 
24.08.20
03:23
(0) Скинь dt шник куда нибудь
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс