Имя: Пароль:
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 шник куда нибудь
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.