Всем доброго времени суток. Буду очень благодарен за помощь, потому что уже неделю ковыряюсь с этой штукой и идей, в чем может быть дело, ровно 0.
Ситуация такова: есть отчет на СКД (набор данных - Запрос), ниже привожу кусок значимой части этого запроса. Если запускать запрос через консоль (в том числе тот запрос, что исполняется в самом СКД, если выдергивать его через отладчик), то все значения по полям, связанным с НДФЛ, выводятся и рассчитываются верно. Самое интересное начинается при попытке запустить отчет: все выводится верно, кроме того, что в качестве значение поля "Проверка НДФЛ НУ" попросту дублируется значение поля "Разница НДФЛ БУ". Логично было бы предположить, что я ошибся в указании для расчета Ресурсов по этим полям, но нет - я кучу раз перепроверял все наименования и в запросе, и в самом макете СКД, но там все верно (прикладываю скрины: 1 - вывод данных в отчете, где значения в колонках дублируются; 2 - вывод данных в консоли; 3 - вкладка Ресурсов в СКД, где видны выражения и выбранные поля для них). Пробовал также создавать отчет с нуля на случай, если бы дело было в кэше, но там происходит абсолютно та же ситуация. Я правда в тупике, буду очень благодарен за любые наводки и мысли, за свежий взгляд на происходящее.

```1c
    ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(ЕСТЬNULL(ВТ_Итоги.МесяцНалоговогоПериода, ВТ_Итоги.Период), ГОД) КАК ПериодГод,
    ВТ_Итоги.Организация КАК Организация,
    ВТ_Итоги.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
    ВТ_Итоги.ФизическоеЛицо КАК ФизическоеЛицо,
    СУММА(ВТ_Итоги.Доход) - (СУММА(ВТ_Итоги.Вычет) + СУММА(ВТ_Итоги.СтандартныйВычетНУ) + СУММА(ВТ_Итоги.ИмущественныйВычетНУ)) КАК НалоговаяБазаНУ,
    СУММА(ВТ_Итоги.СуммаНачисленоБУ) + СУММА(ВТ_Итоги.СуммаНД) - (СУММА(ВТ_Итоги.ВычетНУ) + СУММА(ВТ_Итоги.СтандартныйВычет) + СУММА(ВТ_Итоги.ИмущественныйВычет)) КАК НалоговаяБазаБУ,
    СУММА(ВТ_Итоги.СуммаНалога) КАК СуммаНалога,
    СУММА(ВТ_Итоги.Доход) КАК СуммаДохода,
    СУММА(ВТ_Итоги.Вычет + ВТ_Итоги.ИмущественныйВычетНУ + ВТ_Итоги.СтандартныйВычетНУ) КАК СуммаВычетНУ,
    СУММА(ВТ_Итоги.СуммаНачисленоБУ) КАК СуммаНачисленоБУ,
    СУММА(ВТ_Итоги.СуммаНачислено) + СУММА(ВТ_Итоги.СуммаНД) КАК СуммаНачисленоНУ,
    СУММА(ВТ_Итоги.ВычетНУ + ВТ_Итоги.ИмущественныйВычет + ВТ_Итоги.СтандартныйВычет) КАК СуммаВычетБУ
    ПОМЕСТИТЬ ВТ_НалоговаяБаза
    ИЗ
    ВТ_Итоги КАК ВТ_Итоги

    СГРУППИРОВАТЬ ПО
    НАЧАЛОПЕРИОДА(ЕСТЬNULL(ВТ_Итоги.МесяцНалоговогоПериода, ВТ_Итоги.Период), ГОД),
    ВТ_Итоги.Организация,
    ВТ_Итоги.ГоловнаяОрганизация,
    ВТ_Итоги.ФизическоеЛицо
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_НалоговаяБаза.ПериодГод КАК ПериодГод,
    ВТ_НалоговаяБаза.Организация КАК Организация,
    ВТ_НалоговаяБаза.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
    ВТ_НалоговаяБаза.ФизическоеЛицо КАК ФизическоеЛицо,
    ВЫБОР
    КОГДА ВТ_НалоговаяБаза.ПериодГод < ДАТАВРЕМЯ(2025, 1, 1)
    ТОГДА ВТ_НалоговаяБаза.НалоговаяБазаНУ * 13 / 100
    ИНАЧЕ ВТ_НалоговаяБаза.НалоговаяБазаНУ * 15 / 100
    КОНЕЦ КАК ПроверкаНДФЛ_НУ,
    ВЫБОР
    КОГДА ВТ_НалоговаяБаза.ПериодГод < ДАТАВРЕМЯ(2025, 1, 1)
    ТОГДА ВЫРАЗИТЬ(ВТ_НалоговаяБаза.СуммаНалога - (ВТ_НалоговаяБаза.СуммаДохода - ВТ_НалоговаяБаза.СуммаВычетНУ) * (13 / 100) КАК ЧИСЛО(15, 0))
    ИНАЧЕ ВЫРАЗИТЬ(ВТ_НалоговаяБаза.СуммаНалога - (ВТ_НалоговаяБаза.СуммаДохода - ВТ_НалоговаяБаза.СуммаВычетНУ) * (15 / 100) КАК ЧИСЛО(15, 0))
    КОНЕЦ КАК РазницаНДФЛ_НУ,
    ВЫБОР
    КОГДА ВТ_НалоговаяБаза.ПериодГод < ДАТАВРЕМЯ(2025, 1, 1)
    ТОГДА ВТ_НалоговаяБаза.НалоговаяБазаБУ * 13 / 100
    ИНАЧЕ ВТ_НалоговаяБаза.НалоговаяБазаБУ * 15 / 100
    КОНЕЦ КАК ПроверкаНДФЛ_БУ,
    ВЫБОР
    КОГДА ВТ_НалоговаяБаза.ПериодГод < ДАТАВРЕМЯ(2025, 1, 1)
    ТОГДА ВЫРАЗИТЬ(ВТ_НалоговаяБаза.СуммаНачисленоБУ - (ВТ_НалоговаяБаза.СуммаНачисленоНУ - ВТ_НалоговаяБаза.СуммаВычетБУ) * (13 / 100) КАК ЧИСЛО(15, 0))
    ИНАЧЕ ВЫРАЗИТЬ(ВТ_НалоговаяБаза.СуммаНачисленоБУ - (ВТ_НалоговаяБаза.СуммаНачисленоНУ - ВТ_НалоговаяБаза.СуммаВычетБУ) * (15 / 100) КАК ЧИСЛО(15, 0))
    КОНЕЦ КАК РазницаНДФЛ_БУ

    ПОМЕСТИТЬ ВТ_ПроверкаНДФЛ
    ИЗ
    ВТ_НалоговаяБаза КАК ВТ_НалоговаяБаза
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_ПроверкаНДФЛ.Организация КАК Организация,
    ВТ_ПроверкаНДФЛ.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
    ВТ_ПроверкаНДФЛ.ФизическоеЛицо КАК ФизическоеЛицо,
    СУММА(ВТ_ПроверкаНДФЛ.ПроверкаНДФЛ_НУ) КАК Сумма_ПроверкаНДФЛ_НУ,
    СУММА(ВТ_ПроверкаНДФЛ.ПроверкаНДФЛ_БУ) КАК Сумма_ПроверкаНДФЛ_БУ,
    СУММА(ВТ_ПроверкаНДФЛ.РазницаНДФЛ_НУ) КАК Сумма_РазницаНДФЛ_НУ,
    СУММА(ВТ_ПроверкаНДФЛ.РазницаНДФЛ_БУ) КАК Сумма_РазницаНДФЛ_БУ
    ПОМЕСТИТЬ ВТ_СуммаПроверокНДФЛ
    ИЗ
    ВТ_ПроверкаНДФЛ КАК ВТ_ПроверкаНДФЛ

    СГРУППИРОВАТЬ ПО
    ВТ_ПроверкаНДФЛ.Организация,
    ВТ_ПроверкаНДФЛ.ГоловнаяОрганизация,
    ВТ_ПроверкаНДФЛ.ФизическоеЛицо
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ВТ_Итоги.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
    ВТ_Итоги.Организация КАК Организация,
    ВТ_Итоги.ФизическоеЛицо КАК ФизическоеЛицо,
    ЕСТЬNULL(ВТ_ПроверкаНДФЛ.РазницаНДФЛ_БУ, 0) КАК Год_РазницаНДФЛ_БУ,
    ЕСТЬNULL(ВТ_ПроверкаНДФЛ.РазницаНДФЛ_НУ, 0) КАК Год_РазницаНДФЛ_НУ,
    ЕСТЬNULL(ВТ_СуммаПроверокНДФЛ.Сумма_ПроверкаНДФЛ_НУ, 0) КАК ПроверкаНДФЛ_НУ,
    ЕСТЬNULL(ВТ_СуммаПроверокНДФЛ.Сумма_ПроверкаНДФЛ_БУ, 0) КАК ПроверкаНДФЛ_БУ,
    ЕСТЬNULL(ВТ_СуммаПроверокНДФЛ.Сумма_РазницаНДФЛ_НУ, 0) КАК РазницаНДФЛ_НУ,
    ЕСТЬNULL(ВТ_СуммаПроверокНДФЛ.Сумма_РазницаНДФЛ_БУ, 0) КАК РазницаНДФЛ_БУ

    ИЗ
    ВТ_Итоги КАК ВТ_Итоги
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПроверкаНДФЛ КАК ВТ_ПроверкаНДФЛ
    ПО (ВТ_ПроверкаНДФЛ.Организация = ВТ_Итоги.Организация)
    И (ВТ_ПроверкаНДФЛ.ГоловнаяОрганизация = ВТ_Итоги.ГоловнаяОрганизация)
    И (ВТ_ПроверкаНДФЛ.ФизическоеЛицо = ВТ_Итоги.ФизическоеЛицо)
    И (ВТ_ПроверкаНДФЛ.ПериодГод = НАЧАЛОПЕРИОДА(ЕСТЬNULL(ВТ_Итоги.МесяцНалоговогоПериода, ВТ_Итоги.Период), ГОД))
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СуммаПроверокНДФЛ КАК ВТ_СуммаПроверокНДФЛ
    ПО (ВТ_СуммаПроверокНДФЛ.Организация = ВТ_Итоги.Организация)
    И (ВТ_СуммаПроверокНДФЛ.ГоловнаяОрганизация = ВТ_Итоги.ГоловнаяОрганизация)
    И (ВТ_СуммаПроверокНДФЛ.ФизическоеЛицо = ВТ_Итоги.ФизическоеЛицо)
    ГДЕ
    ВТ_Итоги.ГоловнаяОрганизация = &П
```
---
Адекватного решения, как и объяснения ситуации я так и не нашел. Но на всякий случай, как вообще удалось "решить" проблему: ни создание нового файла отчета, ни переименование поля, ни попытки изменить его значение на разных уровнях (сам запрос, ресурсы) - никаких результатов не приносили. Что же помогло? Просто создать новое, абсолютно идентичное поле с совершенно другим названием. Как? Почему? Я не понимаю, но так хотя бы правильные данные выводятся. Всем большое спасибо за участие. Это пока все еще самое неадекватное, что я встречал в 1С за время своей работы
---
Если я правильно понял твою проблему, то она не дублирует. в ней просто нет данных.
Функция "ЕСТЬNULL" не отрабатывает потому что это пуская строка. и не может по этому подставить 0.

Можешь отдельно вывести данные из полей "проверки и разницы"?
---
Я прошу прощения, но как это может быть пустая строка, если значение этого поля - сумма других числовых полей, то есть это в исходном виде будет как минимум 0, а при объединении таблиц, если уж данных по физ.лицу нет, то это как раз и будет NULL?

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

Когда делаешь выполнение скд программно, то после получения макета компоновки (или выполнения инициализации процессором компоновки. Точно не помню) можно посмотреть итоговый запрос который скд сама адаптирует. Кстате в этот момент подставляются параметры типо начало и конец периода виртуальных таблиц регистров накопления и тд.

В отладке можно дернуть этот текст и потом потыкать в консоли
---
Я понимаю этот нюанс насчет СКД, потому и уточнил сразу в теме, что я выдергивал текст запроса через отладчик - именно тот, что выполняется самой СКД. Результаты все те же: в консоли правильные данные, в отчете - "дублирование" именно одного этого несчастного поля. "Автозаполнение", к слову, выключено:)
---
Жаль конечно, но чудес ведь в нашей реальности нет.
Поэтому, либо тексты запросов отличаются, либо параметры, либо входящие ВТ (если есть), либо права (но тут вроде он оно).
Дели запрос на отдельные части и проверяй по отдельности
---
Это логичное предположение, но я не совсем понимаю, как текста запросов по итогу могут отключаться, если я как раз запускаю в консоли запросов тот запрос, что формируется при исполнении СКД - со всеми параметрами, которые используются при формировании отчета? Это было бы весьма логично, но как мне тогда еще найти "тот самый запрос"?
Права вряд ли влияют - я запускаю под полными, да и....Опять же, эти поля суммируются на основании других полей в запросе, которые собираются выше (очень большой запрос, его целиком не имеет смысла приводить) - тогда бы и с теми данными были проблемы, но там все ровно, как и с аналогичными полями проверок, разниц НДФЛ, собираемых далее в ВТ.
Делить запрос в самом отчете и пытаться так это проверить?
---
Дели на составляющие, сперва на ВТ. Выгружай каждую ВТ в таблицу и сравнивай. Если отличается, то у этого в конце концов будет причина.
---
В общем, я ковырялся по мере загрузки по работе там - и дело точно не в ВТ. В той части, где рождается вообще это "проблемное" поле - Проверка НДФЛ НУ - я подставил сначала просто значение другого поля, затем - вообще СУММА(0), и ничего: результат все тот же - в отчет тянется дублированное значение поля "Разница НДФЛ БУ". Притом, повторюсь, в консоли запросов такого поведения не наблюдается. Я подозреваю, что дело в таком случае исключительно в СКД, но даже не на уровне запроса - а на каком именно уровне, я без понятия, это пока самое загадочное, что случалось за все время моей работы, пожалуй...
---
отчет уже был добавлен как дополнительный?
---
Нет, запускаю как внешний. Плюс ко всему, сейчас вообще использую заново, с нуля созданный, файл. Дело, к сожалению, не в этом
---
Попробуй поля в СКД сделать обязательными
---
Спасибо за идею, правда. Но, к сожалению, и это не помогло. Я все еще не разгадал секрет этого непонятного поведения системы. Самое странное в этом всем то, что абсолютно аналогичные поля, собираемые в тех же ВТ, выводимые по тем же правилам - они работают корректно - все, кроме этого несчастного поля "Проверка НДФЛ НУ". Сломал голову уже, но так и не нашел пока причину
---
Адекватного решения, как и объяснения ситуации я так и не нашел. Но на всякий случай, как вообще удалось "решить" проблему: ни создание нового файла отчета, ни переименование поля, ни попытки изменить его значение на разных уровнях (сам запрос, ресурсы) - никаких результатов не приносили. Что же помогло? Просто создать новое, абсолютно идентичное поле с совершенно другим названием. Как? Почему? Я не понимаю, но так хотя бы правильные данные выводятся. Всем большое спасибо за участие. Это пока все еще самое неадекватное, что я встречал в 1С за время своей работы
---
Еще помогает переименование отчета/обработки или очистка кеша.
---
Первым делом подумал на него, но, увы, дело вряд ли в этом. Отчет я переименовывал, создавал с 0 новый файл вообще + пробовал его на разных базах - это невероятно странное поведение наблюдалось, несмотря на все танцы с бубнами. Как я и сказал, помогло только добавление нового абсолютно аналогичного поля. До сих пор без понятия, что это было))