По неведомой причине выводятся разные данные в консоли запросов и отчете на СКД; идентичные поля работают по-разному
Всем доброго времени суток. Буду очень благодарен за помощь, потому что уже неделю ковыряюсь с этой штукой и идей, в чем может быть дело, ровно 0.
Ситуация такова: есть отчет на СКД (набор данных - Запрос), ниже привожу кусок значимой части этого запроса. Если запускать запрос через консоль (в том числе тот запрос, что исполняется в самом СКД, если выдергивать его через отладчик), то все значения по полям, связанным с НДФЛ, выводятся и рассчитываются верно. Самое интересное начинается при попытке запустить отчет: все выводится верно, кроме того, что в качестве значение поля "Проверка НДФЛ НУ" попросту дублируется значение поля "Разница НДФЛ БУ". Логично было бы предположить, что я ошибся в указании для расчета Ресурсов по этим полям, но нет - я кучу раз перепроверял все наименования и в запросе, и в самом макете СКД, но там все верно (прикладываю скрины: 1 - вывод данных в отчете, где значения в колонках дублируются; 2 - вывод данных в консоли; 3 - вкладка Ресурсов в СКД, где видны выражения и выбранные поля для них). Пробовал также создавать отчет с нуля на случай, если бы дело было в кэше, но там происходит абсолютно та же ситуация. Я правда в тупике, буду очень благодарен за любые наводки и мысли, за свежий взгляд на происходящее.
Ситуация такова: есть отчет на СКД (набор данных - Запрос), ниже привожу кусок значимой части этого запроса. Если запускать запрос через консоль (в том числе тот запрос, что исполняется в самом СКД, если выдергивать его через отладчик), то все значения по полям, связанным с НДФЛ, выводятся и рассчитываются верно. Самое интересное начинается при попытке запустить отчет: все выводится верно, кроме того, что в качестве значение поля "Проверка НДФЛ НУ" попросту дублируется значение поля "Разница НДФЛ БУ". Логично было бы предположить, что я ошибся в указании для расчета Ресурсов по этим полям, но нет - я кучу раз перепроверял все наименования и в запросе, и в самом макете СКД, но там все верно (прикладываю скрины: 1 - вывод данных в отчете, где значения в колонках дублируются; 2 - вывод данных в консоли; 3 - вкладка Ресурсов в СКД, где видны выражения и выбранные поля для них). Пробовал также создавать отчет с нуля на случай, если бы дело было в кэше, но там происходит абсолютно та же ситуация. Я правда в тупике, буду очень благодарен за любые наводки и мысли, за свежий взгляд на происходящее.
ВЫБРАТЬ
НАЧАЛОПЕРИОДА(ЕСТЬ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.
Можешь отдельно вывести данные из полей "проверки и разницы"?
Функция "ЕСТЬNULL" не отрабатывает потому что это пуская строка. и не может по этому подставить 0.
Можешь отдельно вывести данные из полей "проверки и разницы"?
(2) Я прошу прощения, но как это может быть пустая строка, если значение этого поля - сумма других числовых полей, то есть это в исходном виде будет как минимум 0, а при объединении таблиц, если уж данных по физ.лицу нет, то это как раз и будет NULL?
Выводил отдельно в отчете данные по проверке, без разницы - абсолютно тот же результат. Заметил как раз, что это "дублирование" поле с Разницей в тот момент тогда, когда решил все собираемые в рамках этого запроса поля вывести вместе... Если надо, могу кинуть скрин, но там все то же самое будет...
Выводил отдельно в отчете данные по проверке, без разницы - абсолютно тот же результат. Заметил как раз, что это "дублирование" поле с Разницей в тот момент тогда, когда решил все собираемые в рамках этого запроса поля вывести вместе... Если надо, могу кинуть скрин, но там все то же самое будет...
СКД в зависимости от настроек может модифицировать исходный текст запроса.
Наверняка в настройках схемы на вкладке "Наборы данных" включено "Автозаполнение".
В этом случае конструктор автоматически заполнит поля наборов и параметры.
Некоторые автопараметры имеют определенные наименования.
Как например, "НачалоПериода" и "КонецПериода" для виртуальных таблиц оборотов и остатков и оборотов.
И если в запросе СКД для одной таблицы они явно заданы в виде параметров,
то во вторую они подставятся при генерации макета компоновки
Наверняка в настройках схемы на вкладке "Наборы данных" включено "Автозаполнение".
В этом случае конструктор автоматически заполнит поля наборов и параметры.
Некоторые автопараметры имеют определенные наименования.
Как например, "НачалоПериода" и "КонецПериода" для виртуальных таблиц оборотов и остатков и оборотов.
И если в запросе СКД для одной таблицы они явно заданы в виде параметров,
то во вторую они подставятся при генерации макета компоновки
(4) Да, зависит от вопроса.
Когда делаешь выполнение скд программно, то после получения макета компоновки (или выполнения инициализации процессором компоновки. Точно не помню) можно посмотреть итоговый запрос который скд сама адаптирует. Кстате в этот момент подставляются параметры типо начало и конец периода виртуальных таблиц регистров накопления и тд.
В отладке можно дернуть этот текст и потом потыкать в консоли
Когда делаешь выполнение скд программно, то после получения макета компоновки (или выполнения инициализации процессором компоновки. Точно не помню) можно посмотреть итоговый запрос который скд сама адаптирует. Кстате в этот момент подставляются параметры типо начало и конец периода виртуальных таблиц регистров накопления и тд.
В отладке можно дернуть этот текст и потом потыкать в консоли
(3) Я понимаю этот нюанс насчет СКД, потому и уточнил сразу в теме, что я выдергивал текст запроса через отладчик - именно тот, что выполняется самой СКД. Результаты все те же: в консоли правильные данные, в отчете - "дублирование" именно одного этого несчастного поля. "Автозаполнение", к слову, выключено:)
Жаль конечно, но чудес ведь в нашей реальности нет.
Поэтому, либо тексты запросов отличаются, либо параметры, либо входящие ВТ (если есть), либо права (но тут вроде он оно).
Дели запрос на отдельные части и проверяй по отдельности
Поэтому, либо тексты запросов отличаются, либо параметры, либо входящие ВТ (если есть), либо права (но тут вроде он оно).
Дели запрос на отдельные части и проверяй по отдельности
(5) Это логичное предположение, но я не совсем понимаю, как текста запросов по итогу могут отключаться, если я как раз запускаю в консоли запросов тот запрос, что формируется при исполнении СКД - со всеми параметрами, которые используются при формировании отчета? Это было бы весьма логично, но как мне тогда еще найти "тот самый запрос"?
Права вряд ли влияют - я запускаю под полными, да и....Опять же, эти поля суммируются на основании других полей в запросе, которые собираются выше (очень большой запрос, его целиком не имеет смысла приводить) - тогда бы и с теми данными были проблемы, но там все ровно, как и с аналогичными полями проверок, разниц НДФЛ, собираемых далее в ВТ.
Делить запрос в самом отчете и пытаться так это проверить?
Права вряд ли влияют - я запускаю под полными, да и....Опять же, эти поля суммируются на основании других полей в запросе, которые собираются выше (очень большой запрос, его целиком не имеет смысла приводить) - тогда бы и с теми данными были проблемы, но там все ровно, как и с аналогичными полями проверок, разниц НДФЛ, собираемых далее в ВТ.
Делить запрос в самом отчете и пытаться так это проверить?
(9) В общем, я ковырялся по мере загрузки по работе там - и дело точно не в ВТ. В той части, где рождается вообще это "проблемное" поле - Проверка НДФЛ НУ - я подставил сначала просто значение другого поля, затем - вообще СУММА(0), и ничего: результат все тот же - в отчет тянется дублированное значение поля "Разница НДФЛ БУ". Притом, повторюсь, в консоли запросов такого поведения не наблюдается. Я подозреваю, что дело в таком случае исключительно в СКД, но даже не на уровне запроса - а на каком именно уровне, я без понятия, это пока самое загадочное, что случалось за все время моей работы, пожалуй...
(13) Спасибо за идею, правда. Но, к сожалению, и это не помогло. Я все еще не разгадал секрет этого непонятного поведения системы. Самое странное в этом всем то, что абсолютно аналогичные поля, собираемые в тех же ВТ, выводимые по тем же правилам - они работают корректно - все, кроме этого несчастного поля "Проверка НДФЛ НУ". Сломал голову уже, но так и не нашел пока причину
Адекватного решения, как и объяснения ситуации я так и не нашел. Но на всякий случай, как вообще удалось "решить" проблему: ни создание нового файла отчета, ни переименование поля, ни попытки изменить его значение на разных уровнях (сам запрос, ресурсы) - никаких результатов не приносили. Что же помогло? Просто создать новое, абсолютно идентичное поле с совершенно другим названием. Как? Почему? Я не понимаю, но так хотя бы правильные данные выводятся. Всем большое спасибо за участие. Это пока все еще самое неадекватное, что я встречал в 1С за время своей работы
(17) Первым делом подумал на него, но, увы, дело вряд ли в этом. Отчет я переименовывал, создавал с 0 новый файл вообще + пробовал его на разных базах - это невероятно странное поведение наблюдалось, несмотря на все танцы с бубнами. Как я и сказал, помогло только добавление нового абсолютно аналогичного поля. До сих пор без понятия, что это было))
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот