Имя: Пароль:
1C
1С v8
Получение остатков по регистру без учета текущего документа
,
0 shane13
 
13.07.11
13:39
Всем привет! туплю...
Как при проведении документа получить остатки по регистру, который он двигает, без учета движений этого самого документа???
Вот отрывок кода:
Запрос.УстановитьПараметр("Момент", Новый Граница(Объект.МоментВремени(), ВидГраницы.Исключая);
РегистрНакопления.ДолгиКлиентов.Остатки(&Момент,) КАК ДолгиКлиентовОстатки"

или так:
Запрос.УстановитьПараметр("Момент", Объект.Дата-1);
РегистрНакопления.ДолгиКлиентов.Остатки(&Момент,) КАК ДолгиКлиентовОстатки"

В обоих случаях движения этого документа попадают((( Что не так? Хелп!
1 Maxus43
 
13.07.11
13:41
во втором то не может попасть точно, чудес не бывает
2 Maxus43
 
13.07.11
13:44
Объект.Дата - что в отладчике? что-то не так помоему
3 ice777
 
13.07.11
13:44
Регистратор<>&Ссылка ?

Ccылка - твой док.
4 Maxus43
 
13.07.11
13:45
(3) у остатков?
5 ice777
 
13.07.11
13:46
(4) тогда использовать что-то другое.
6 shane13
 
13.07.11
13:46
(2) дата на 1 сек. меньше моего документа, не пойму где заковырка...
7 Escander
 
13.07.11
13:46
(0) только по варианту 1
8 Maxus43
 
13.07.11
13:47
Граница всегда работала, зачем другое. помоему что то не так делается в (0)
9 73
 
13.07.11
13:47
(0) Остатки вроде и так НА. т.е. исключая...
10 unregistered
 
13.07.11
13:47
В обоих случаях остатки будет получены на момент ДО проведения документа. Даже если в первом случае указать просто момент времени, а не границу, и во втором случае просто Объект.Дата (без "-1").

Остатки всегда получатся на начало переданного параметра Период, кроме случая границы вида "Включая".
11 Maxus43
 
13.07.11
13:47
(9) для очистки совести
12 shane13
 
13.07.11
13:48
мне тоже первый вариант кажется правильным, ведь в 1 сек может быть несколько доков.
13 73
 
13.07.11
13:49
(2)+ что в Объект ?
14 ice777
 
13.07.11
13:49
я переписал кучу запросов у себя с остатков на остаткиИобороты, только для того, чтоб отсеять регистратор.

но мне это только и надо было. а то, что ТС пытается проделать - это получить остатки до опред. момента.
15 unregistered
 
13.07.11
13:50
А вообще правильно:

Запрос.УстановитьПараметр("Момент", Объект.МоментВремени())

Если запрос к виртуальной таблице Остатки регистра накопления...
16 unregistered
 
13.07.11
13:51
(14) >> переписал кучу запросов у себя с остатков на остаткиИобороты, только для того, чтоб отсеять регистратор.

Чаво? А смысл в чем?
17 shane13
 
13.07.11
13:52
(13) немного наврала во втором без объект написано
Запрос.УстановитьПараметр("Момент", Дата-1);
РегистрНакопления.ДолгиКлиентов.Остатки(&Момент,) КАК ДолгиКлиентовОстатки"
18 ice777
 
13.07.11
13:52
(16) см замечание (4)
19 Ayvengo
 
13.07.11
13:53
(0) Получаешь таблица остатков на дату документа или на какую там тебе надо.
Создаешь таблицу в которой будет количество, которое предполагаемо будет добавлено в регистр. Ну и соединяешь это все в запросе, а потом получаешь нужные тебе данные. Имеет смысл, если документ у тебя уже был проведен. В противном случае нет смысла :)
20 shane13
 
13.07.11
13:55
(19) т.е. первый вариант не будет получать остатки на документ?
21 ice777
 
13.07.11
13:55
(19) имеено, что еще смотреть, проведен или нет и т.п. Пальцев не жалко? )
22 unregistered
 
13.07.11
13:56
(18) Всё равно ни чего не понимаю.
Если мне нужны остатки на момент времени, зачем тянуть тяжелую таблица ОстаткиИОбороты, когда всё есть в таблице Остатки, получаемой из итоговых таблиц?
23 Ayvengo
 
13.07.11
13:56
(22) ни в коем разе нельзя тянуть, зачем систему лишний раз нагружать? :)
24 shane13
 
13.07.11
13:57
и все-таки как получить остатки до проведения документа?
25 ice777
 
13.07.11
13:57
(22) чтоб не выкручиваться с регистратором.
26 unregistered
 
13.07.11
13:57
Автор! Докажи, что ты не врешь, утверждая (0)!

(1) +100500 >> чудес не бывает
27 ice777
 
13.07.11
13:58
(22) чтобы не выкручиваться с отсутствием Регистратора в остатках )
28 unregistered
 
13.07.11
13:58
(25) Что значит "выкручиваться" с тем, чего нет в остатках?

Или сами себе трудности создаем, чтобы потом понаустанавливать отборы на регистраторы?
29 ice777
 
13.07.11
14:00
(28) перечитай (0). ему нужны движения, кроме сделанных определенным регистратором.
30 shane13
 
13.07.11
14:00
(26) я смотрю отладчиком при проведении(((((
31 ice777
 
13.07.11
14:03
(30) запусти лучше конструктор запросов и сделай все быстро без геморроя. из ОстатковИ Оборотов. Все равно траффик не сильно поднимется, ты же только остаток верншь.
32 unregistered
 
13.07.11
14:14
(29) Перечитываю (0):

получить ОСТАТКИ по регистру, который он двигает, БЕЗ учета движений

Может я конечно чего-то не понимаю....
33 shane13
 
13.07.11
14:16
(32)все верно понимаешь!!!
34 unregistered
 
13.07.11
14:16
Впрочем, если нравиться, развлекайтесь... :)
35 Maxus43
 
13.07.11
14:18
(33) в консоль запросов запихни запрос свой, и проверь на проведённом и не проведённом документе своём
36 Ayvengo
 
13.07.11
14:21
(0) А в регистре период какой попадает?
37 unregistered
 
13.07.11
14:22
(33) В (0) написана явная неправда. Чудес не бывает. Даже если с моментом и границей могут быть какие-нибудь проблемы, то получение остатков на "Дата-1" ну ни как не может вернуть остатки, включающие движения документа.

Показывай уже запрос.

И вообще. Где всё это происходит? Не в обработке проведения часом? Если да, то что там с автоматическим удалением движений? можно еще тупо в самом начале проведения написать Движения.ДолгиКлиентов.Записать(), записав таким образом пустой набор записей.
38 shane13
 
13.07.11
14:29
(37)происходит это все в обработке проведения, верно догадались
В начале пишу так:
Движения.ДолгиКлиентов.Записывать = Истина;
Движения.ДолгиКлиентов.Очистить();
39 shane13
 
13.07.11
14:29
(37) удаление движений стоит: удалять автоматически при отмене проведения
40 Maxus43
 
13.07.11
14:30
да какая разница где? только если по странной логике движения в регистр делаются не на дату документа
41 Ayvengo
 
13.07.11
14:30
(38) период какой в регистре ... дата ?? или начало дня или чего там? :)
42 Maxus43
 
13.07.11
14:30
(39) При перепроведении не удалит
43 shane13
 
13.07.11
14:34
(42) ого!
44 hhhh
 
13.07.11
14:37
(37) чего ты прикалываешься? Бывают чудеса. Ну например, как ты думаешь, зачем во всех документах в типовых вставлено свойство "ДатаДокументаСдвинутаВперед"? Вот в (0) именно такой случай. Дата (и момент) сдвинута вперед, а движения остались далеко пазади.
45 shane13
 
13.07.11
14:38
(37)+ (42) Спасибо вам большое!
и правда при перепроведении в таком режиме движения не удаляются. Сделала Движения.ДолгиКлиентов.Записать() и все ОК!!!
46 shane13
 
13.07.11
14:39
(44) не совсем понятно, это как?
47 Maxus43
 
13.07.11
14:40
(46) Это (40) значит, движения не на дату документа
48 Maxus43
 
13.07.11
14:40
(44) во всех? всмысле новых только? на старых такого нет
49 shane13
 
13.07.11
14:42
у мну движения делаются на дату документа
50 unregistered
 
13.07.11
14:52
(44) (48) В старых такого нет. Предположу, что тут обыгрывается история, когда перепроводится документ, у которого изменили дату. Тут и смотриться - куда переместили документ - вперёд или назад относительно старых движений.

Чтобы не делать запись пустого набора и при этом быть уверенным, что в результат запроса по остаткам не попадут старые движения этого-же документа.

Ну.... это как-бы догадка. Я последние типовые не видел. :)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший