Имя: Пароль:
1C
1С v8
Движения по регистру накопления от текущего документа
0 АЛьФ
 
04.03.26
17:53
Как можно получить все документы, сделавшие движения по регистру после какого-то определенного документа?
Пытался как-то так сделать:

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

Ругается на несовместимость типов. Если в качестве границы расчета передать просто ссылку, не ругается, но и запрос пустой возвращает.
Поиском ничего дельного не нашел.
1 Garykom
 
гуру
04.03.26
17:59
(0) Не понял а чем Объект.Дата не устраивает?
2 Garykom
 
гуру
04.03.26
18:02
Кстати формулировка задачи/вопроса неточна

1. Простая
Выбрать все движения (и документы регистраторы) после определенной даты (документа)

2. Сложная - нереализуема без модификации конфы
Выбрать все движения (и документы регистраторы) совершенные после момента проведения некоего документа
Дата документа не важна, может быть проведение задним числом
3 АЛьФ
 
04.03.26
18:02
2(1) Может быть семерошное мышление, которое твердит, то выборка будет за дату, включая текущий документ и более ранние. Спасибо. Даже не вспомнил, что в восьмерке дата со временем.
4 АЛьФ
 
04.03.26
18:03
2(2) У меня задача простая - выбрать движения после документа, чтобы перепровести более поздние документы.
5 Garykom
 
гуру
04.03.26
18:04
(3) Обычно проще как параметр передать саму ссылку на документ
А уже в запросе из него нужное вытаскивать для условий
Меньше кода и модификаций для доработок
6 АЛьФ
 
04.03.26
18:05
+(3) Хм... а если будет несколько документов в одну секунду? Я же их не получу при условии по дате. Получается, что не получается.
7 АЛьФ
 
04.03.26
18:05
2(5) Вот сейчас совсем не понял.
8 Garykom
 
гуру
04.03.26
18:06
(6) Сделай >= и сразу в тексте запроса исключи сам исходный документ
9 Волшебник
 
04.03.26
18:08
Обороты, развернуть по регистратору, передать границу параметром ДатаНач
10 Chameleon1980
 
04.03.26
18:08
новый граница
11 Tarlich
 
04.03.26
18:14
Вот к примеру док Установка цен может делать движения на дату не равной дате документа.....
12 АЛьФ
 
04.03.26
18:14
Всем спасибо.
13 Garykom
 
гуру
04.03.26
18:26
(11) Эмм, это любой документ в платформе 1С может
А еще можно сделать движения у не проведенного или даже помеченного на удаление документа
14 Asmody
 
04.03.26
19:49
(13)+ более того, у каждой записи может быть разный Период
15 Волшебник
 
04.03.26
19:51
(14) и разный приход/расход по разным измерениям/ресурсам... ёклмн...
16 АЛьФ
 
05.03.26
10:21
2(9) Сделал так. Еще раз спасибо.

К вопросу о периоде в движении регистра. Когда период не совпадает с датой документа, граница у этого движения какая будет? Насколько я понимаю, граница - это дата+время+ссылка. Т.е. если несколько документов записывают движения на одну секунду, то внутри этой секунды движения располагаются в соответствии с порядком создания документов, даже если на временной оси эти документы лежат произвольно. Так?
17 Garykom
 
гуру
05.03.26
10:31
18 Garykom
 
гуру
05.03.26
10:32
(16) >в соответствии с порядком создания документов
Не совсем так, точнее в порядке "возрастания" УИД
А УИД теоретически может быть создан позже но "меньший"
19 Garykom
 
гуру
05.03.26
10:33
Поэтому лично я делаю (8)
И перепровожу все документы за секунду, включая исходный
20 АЛьФ
 
05.03.26
11:26
2(19) Не есть хорошо в нашем случае. Получается, что дергаются документы, которые явно не менялись. А они могут потянуть за собой отдельную цепочку документов. Лишняя нагрузка.

Фиговенько...
21 Garykom
 
гуру
05.03.26
12:29
(20) Прикол хочешь?
В современных конфах на основе ЕРП, нельзя (точнее можно но не всегда) перепроводить документы задним числом!
Потому что можно получить не тот результат что ожидался

Правильно сначала отменить проведение всех последующих проведенных документов, запомнить их
А уже после провести исправляемый документ и затем провести все запомненные документы (проведение которых отменили)

Вот такая загогулина получается
Там внутри под капотом код по разному работает и не всегда правильно
22 Garykom
 
гуру
05.03.26
12:32
(21)+ Для уменьшение кол-ва отменяемых доков можно использовать отборы
Например по номенклатуре или еще по чему, что затрагивает/пересекается в регистрах при расчете

Т.е. не требуется отменять все документы и заново по порядку проводить
Достаточно только те расчет которых "пересекается" (например для себестоимости или чего еще)
23 АЛьФ
 
05.03.26
12:52
2(21) Ну, у нас конфига самописная, поэтому таких приколов не ожидается. Присматриваемся как перенести из семерки подход, когда переформируются только по нужным регистрам движения.
24 trad
 
05.03.26
13:42
(0)
ГДЕ
    Регистр.МоментВремени > &ГраницаРасчета
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.