Имя: Пароль:
1C
1С v8
Не срабатывает условие при изменение состава полей в СКД
,
0 DenYuliya
 
18.12.18
11:00
День добрый.
Такой вопрос:

Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.64.48)
1С:Предприятие 8.3 (8.3.10.2667)

Есть отчет, на СКД. Смысл отчета: сравнить суммы по оборотам Хозрасчетного регистра. и по оборотам Раздельного учета НДС.
На итоговую таблицу накладывается условие:"Сумма обороты БУ <> Сумма раздельного учета НДС".
Все хорошо, до того момента, пока пользователь не решает ручками (в настройках) изменить состав полей.
При этом слетает группировка, и перестает работать условие.
В Консоли запросов я могу это исправить. А как решить данную проблему на СКД?
Попробовала отключить Автозаполнение и поковыряться в "Компоновке данных" - не помогло.

Текст запроса:

ВЫБРАТЬ
    НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.СчетЗатрат КАК АналитикаУчетаЗатратСчетЗатрат
ПОМЕСТИТЬ ВТ_Рег
ИЗ
    РегистрНакопления.НДСРаздельныйУчет.Обороты(&НачалоПериода, &КонецПериода, День, ) КАК НДСРаздельныйУчетОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КлючиАналитикиУчетаЗатрат.СчетЗатрат КАК СчетЗатрат
ПОМЕСТИТЬ ВТ_Счета
ИЗ
    ВТ_Рег КАК ВТ_Рег
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаЗатрат КАК КлючиАналитикиУчетаЗатрат
        ПО ВТ_Рег.АналитикаУчетаЗатратСчетЗатрат = КлючиАналитикиУчетаЗатрат.СчетЗатрат

СГРУППИРОВАТЬ ПО
    КлючиАналитикиУчетаЗатрат.СчетЗатрат
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ХозрасчетныйОборотыДтКт.СчетДт КАК Счет,
    ХозрасчетныйОборотыДтКт.Организация КАК Организация,
    ХозрасчетныйОборотыДтКт.ПодразделениеДт КАК Подразделение,
    ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СубконтоДт1, НЕОПРЕДЕЛЕНО) КАК Субконто1,
    ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СубконтоДт2, НЕОПРЕДЕЛЕНО) КАК Субконто2,
    ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СубконтоДт3, НЕОПРЕДЕЛЕНО) КАК Субконто3,
    0 КАК СуммаРаздельногоУчетаНДС,
    ХозрасчетныйОборотыДтКт.СуммаОборот КАК СуммаОборотДт
ПОМЕСТИТЬ ВТ_Суммы
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
            &НачалоПериода,
            &КонецПериода,
            День,
            СчетДт В
                (ВЫБРАТЬ
                    ВТ_Счета.СчетЗатрат КАК СчетЗатрат
                ИЗ
                    ВТ_Счета КАК ВТ_Счета),
            ,
            ,
            ,
            ) КАК ХозрасчетныйОборотыДтКт

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.СчетЗатрат,
    НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.Организация,
    НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.Подразделение,
    ЕСТЬNULL(НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.Субконто1, НЕОПРЕДЕЛЕНО),
    ЕСТЬNULL(НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.Субконто2, НЕОПРЕДЕЛЕНО),
    ЕСТЬNULL(НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.Субконто3, НЕОПРЕДЕЛЕНО),
    НДСРаздельныйУчетОбороты.СуммаБезНДСПриход,
    0
ИЗ
    РегистрНакопления.НДСРаздельныйУчет.Обороты(&НачалоПериода, &КонецПериода, День, ) КАК НДСРаздельныйУчетОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Суммы.Счет КАК Счет,
    ВТ_Суммы.Организация КАК Организация,
    ВТ_Суммы.Подразделение КАК Подразделение,
    ВТ_Суммы.Субконто1 КАК Субконто1,
    ВТ_Суммы.Субконто2 КАК Субконто2,
    ВТ_Суммы.Субконто3 КАК Субконто3,
    СУММА(ВТ_Суммы.СуммаОборотДт) КАК СуммаОборотДт,
    СУММА(ВТ_Суммы.СуммаРаздельногоУчетаНДС) КАК СуммаРаздельногоУчетаНДС
ПОМЕСТИТЬ ВТ_Итог
ИЗ
    ВТ_Суммы КАК ВТ_Суммы

СГРУППИРОВАТЬ ПО
    ВТ_Суммы.Организация,
    ВТ_Суммы.Подразделение,
    ВТ_Суммы.Субконто1,
    ВТ_Суммы.Субконто2,
    ВТ_Суммы.Субконто3,
    ВТ_Суммы.Счет
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Итог.Счет КАК Счет,
    ВТ_Итог.Организация КАК Организация,
    ВТ_Итог.Подразделение КАК Подразделение,
    ВТ_Итог.Субконто1 КАК Субконто1,
    ВТ_Итог.Субконто2 КАК Субконто2,
    ВТ_Итог.Субконто3 КАК Субконто3,
    ВТ_Итог.СуммаОборотДт КАК СуммаОборотДт,
    ВТ_Итог.СуммаРаздельногоУчетаНДС КАК СуммаРаздельногоУчетаНДС
{ВЫБРАТЬ
    Счет.*,
    Организация.*,
    Подразделение.*,
    Субконто1.*,
    Субконто2.*,
    Субконто3.*,
    СуммаОборотДт,
    СуммаРаздельногоУчетаНДС}
ИЗ
    ВТ_Итог КАК ВТ_Итог
ГДЕ
    ВТ_Итог.СуммаОборотДт <> ВТ_Итог.СуммаРаздельногоУчетаНДС
{ГДЕ
    ВТ_Итог.Счет.*,
    ВТ_Итог.Организация.*,
    ВТ_Итог.Подразделение.*,
    ВТ_Итог.Субконто1.*,
    ВТ_Итог.Субконто2.*,
    ВТ_Итог.Субконто3.*,
    (ВТ_Итог.СуммаРаздельногоУчетаНДС <> ВТ_Итог.СуммаОборотДт) КАК ОтборПоСумме}
1 IvanGorbunov
 
18.12.18
11:03
Это чистый СКД, либо в форме или в модуле есть какой-то код?
2 toypaul
 
гуру
18.12.18
11:06
не надо заключать это условие в фигурные скобки
3 toypaul
 
гуру
18.12.18
11:07
если условие в скобках {}, то при невыбранном поле (хотя бы одном) из условия, условия срабатывать не будет. считается, что такое условие не является обязательным. отбор по периоду например так делается.
4 DenYuliya
 
18.12.18
11:18
Вот так выглядит результат отчета, если отчет формируется со всеми полями, группировками по всем полям. Условие работает. Результат правильный.
https://a.radikal.ru/a42/1812/9c/0e4db132007e.png

Настройки при этом такие:
https://d.radikal.ru/d27/1812/a6/2b8d8ec6708f.png

Когда меняешь состав выбранных полей вот на такие:
https://d.radikal.ru/d39/1812/ee/f4d938fafebd.png

меняется состав полей группировки и перестает работать условие:
5 DenYuliya
 
18.12.18
11:19
6 DenYuliya
 
18.12.18
11:20
(1) чистый СКД

(3) спасибо, сейчас попробую. Но через ГДЕ, а не через ИМЕЮЩИЕ не работало точно
7 DenYuliya
 
18.12.18
11:24
(3) Условие:

ИМЕЮЩИЕ
    СУММА(ВТ_Суммы.СуммаРаздельногоУчетаНДС) <> СУММА(ВТ_Суммы.СуммаОборотДт)

Поля "ВТ_Суммы.СуммаРаздельногоУчетаНДС" и "ВТ_Суммы.СуммаОборотДт" из выборки я не убираю, они не меняются.

Меняется состав полей:
ВТ_Суммы.Счет КАК Счет,
ВТ_Суммы.Организация КАК Организация,
ВТ_Суммы.Подразделение КАК Подразделение,
ВТ_Суммы.Субконто1 КАК Субконто1,
ВТ_Суммы.Субконто2 КАК Субконто2,
ВТ_Суммы.Субконто3 КАК Субконто3,

например, я оставляю только:
ВТ_Суммы.Счет КАК Счет,
ВТ_Суммы.СуммаРаздельногоУчетаНДС,
ВТ_Суммы.СуммаОборотДт

А поля "ВТ_Суммы.Счет КАК Счет"  в условии ведь нет.

Или я неправильно поняла фразу ""то при невыбранном поле (хотя бы одном) из условия"?
8 DenYuliya
 
18.12.18
11:27
(3)
Изначально код запроса был таким:
ВЫБРАТЬ
    НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.СчетЗатрат КАК АналитикаУчетаЗатратСчетЗатрат
ПОМЕСТИТЬ ВТ_Рег
ИЗ
    РегистрНакопления.НДСРаздельныйУчет.Обороты(&НачалоПериода, &КонецПериода, День, ) КАК НДСРаздельныйУчетОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КлючиАналитикиУчетаЗатрат.СчетЗатрат КАК СчетЗатрат
ПОМЕСТИТЬ ВТ_Счета
ИЗ
    ВТ_Рег КАК ВТ_Рег
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаЗатрат КАК КлючиАналитикиУчетаЗатрат
        ПО ВТ_Рег.АналитикаУчетаЗатратСчетЗатрат = КлючиАналитикиУчетаЗатрат.СчетЗатрат

СГРУППИРОВАТЬ ПО
    КлючиАналитикиУчетаЗатрат.СчетЗатрат
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ХозрасчетныйОборотыДтКт.СчетДт КАК Счет,
    ХозрасчетныйОборотыДтКт.Организация КАК Организация,
    ХозрасчетныйОборотыДтКт.ПодразделениеДт КАК Подразделение,
    ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СубконтоДт1, НЕОПРЕДЕЛЕНО) КАК Субконто1,
    ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СубконтоДт2, НЕОПРЕДЕЛЕНО) КАК Субконто2,
    ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СубконтоДт3, НЕОПРЕДЕЛЕНО) КАК Субконто3,
    0 КАК СуммаРаздельногоУчетаНДС,
    ХозрасчетныйОборотыДтКт.СуммаОборот КАК СуммаОборотДт
ПОМЕСТИТЬ ВТ_Суммы
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
            &НачалоПериода,
            &КонецПериода,
            День,
            СчетДт В
                (ВЫБРАТЬ
                    ВТ_Счета.СчетЗатрат КАК СчетЗатрат
                ИЗ
                    ВТ_Счета КАК ВТ_Счета),
            ,
            ,
            ,
            ) КАК ХозрасчетныйОборотыДтКт

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.СчетЗатрат,
    НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.Организация,
    НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.Подразделение,
    ЕСТЬNULL(НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.Субконто1, НЕОПРЕДЕЛЕНО),
    ЕСТЬNULL(НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.Субконто2, НЕОПРЕДЕЛЕНО),
    ЕСТЬNULL(НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.Субконто3, НЕОПРЕДЕЛЕНО),
    НДСРаздельныйУчетОбороты.СуммаБезНДСПриход,
    0
ИЗ
    РегистрНакопления.НДСРаздельныйУчет.Обороты(&НачалоПериода, &КонецПериода, День, ) КАК НДСРаздельныйУчетОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Суммы.Счет КАК Счет,
    ВТ_Суммы.Организация КАК Организация,
    ВТ_Суммы.Подразделение КАК Подразделение,
    ВТ_Суммы.Субконто1 КАК Субконто1,
    ВТ_Суммы.Субконто2 КАК Субконто2,
    ВТ_Суммы.Субконто3 КАК Субконто3,
    СУММА(ВТ_Суммы.СуммаОборотДт) КАК СуммаОборотДт,
    СУММА(ВТ_Суммы.СуммаРаздельногоУчетаНДС) КАК СуммаРаздельногоУчетаНДС
ИЗ
    ВТ_Суммы КАК ВТ_Суммы

СГРУППИРОВАТЬ ПО
    ВТ_Суммы.Организация,
    ВТ_Суммы.Подразделение,
    ВТ_Суммы.Субконто1,
    ВТ_Суммы.Субконто2,
    ВТ_Суммы.Субконто3,
    ВТ_Суммы.Счет

ИМЕЮЩИЕ
    СУММА(ВТ_Суммы.СуммаРаздельногоУчетаНДС) <> СУММА(ВТ_Суммы.СуммаОборотДт)

Условие не в фигурных скобках. Это вы имеете в виду? Ну вот оно не работает.
После этого я начала извращаться с автозаполнением и пиханием условий и полей в компоновку.
9 DenYuliya
 
18.12.18
11:30
(1) я бы даже сказала "Собранное и оттестированное в консоли, а потом запихнутое в СКД" ))))
10 toypaul
 
гуру
18.12.18
11:31
для начала убрать из условий все фигурные скобки. а почему условие не работает это уже совершенно другой разговор.
11 toypaul
 
гуру
18.12.18
11:33
суммы заключить в ЕСТЬNULL(

почему-то для субконто это сделано, а для сумм нет. может тогда и условие заработает как надо
12 DenYuliya
 
18.12.18
11:34
(10) в (8) (это изначальная "редакция") без фигурных скобок...
13 DenYuliya
 
18.12.18
11:46
(11) Не помогло...

ВЫБРАТЬ
    НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.СчетЗатрат КАК АналитикаУчетаЗатратСчетЗатрат
ПОМЕСТИТЬ ВТ_Рег
ИЗ
    РегистрНакопления.НДСРаздельныйУчет.Обороты(&НачалоПериода, &КонецПериода, День, ) КАК НДСРаздельныйУчетОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КлючиАналитикиУчетаЗатрат.СчетЗатрат КАК СчетЗатрат
ПОМЕСТИТЬ ВТ_Счета
ИЗ
    ВТ_Рег КАК ВТ_Рег
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаЗатрат КАК КлючиАналитикиУчетаЗатрат
        ПО ВТ_Рег.АналитикаУчетаЗатратСчетЗатрат = КлючиАналитикиУчетаЗатрат.СчетЗатрат

СГРУППИРОВАТЬ ПО
    КлючиАналитикиУчетаЗатрат.СчетЗатрат
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ХозрасчетныйОборотыДтКт.СчетДт КАК Счет,
    ХозрасчетныйОборотыДтКт.Организация КАК Организация,
    ХозрасчетныйОборотыДтКт.ПодразделениеДт КАК Подразделение,
    ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СубконтоДт1, НЕОПРЕДЕЛЕНО) КАК Субконто1,
    ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СубконтоДт2, НЕОПРЕДЕЛЕНО) КАК Субконто2,
    ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СубконтоДт3, НЕОПРЕДЕЛЕНО) КАК Субконто3,
    0 КАК СуммаРаздельногоУчетаНДС,
    ЕСТЬNULL(ХозрасчетныйОборотыДтКт.СуммаОборот, 0) КАК СуммаОборотДт
ПОМЕСТИТЬ ВТ_Суммы
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(
            &НачалоПериода,
            &КонецПериода,
            День,
            СчетДт В
                (ВЫБРАТЬ
                    ВТ_Счета.СчетЗатрат КАК СчетЗатрат
                ИЗ
                    ВТ_Счета КАК ВТ_Счета),
            ,
            ,
            ,
            ) КАК ХозрасчетныйОборотыДтКт

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.СчетЗатрат,
    НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.Организация,
    НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.Подразделение,
    ЕСТЬNULL(НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.Субконто1, НЕОПРЕДЕЛЕНО),
    ЕСТЬNULL(НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.Субконто2, НЕОПРЕДЕЛЕНО),
    ЕСТЬNULL(НДСРаздельныйУчетОбороты.АналитикаУчетаЗатрат.Субконто3, НЕОПРЕДЕЛЕНО),
    ЕСТЬNULL(НДСРаздельныйУчетОбороты.СуммаБезНДСПриход, 0),
    0
ИЗ
    РегистрНакопления.НДСРаздельныйУчет.Обороты(&НачалоПериода, &КонецПериода, День, ) КАК НДСРаздельныйУчетОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Суммы.Счет КАК Счет,
    ВТ_Суммы.Организация КАК Организация,
    ВТ_Суммы.Подразделение КАК Подразделение,
    ВТ_Суммы.Субконто1 КАК Субконто1,
    ВТ_Суммы.Субконто2 КАК Субконто2,
    ВТ_Суммы.Субконто3 КАК Субконто3,
    СУММА(ВТ_Суммы.СуммаОборотДт) КАК СуммаОборотДт,
    СУММА(ВТ_Суммы.СуммаРаздельногоУчетаНДС) КАК СуммаРаздельногоУчетаНДС
ИЗ
    ВТ_Суммы КАК ВТ_Суммы

СГРУППИРОВАТЬ ПО
    ВТ_Суммы.Организация,
    ВТ_Суммы.Подразделение,
    ВТ_Суммы.Субконто1,
    ВТ_Суммы.Субконто2,
    ВТ_Суммы.Субконто3,
    ВТ_Суммы.Счет

ИМЕЮЩИЕ
    СУММА(ВТ_Суммы.СуммаРаздельногоУчетаНДС) <> СУММА(ВТ_Суммы.СуммаОборотДт)
14 DenYuliya
 
18.12.18
11:47
(11) потому что для субконто криво группировалось без ЕСТЬNULL, для Сумм такой проблемы не было.