|
v7: Временный расчет регистра остатков | ☑ | ||
---|---|---|---|---|
0
MiracMC
07.03.13
✎
15:18
|
День добрый.
перечитал массу похожих тем, но так и не получилось у меня вынуть остатки своего регистра остатков на конкретную дату. суть задачи: есть регистр остатков "касса". в который пишутся движения по кассе. Измерения - Фирма и Касса Ресурсы - остаток Реквизиты - пробую так: ркасса = СоздатьОбъект("Регистр.Кассы"); ркасса = рег.кассы; ркасса.ВременныйРасчет(1); РассчитатьРегистрыНа(датаС); ркасса.Фирма = Константа.ОсновнаяФирмаНал; ркасса.касса = Константа.ОсновнаяФирмаНал.касса; ркасса.ОстаткиПолучить(); Сообщить(ркасса.Остаток); в ответе на любую дату = 0...... пробую еще так: рег = СоздатьОбъект("регистр.кассы"); рег.УстановитьЗначениеФильтра("Фирма",Константа.ОсновнаяФирмаНал); рег.УстановитьЗначениеФильтра("касса",Константа.ОсновнаяФирмаНал.касса); рег.ВременныйРасчет(1); РассчитатьРегистрыНа(датаС); ТЗ = СоздатьОбъект("ТаблицаЗначений"); рег.ВыгрузитьИтоги(тз,1); Сообщить("строк " + тз.КоличествоСтрок()); Сообщить("кол " + тз.Количествоколонок()); и получаю ответ: Строк 0 кол 4 при этом, если для этого же регистра сделать ВыбратьДвижения() и перебрать их в цикле пока рег.ПолучитьДвижение() = 1 Цикл Сообщить(рег.ТекущийДокумент()); КонецЦикла; оно выводит все документы, которые совершали движения по регистру. так же вот это: Сообщить(регистр.Кассы.СводныйОстаток(Константа.ОсновнаяФирмаНал,Константа.ОсновнаяФирмаНал.Касса,"Остаток")); выводит состояние регистра, но тоже как то странно... если пересчитать все документы - сумма должна быть 2110 грн в остатке. а мне выдает 2070 грн уже все перепробовал... задач 2: 1. получить итоги на дату 2. найти потерянные 40 грн... |
|||
1
Cthulhu
07.03.13
✎
15:21
|
Книшка такая есть - "Описание встроенного языка". В простонародье - ОВЯ.
Так там по "ВременныйРасчет" - вполне себе работоспособный пример есть. |
|||
2
Cthulhu
07.03.13
✎
15:22
|
ЗЫ: или ты прсто хочешь чтобы за тебя твою работу сделали?.. так это незабесплатно.
|
|||
3
MiracMC
07.03.13
✎
15:31
|
2 Cthulhu
я перечитал и перепробовал массу вариантов... но по каким то причинам у меня оно не работает... конфигурация самописная. не имеет ничего общего с типовыми. просто, возможно, я где то что то упустил... вот и прошу, так сказать, взглянуть новым взглядом на код, который мне уже скоро снится будет... |
|||
4
MiracMC
07.03.13
✎
15:33
|
просто мне не понятно, почему при использовании временного расчета мне нули выдает... а СводныйОстаток() - выдает почти правильное значение....
|
|||
5
Джинн
07.03.13
✎
15:35
|
рег.ВыгрузитьИтоги(тз,1);
тз.ВыбратьСтроку(); И смотрите что там. |
|||
6
MiracMC
07.03.13
✎
15:38
|
(5)
рег.ВыгрузитьИтоги(тз,1); Сообщить("строк " + тз.КоличествоСтрок()); Сообщить("кол " + тз.Количествоколонок()); и получаю ответ: Строк 0 кол 4 |
|||
7
КонецЦикла
07.03.13
✎
15:50
|
Нет итогов
А что дает ручной подсчет за все время существования базы по ВыбратьДвижения()? :) Если что-то не то - можно пересчитать итоги, просто сдвинуть ТА на начало, а потом вернуть на место |
|||
8
MiracMC
07.03.13
✎
15:55
|
попробовал еще один вариант:
рег = СоздатьОбъект("регистр.кассы"); рег.ВременныйРасчет(); РассчитатьРегистрыНа(датаС); рег.ВыбратьДвиженияСОстатками(датаС); с = 0; Пока рег.ПолучитьДвижение() = 1 Цикл с = с + рег.Остаток; Сообщить(рег.Остаток); КонецЦикла; Сообщить(рег.СводныйОСтаток(,,"Остаток")); так вот тут все показывает правильно... всем спасибо... |
|||
9
Джинн
07.03.13
✎
15:57
|
(8)
рег = СоздатьОбъект("регистр.кассы"); рег.ВременныйРасчет(); РассчитатьРегистрыНа(датаС); ТЗ = СоздатьОбъект("ТаблицаЗначений"); рег.ВыгрузитьИтоги(ТЗ,1,1); ТЗ.ВыбратьСтроку(); Что в ТЗ? |
|||
10
КонецЦикла
07.03.13
✎
15:57
|
(8) Да, но в вышеприведенном коде есть фильтры по фирме и кассе :)
Предлагаю разобраться правильно ли они установлены и нужны ли вообще |
|||
11
MiracMC
07.03.13
✎
16:22
|
(9) в ТЗ из моего примера нет ни одной строки...
Ваш, не пробовал еще... (10) фильтры - это я пробовал из примеров... ставил по аналогии с тем, что было написано в примере... |
|||
12
Cthulhu
08.03.13
✎
16:58
|
(3): врать изволите, юноша. в примере к этому методу (в ОВЯ) - совершенно не то, что Вы изволите тут долбить. там вопервых, временный расчет устанавливается для <СоздатьОбъект("Регистры")>.<ИмяНужногоРегистра>. А ".РаасчитатьРегистры<Чо>(..)" применяется к <СоздатьОбъект("Регистры")>.
(8): движения от итогов - не умеешь отличать?.. тогда - да, все правильно. |
|||
13
kiruha
08.03.13
✎
18:24
|
(0)
ВремРегистры = СоздатьОбъект("Регистры"); рег=ВремРегистры.Кассы; рег.ВременныйРасчет(); ВремРегистры.РассчитатьРегистрыНа(датаС); ТЗ = СоздатьОбъект("ТаблицаЗначений"); рег.ВыгрузитьИтоги(ТЗ,1,1); ТЗ.ВыбратьСтроку(); |
|||
14
Cthulhu
08.03.13
✎
18:53
|
(13): нуинаф?..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |