Имя: Пароль:
1C
1С v8
УТ Унив. отчет (построитель) задвоение остатка после гр. "регистратор", если ...
, ,
0 Вуглускр1991
 
19.11.14
15:38
Привет!
В процессе модификации отчета по кредитной линии обнаружил:
добавляем показатель:
ВзаиморасчетыОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток
Все красиво работает, как надо.
Изменяем показатель вот так:
ВЫБОР
КОГДА Истина Тогда ВзаиморасчетыОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток
ИНАЧЕ 0
КОНЕЦ
Получаем задвоение. Платформа 1С:Предприятие 8.3 (8.3.5.1248)
файловый вапиант.
Я чего-то недопонимаю? Так должно быть?
Как избавиться? Мне надо отбирать остаточки с некоторыми условиями и суммировать их.
1 Ненавижу 1С
 
гуру
19.11.14
15:42
именно вот с таким условием тоже задаваивает?
2 Вуглускр1991
 
19.11.14
15:45
(1) да!
3 Вуглускр1991
 
19.11.14
15:50
1С:Предприятие 8.2 (8.2.19.80)
тоже двоит.
4 Euguln
 
19.11.14
15:52
(0) Соединение в запросе есть?
5 Вуглускр1991
 
19.11.14
15:54
(4) есть.
6 Вуглускр1991
 
19.11.14
16:23
(4) Теперь нету. Ошибка воспроизводится в модельном запросе:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВзаиморасчетыОстаткиИОбороты.Организация КАК Организация,
    ВзаиморасчетыОстаткиИОбороты.Контрагент КАК Контрагент,
    ВзаиморасчетыОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
    ВзаиморасчетыОстаткиИОбороты.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
    ВЫБОР
        КОГДА ИСТИНА
            ТОГДА ВзаиморасчетыОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток
        ИНАЧЕ 0
    КОНЕЦ КАК ДолгКонтрагентаНорм
{ВЫБРАТЬ
    Организация.* КАК Организация,
    Контрагент.* КАК Контрагент,
    ДоговорКонтрагента.* КАК ДоговорКонтрагента,
    ДокументРасчетовСКонтрагентом.* КАК ДокументРасчетовСКонтрагентом,
    ВзаиморасчетыОстаткиИОбороты.Регистратор КАК Регистратор,
    ДолгКонтрагентаНорм КАК ДолгКонтрагентаНорм}
ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ОстаткиИОбороты(
            &ДатаНач,
            &ДатаКон,
            Регистратор {(&Периодичность)},
            ,
            ДоговорКонтрагента.ВидДоговора В (&МассивВидовДоговоров)
                И ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности > 0
                И ДоговорКонтрагента.ВестиПоДокументамРасчетовСКонтрагентом = ИСТИНА {(ДоговорКонтрагента).*, (Контрагент).*, (Организация).*, (ДокументРасчетовСКонтрагентом).*}) КАК ВзаиморасчетыОстаткиИОбороты
ГДЕ
    ВзаиморасчетыОстаткиИОбороты.УпрУчет = ИСТИНА
{ГДЕ
    ВзаиморасчетыОстаткиИОбороты.Период}
{УПОРЯДОЧИТЬ ПО
    Организация.* КАК Организация,
    Контрагент.* КАК Контрагент,
    ДоговорКонтрагента.* КАК ДоговорКонтрагента,
    ДокументРасчетовСКонтрагентом.* КАК ДокументРасчетовСКонтрагентом,
    ВзаиморасчетыОстаткиИОбороты.Регистратор.* КАК Регистратор,
    ДолгКонтрагентаНорм}
ИТОГИ
    СУММА(ДолгКонтрагентаНорм)
ПО
    ОБЩИЕ
{ИТОГИ ПО
    Организация,
    Контрагент,
    ДоговорКонтрагента,
    ДокументРасчетовСКонтрагентом,
    ВзаиморасчетыОстаткиИОбороты.Регистратор}
7 Вуглускр1991
 
19.11.14
17:00
Построитель "нипричем!" колбасит даже запрос в консоли:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    ВзаиморасчетыОстаткиИОбороты.Организация КАК Организация,
    ВзаиморасчетыОстаткиИОбороты.Контрагент КАК Контрагент,
    ВзаиморасчетыОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
    ВзаиморасчетыОстаткиИОбороты.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
    ВзаиморасчетыОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК ДолгКонтрагентаНорм,
    ВЫБОР
        КОГДА ИСТИНА
            ТОГДА ВзаиморасчетыОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток
        ИНАЧЕ 0
    КОНЕЦ КАК ДолгКонтрагентаСравн
ИЗ
    РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ОстаткиИОбороты(
            &ДатаНач,
            &ДатаКон,
            Секунда,
            ,
            ДоговорКонтрагента.ВидДоговора В (&МассивВидовДоговоров)
                И ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности > 0
                И ДоговорКонтрагента.ВестиПоДокументамРасчетовСКонтрагентом = ИСТИНА
                И Контрагент = &Контрагент) КАК ВзаиморасчетыОстаткиИОбороты
ГДЕ
    ВзаиморасчетыОстаткиИОбороты.УпрУчет = ИСТИНА
ИТОГИ
    СУММА(ДолгКонтрагентаНорм),
    СУММА(ДолгКонтрагентаСравн)
ПО
    Организация,
    Контрагент,
    ДоговорКонтрагента,
    ДокументРасчетовСКонтрагентом
8 Вуглускр1991
 
19.11.14
17:36
Итак, точка опоры:
1С:Предприятие 8.2 (8.2.19.80)
заменить в запросах параметр "периодичность" в виртуальных таблицах регистров накопления на "Авто" убрав "Регистратор" и {} произвол для построителя отчетов.
работает, на 8.3 пока нет.
9 Вуглускр1991
 
19.11.14
17:40
(8+) Обманул ... не включил группировку по регистратору. Как только я её включил, появилось задвоение.
10 Ненавижу 1С
 
гуру
19.11.14
18:34
когда юзается группировка по регистратору/периодам в ОстатиИОбороты, то ведь как сами понимаете в итогах СУММА(КонечныйОстаток) не сумма вовсе
а нормально оно отрабатывает только с типовыми полями этой таблицы, все остальное видимо как-то реально "суммируется"
11 Вуглускр1991
 
19.11.14
19:08
(10) Такое впечатление, что там заплатку прилепили вместо нормального анализа суммируемых показателей.
12 Вуглускр1991
 
19.11.14
19:41
Отбой, в общем.
Решение такое, надо в явном виде вывести из под оператора "ВЫБОР" показатели остатков, по которым должны вычисляться хитрые итоги. Надо помочь анализатору с разбором выражения и все начинает работать.
Вместо
ВЫБОР
  КОГДА ИСТИНА ТОГДА ВзаиморасчетыОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток
  ИНАЧЕ 0
КОНЕЦ
Надо
ВзаиморасчетыОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток * ВЫБОР
  КОГДА ИСТИНА ТОГДА 1
  ИНАЧЕ 0
КОНЕЦ
Если включить это в книгу знаний, то фирма 1С может решить, что это фича и вместо исправлений к анализатору выпустят дополнения к документации (уже есть?) с описанием, как правильно надо писать такие запросы.