|
v7: Требуется помощь с регистром | ☑ | ||
---|---|---|---|---|
0
AL CAPONE
13.01.12
✎
13:39
|
Имеется некий регистр остатков.
Измерения - Склад. Ресурсы - Количество. Реквизиты - Сумма. Имеется следующий код: ТекстЗапроса = " |Период с ДатаНачала по ДатаКонца; |Склад = Регистр.КА.Склад; |Сумма = Регистр.КА.Сумма; |Функция СумНаНачало = НачОст(Сумма); |Функция СумНаКонец = КонОст(Сумма); |Условие (Склад = ВыбСклад); |"; Запрос = СоздатьОбъект("Запрос"); Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Предупреждение("Прервались..."); Возврат 0; КонецЕсли; Сумма = Запрос.СумНаКонец - Запрос.СумНаНачало; Возврат(Сумма); Сумма возвращает всегда 0. Отладчик также показал, что для любых складов суммы = 0. Как оказалось функции НачОст и КонОст можно использовать только для ресурсов регистра. Как можно выкрутиться, если нужно получить те же данные из измерения регистра ? Перенос Суммы в Ресурсы регистра не рассматривается. |
|||
1
ДенисЧ
13.01.12
✎
13:40
|
Сумма - в измерение?
Ого... Такого я ещё не встречал... |
|||
2
ДенисЧ
13.01.12
✎
13:41
|
А... У тебя сумма реквизит... Так вот. Никаких остатков по реквизитам нет и быть не может.
|
|||
3
AL CAPONE
13.01.12
✎
13:41
|
(1)
не в измерениях, а в реквизитах |
|||
4
1Сергей
13.01.12
✎
13:42
|
(3) попробуй приход - расход. Но, это будут не остатки
|
|||
5
AL CAPONE
13.01.12
✎
13:42
|
(2)
но движения по Регистру же делаются и по суммам тоже ... |
|||
6
ДенисЧ
13.01.12
✎
13:42
|
(5) Но остатки не считаются. Если хочешь всё-таки получить - руками собирай движения от начала времён
|
|||
7
Ёпрст
13.01.12
✎
13:43
|
(3) остатки накапливаются ТОЛЬКО по РЕСУРСАМ регистров в разрезе ИЗМЕРЕНИЙ
rtfm |
|||
8
Fish
13.01.12
✎
13:45
|
(0) А вы хотя бы имеете представление, для чего служат Измерения, Ресурсы и Реквизиты и в чём их отличие?
|
|||
9
dk
13.01.12
✎
13:45
|
ТекстЗапроса = "
|Период с '01.01.1980'по ДатаКонца; |Склад = Регистр.КА.Склад; |Сумма = Регистр.КА.Сумма; |Функция СумНаНачало = НачОст(Сумма); |Функция СумНаКонец = Сумма(Сумма); |Условие (Склад = ВыбСклад); |"; но медленно будет --- а вообще с таким стажем писать "Как оказалось функции НачОст и КонОст можно использовать только для ресурсов регистра"? ))) |
|||
10
1Сергей
13.01.12
✎
13:49
|
как я понял из:
Сумма = Запрос.СумНаКонец - Запрос.СумНаНачало; ему нужны обороты, поэтому всё же попробуй (4) |
|||
11
AL CAPONE
13.01.12
✎
13:52
|
(10)
там Сумма с накоплением идёт, типа Январь - 10.000 Ферваль - 15.000 ... Декабрь - 120.000 И нужно вытянуть сумму на декабрь - сумму на январь, так что Приход/Расход не прокатит :( |
|||
12
1Сергей
13.01.12
✎
13:54
|
(11) переделать реквизит в ресурс не предлагать?
|
|||
13
AL CAPONE
13.01.12
✎
13:55
|
Попробовал такой код:
ТекстЗапроса = " |Период с ДатаНачала по ДатаНачала; |Склад = Регистр.КА.Склад; |Сумма = Регистр.КА.Сумма; |Условие (Склад = Киоск); |"; Запрос = СоздатьОбъект("Запрос"); Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Предупреждение("Прервались..."); Возврат 0; КонецЕсли; СуммаНаНачало = Запрос.Сумма; ТекстЗапроса = " |Период с ДатаКонца по ДатаКонца; |Склад = Регистр.КА.Склад; |Сумма = Регистр.КА.Сумма; |Условие (Склад = Киоск); |"; Запрос = СоздатьОбъект("Запрос"); Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Предупреждение("Прервались..."); Возврат 0; КонецЕсли; СуммаНаКонец = Запрос.Сумма; Сумма = СуммаНаКонец - СуммаНаНачало; Возврат(Сумма) тоже даёт 0 :( |
|||
14
AL CAPONE
13.01.12
✎
13:55
|
(12)
к сожалению нельзя |
|||
15
1Сергей
13.01.12
✎
13:57
|
(13) запрос к регистру без функций не имеет смысла
|
|||
16
AL CAPONE
13.01.12
✎
14:04
|
(15)
а, ну да, логично :) Так какой-нибудь функцией можно всё же вытянуть Реквизит регистра остатков на определённую дату ? |
|||
17
1Сергей
13.01.12
✎
14:07
|
(16) нельзя. А вообще, я так понял в (0) это функция? и она выполняется скорее всего в цикле?
За такое обычно пальцы дверью правят |
|||
18
filh
13.01.12
✎
14:09
|
(16) не получится, т.к. у тебя нет остатков. А считать с 1710г. до ДатаНачало это крута будет.
|
|||
19
Эльниньо
13.01.12
✎
14:48
|
(14) Открой великую тайну - почему?
|
|||
20
filh
13.01.12
✎
14:49
|
(19) пересчетов боится
:) |
|||
21
GrayT
13.01.12
✎
14:53
|
Боюсь, что покуда мы не поймем с какого перепугу родилась такая структура регистра - ни чего дельного сказать не получится.
А когда поймем - скажем что сумма нужна в Ресурсах :) |
|||
22
Classic
13.01.12
✎
14:55
|
(11)
не совсем понял, что ты хочешь, но попробуй ТекстЗапроса = " |Период с ДатаНачала по ДатаНачала; |Склад = Регистр.КА.Склад; |Сумма = Регистр.КА.Сумма; |Функция Сумма(1); |Условие (Склад = Киоск); |"; Запрос = СоздатьОбъект("Запрос"); Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Предупреждение("Прервались..."); Возврат 0; КонецЕсли; СуммаНаНачало = Запрос.Сумма; |
|||
23
Classic
13.01.12
✎
14:56
|
Точнее Конечно вместо
|Функция Сумма(1); |Функция Чтототам = Сумма(1); |
|||
24
AL CAPONE
13.01.12
✎
15:10
|
(17)
никакого там цикла, разовый запрос по разовому складу |
|||
25
AL CAPONE
13.01.12
✎
15:10
|
(19)
т.к. регистр не закроется по сумме, закрытие происходит только количественное |
|||
26
filh
13.01.12
✎
15:16
|
(25) Ну блин, тогда сделай еще 1 реквизит Остаток и заполняй его.
|
|||
27
AL CAPONE
13.01.12
✎
15:20
|
(26)
может Ресурс, а не Реквизит ? |
|||
28
filh
13.01.12
✎
15:23
|
(27) Сумма у тебя что?
|
|||
29
AL CAPONE
13.01.12
✎
15:24
|
(23)
возвращает нули :(( (28) Реквизит регистра |
|||
30
AL CAPONE
13.01.12
✎
15:27
|
(18)
а если не считать с начала времён, а проверять Регистр.ТекДок.ДатаДок входит в интервал [ДатаНачала,ДатаКонца] ?? |
|||
31
filh
13.01.12
✎
15:28
|
(29) Ресурс у тебя на закроется, сам же написал.
|
|||
32
filh
13.01.12
✎
15:29
|
(30) а как определишь остаток на ДатаНачала
|
|||
33
filh
13.01.12
✎
15:29
|
?
|
|||
34
AL CAPONE
13.01.12
✎
15:30
|
(32)
ну а если сделать Группировку по ТекДок.ДатаДок и при получение первого движения регистра и получим по логике начальный остаток ... |
|||
35
Джинн
13.01.12
✎
15:32
|
(34) По логике тебе нужна веревка. Чтобы не мучится.
|
|||
36
AL CAPONE
13.01.12
✎
15:34
|
(35)
как дитё ) Не стыдно в вашем-то возрасте ? |
|||
37
filh
13.01.12
✎
15:43
|
(34)
ТекстЗапроса = " |Период по ДатаНачала; |Склад = Регистр.КА.Склад; |Сумма = Регистр.КА.Сумма; |Функция Сумма1 = Сумма(Сумма); |Условие (Склад = ВыбСклад); |"; |
|||
38
Mikeware
13.01.12
✎
15:44
|
(35) "вазелин еще надо заслужить"©
|
|||
39
AL CAPONE
13.01.12
✎
15:51
|
(37)
о, так вроде хоть что-то считает, спасибо, буду дальше проверять |
|||
40
AL CAPONE
14.01.12
✎
17:33
|
Ребета, нужен ещё совет:
метод в (37) работает, но если Регистр.КА.Сумма = 0, то Функция Сумма1 = Сумма(Сумма) ничего не возвращает, такое движение регистра просто отбрасывается. Как можно его всё таки зафиксировать в выборке ? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |