Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
01 фев 2023, 18:06

Не работает ЕстьNULL в СКД

Автор Redempty, 26 сен 2022, 06:02

0 Пользователей и 1 гость просматривают эту тему.

Redempty

Здравствуйте, в течение 4-ех дней уже бьюсь над задачей, перелопатил большое количество форумов, схожих обсуждений, книг и тем не менее, не могу справиться с задачей. Прошу вас, максимально подробно ответить на вопрос. Любители поумничать и рассказать о том где и что почитать - можете не засорять ветку, нужны ответы по делу, а не бесполезные язвительные вбросы. Чтож, сама задача стоит так:
Я выбираю из регистра накопления обороты по продажам, пытаюсь свести значения за разные года в один отчет. Реализовал это через СКД, сделав три запроса. Мне нужно, чтобы в тех полях, где значение регистра отсутствует на текущий год, выводилось не пустое поле, а 0 и при этом оно считалось. Цель в том, чтобы получить разницу между годами и в итоге получить прибыль/убыль от продаж продукции. Саму формулу расчета добавил в ресурсы.
Запрос для первого года:
ВЫБРАТЬ
ПродажиОбороты.Номенклатура,
ПродажиОбороты.Контрагент,
ЕСТЬNULL(ПродажиОбороты.СтоимостьОборот, 0) КАК СтоимостьОборот,
ПродажиОбороты.Организация,
ЕстьNull(ПродажиОбороты.НДСОборот, 0) КАК НДСОборот
ИЗ
РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаОтчета, ГОД, -1), ДОБАВИТЬКДАТЕ(&ДатаОтчета, ДЕНЬ, -1), , ) КАК ПродажиОбороты
Запрос для второго года:
ВЫБРАТЬ
ПродажиОбороты.Номенклатура КАК Номенклатура,
ПродажиОбороты.Контрагент КАК Контрагент,
ЕСТЬNULL(ПродажиОбороты.СтоимостьОборот, 0) КАК СтоимостьОборот,
ПродажиОбороты.Организация КАК Организация,
ЕСТЬNULL(ПродажиОбороты.НДСОборот, 0) КАК НДСОборот
{ВЫБРАТЬ
Номенклатура.* КАК НоменклатураПред,
Контрагент.* КАК КонтрагентПред,
СтоимостьОборот КАК СтоимостьОборотПред,
Организация.* КАК ОрганизацияПред,
НДСОборот КАК НДСОборотПред}
ИЗ
РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаОтчета, ГОД, -2), ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(&ДатаОтчета, ГОД, -1), ДЕНЬ, -1), , ) КАК ПродажиОбороты

Запрос для общего набора, который является родителем для двух вышеуказанных:
ВЫБРАТЬ
ПродажиОбороты.Номенклатура КАК Номенклатура,
ПродажиОбороты.Контрагент КАК Контрагент,
ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот,
ПродажиОбороты.Организация КАК Организация,
ПродажиОбороты.НДСОборот КАК НДСОборот
{ВЫБРАТЬ
Номенклатура.* КАК НоменклатураОбщая,
Контрагент.* КАК КонтрагентОбщий,
Организация.* КАК ОрганизацияОбщая,
СтоимостьОборот КАК СтоимостьОборотОбщая,
НДСОборот КАК НДСОборотОбщий}
ИЗ
РегистрНакопления.Продажи.Обороты(ДОБАВИТЬКДАТЕ(&ДатаОтчета, ГОД, -2), , , ) КАК ПродажиОбороты

Пример вычисления поля в ресурсах:
(ВычислитьВыражение("Сумма(СтоимостьОборот)","НоменклатураОбщая", "ОбщийИтог")-ВычислитьВыражение("Сумма(НДСОборот)","НоменклатураОбщая", "ОбщийИтог")) - (ВычислитьВыражение("Сумма(СтоимостьОборотПред)","НоменклатураОбщая", "ОбщийИтог")-ВычислитьВыражение("Сумма(НДСОборотПред)","НоменклатураОбщая", "ОбщийИтог"))
Повторюсь, в итоговом отчете считаются поля корректно, только для тех строк, где заполнены оба значения. Если где-то пустое значение, то расчет не производится. Изгалялся уже разными способами, ничего не помогло.

Теги: 1С 8.2 

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск