Имя: Пароль:
1C
1С v8
Получить остаток без участия текущего документа.
,
0 antihacker
 
28.08.19
15:18
Всем привет !

Вот  код

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


Но почему то он все равно получает остаток с участием текущего проведенного документа. Как бы условие Регистр.Регистратор <> &СсылкаТекДокумент не работает
1 aleks_default
 
28.08.19
15:20
Потому что в остатках регистратор = неопределено
2 unenu
 
28.08.19
15:21
параметр СсылкаТекДокумент вероятно пуст
3 antihacker
 
28.08.19
15:21
Ну здесь же ОстаткиИОбороты
4 antihacker
 
28.08.19
15:21
unenu , смотрю отладкой, не пуст
5 piter3
 
28.08.19
15:27
Что есть датаучета?
6 antihacker
 
28.08.19
15:30
ДатаУчеат просто дата
7 piter3
 
28.08.19
15:32
А ты сам понимаешь,что написал?
8 Михаил Козлов
 
28.08.19
15:32
Если Вы хотите узнать, какой бы был остаток, если бы выкинуть движения указанного документа, то запрос, по-моему, неправильный.
Если взять только остатки и обороты по регистраторам (включая и указанный документ), то получим таблицу вида: документ - конечный остаток на момент документа. Интерпретировать сумму этих конечных остатков не могу.
9 VladZ
 
28.08.19
15:36
(0) Вопрос намбер уан: зачем?
10 antihacker
 
28.08.19
15:37
Запрос правильный. Если провести документ и выбрать специфику, то остаток по нему будет с учетом данных текщего документа. Что не правильно. Остаток на текущий документ должен выходить без учета сумм текущего документа.
11 VladZ
 
28.08.19
15:37
+9 Прошу уточнить задачу. Возможно, речь идет про "получить остаток на момент документа"?
12 piter3
 
28.08.19
15:38
Нафига тогда КОНЕЦПЕРИОДА(&ДатаУчета, ГОД)
13 antihacker
 
28.08.19
15:47
piter3 , ну как быть ?
14 kobzon2
 
28.08.19
15:49
(4) СсылкаТекДокумент точно ссылка, а не объект?
15 piter3
 
28.08.19
15:49
(13) Видимо поставить конец менее даты документа,я не понимаю задачу точно,но как-то так
16 antihacker
 
28.08.19
15:52
СсылкаТекДокумент , точно ссылка. Дело в том что там есть реквизит Месяц. Там храниться номера месяцев. Вот остаток надо получить по всем месяцам сразу. Из за этого  нужна КОНЕЦПЕРИОДА(&ДатаУчета, ГОД)
17 piter3
 
28.08.19
15:54
Пипец,нифига не понятно
18 antihacker
 
28.08.19
15:56
Месяц Сумма видДвижения

1     1000  приход
2     2000  расход
2     3000  приход
4     4000  приход

Вот надо получить остатки сумм по реквизиту Месяц
19 piter3
 
28.08.19
15:57
Каким боком док тогда
20 ptiz
 
28.08.19
15:59
(0) "условие Регистр.Регистратор <> &СсылкаТекДокумент " - оно работает, отсекает ОБОРОТЫ текущего документа. Твоя задача решается просто - таблицей .Остатки() минус движения текущего документа.
21 antihacker
 
28.08.19
16:02
ptiz, может мне в запросе запихнуть движение текущего документа в временную таблицу и минусовать ?
22 antihacker
 
28.08.19
16:03
piter3, читай внимательно. Если здесь приход 4000 движение текущего документа, то его надо убрать
23 Максим Нижегородец
 
28.08.19
16:14
(22) Правильная постановка задачи на 50% и есть решение. Запросом без РЕГИСТРАТОРОВ получаете остаток, а потом убираете из полученной суммы обороты по этому документу. ПРИМЕР: ОстатокНаКонец + ПриходПоТекущемуДокументу - РасходПоТекущемуДокументу = НужныйОстаток - т.е. решение.
24 Максим Нижегородец
 
28.08.19
16:18
(22) Убрать документ можно только из оборотов, из остатков нельзя - остатки уже посчитаны с учетом этого документа.
25 ДенисЧ
 
28.08.19
16:21
(24) Задать границу остатков Исключая?
26 JeHer
 
28.08.19
16:23
(23) я один х@# не понял, что нао  вытащить
27 piter3
 
28.08.19
16:23
(26) нет,видно только ptiz уловил суть
28 Максим Нижегородец
 
28.08.19
16:24
(25) Это только если остатки нужно посчитать на границу документа. Иначе не прокатит. Иногда требуется посчитать остатки без учета некоторых документов (думаю задача такая).
29 Максим Нижегородец
 
28.08.19
16:25
(27) ptiz - прав, с ним согласен.
30 VladZ
 
28.08.19
16:35
Херня какая-то...

"Если здесь приход 4000 движение текущего документа, то его надо убрать"  - откуда убрать? Из оборотов? Из остатков?
Почему нельзя сделать по-человечьи: получать остатки на момент документа. Зачем анализировать целый год? и убирать из остатков?

И как можно убрать из остатков???? Остатки - это виртуальная таблица, данные в которой уже посчитаны.  Как ты оттуда "уберешь остаток"?