Имя: Пароль:
1C
1С v8
Не выводится корректно поле из вычисляемых полей в СКД
0 crisalis
 
03.02.20
11:56
Доброе время суток уважаемые, хочу на СКД (УТ 10.3 платформа 1С:Предприятие 8.3 (8.3.10.2580), файловый вариант) получить вычисляемое поле INCOME AMMOUNTS (Приход количество + Нач.Остаток количество) * Цену)
Добавил поле на вкладке вычисляемые поля , написал выражение (Приход + НачальныйОстаток) * Цена . Добавил его в ресурсы, добавил в Выбранные Поля в настройках . Формирую все выводится только как то не до конца если Приход заполнен тогда выводит формулу если нет тогда нет ( на фото ). Что может быть, в какую сторону копать? Дайте пинка пожалуйста. Заранее благодарен за любую помощь.

Фото: <a href="https://yadi.sk/i/er78gbkD_KTxqA">Скрин шот вывода</a>

Пробовал написать вот такое выражение в вычисляемые поля:  ВЫБОР КОГДА (Приход + НачальныйОстаток) * Цена <> 0 ТОГДА (Приход + НачальныйОстаток) * Цена ИНАЧЕ 0 КОНЕЦ , но все равно некорректно рассчитывает формулу.
1 unbred
 
03.02.20
12:11
в какую сторону копать?// <code>ISNULL</code>
2 Ns33
 
03.02.20
12:25
Ну да, в запросе сделай все ресурсы, которых может не быть, как ЕСТЬNULL(ИмяРесурса,0)
3 crisalis
 
03.02.20
13:02
(1) , (2) Ну это само собой разумеется . Вот запрос:

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток, 0) КАК НачальныйОстаток,
    ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток, 0) КАК КонечныйОстаток
ПОМЕСТИТЬ Остатки
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты({(&НачалоПериода)}, {(&КонецПериода)}, Период, ДвиженияИГраницыПериода, ) КАК ТоварыНаСкладахОстаткиИОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЗакупкиОбороты.Номенклатура,
    ЗакупкиОбороты.ХарактеристикаНоменклатуры,
    ЗакупкиОбороты.СтатусПартии,
    ЗакупкиОбороты.ЗаказПоставщику,
    ЗакупкиОбороты.ДоговорКонтрагента,
    ЗакупкиОбороты.ДокументЗакупки,
    ЗакупкиОбороты.Проект,
    ЗакупкиОбороты.Подразделение,
    ЗакупкиОбороты.Организация,
    ЗакупкиОбороты.Контрагент,
    ЕСТЬNULL(ЗакупкиОбороты.КоличествоОборот, 0) КАК Приход,
    ЕСТЬNULL(ЗакупкиОбороты.СтоимостьОборот, 0) КАК СуммаПриход,
    ЕСТЬNULL(ЗакупкиОбороты.НДСОборот, 0) КАК ПриходНДС
ПОМЕСТИТЬ Закупки
ИЗ
    РегистрНакопления.Закупки.Обороты({(&НачалоПериода)}, {(&КонецПериода)}, Регистратор, ) КАК ЗакупкиОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
    ЦеныНоменклатуры.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    ЦеныНоменклатуры.ТипЦен КАК ТипЦен,
    ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК Цена
ПОМЕСТИТЬ Цены
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&КонецПериода)}, ТипЦен = &ВыбТипЦен) КАК ЦеныНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Продажи.Номенклатура,
    Продажи.ДокументПродажи,
    Продажи.Расход,
    Продажи.СуммаПродажи,
    Продажи.СуммаПродажиБезСкидки,
    Остатки.НачальныйОстаток,
    Остатки.КонечныйОстаток,
    Закупки.Приход,
    Цены.Цена
ИЗ
    Продажи КАК Продажи
        ЛЕВОЕ СОЕДИНЕНИЕ Остатки КАК Остатки
        ПО Продажи.Номенклатура = Остатки.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ Закупки КАК Закупки
        ПО Продажи.Номенклатура = Закупки.Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ Цены КАК Цены
        ПО Продажи.Номенклатура = Цены.Номенклатура

4 vicof
 
03.02.20
13:03
Не в тех запросах естьnull. Теперь ответь на вопрос, зачем он нужен.
5 Ns33
 
03.02.20
13:26
(0) Вот тебе попроще задание, сделай таблицу с колонками "Номенклатура, КвоЗакупки, КвоПрдажи" в консоли запросов из 2-х подготовленных таблиц:

ВЫБРАТЬ
    "Валенки" КАК Номенклатура,
    1 КАК КоличествоЗакупки
ПОМЕСТИТЬ ВТЗакупки

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

ВЫБРАТЬ
    "Стол",
    2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    "Колоши" КАК Номенклатура,
    2 КАК КоличествоПродажи
ПОМЕСТИТЬ ВТПродажи

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

ВЫБРАТЬ
    "Стол",
    1
6 crisalis
 
03.02.20
15:20
(4) А в каком запросе надо ЕСТЬNULL прописать?
(5)
ВЫБРАТЬ
    ВТЗакупки.Номенклатура,
    СУММА(ЕСТЬNULL(ВТЗакупки.КоличествоЗакупки, 0)) КАК КоличествоЗакупки,
    СУММА(ЕСТЬNULL(ВТПродажи.КоличествоПродажи, 0)) КАК КоличествоПродажи
ИЗ
    ВТЗакупки КАК ВТЗакупки
        ЛЕВОЕ СОЕДИНЕНИЕ ВТПродажи КАК ВТПродажи
        ПО ВТЗакупки.Номенклатура = ВТПродажи.Номенклатура

СГРУППИРОВАТЬ ПО
    ВТЗакупки.Номенклатура
7 crisalis
 
03.02.20
15:21
(5) Как это поможет мне решить мою задачку с вычисляемым полем в СКД ?
8 Ns33
 
03.02.20
15:26
(6) У тебя в исходной таблице "Колоши" пропали. Тебе нужно "ПОЛНОЕ СОЕДИНЕНИЕ".
(7) Поймешь, что  вычисляемое поле СКД тебе не надо, всё делается запросом. Вычисляемые поля нужны в более извращенных случаях, этот не такой.
9 Ns33
 
03.02.20
15:30
(6) И добавь в исходную таблицу поле "ВТПродажи.Номенклатура КАК Номенклатура1", может пригодится как-нибудь, и заодно глянешь что там.
10 Ns33
 
03.02.20
15:31
(9) т.е. в выходную таблицу добавь, не в исходную.
11 vicof
 
03.02.20
15:35
(6) Ты не ответил, зачем он нужен
12 Ns33
 
03.02.20
15:44
(11) При соединении таблиц по условию на номенклатуру, у тебя окажется что список номенклатуры в обоих таблицах отличается.
Напр. при левом соединении всего справочника к остаткам по этому справочнику, у тебя на многие позиции справочника, которых нет на остатках, будет значение NULL, которое означает, что значения нет. И вот чтобы заменить этот NULL на 0 и нужна ЕСТЬNULL.
13 crisalis
 
03.02.20
15:45
(8) ЛЕВОЕ мне нужно (но это надо ещё будет уточнять), если нет расхода по номенклатуре то не надо показывать остальное (остатки и остальное)
(10) Понял спасибо , я думал что если добавил в пакетные запросы ЕСТЬNULL то нулы не будут в итоговом не будут нулы

НАДО ЕСТЬNULL в итоговый запрос добавлять тогда вроде работает, спасибо всем
14 crisalis
 
03.02.20
15:48
(12) Спасибо огромное уже понятно , пинок оказался полезным!!!
15 Ns33
 
03.02.20
15:49
В моем задании есть номенклатура, которая только в закупках, а есть которая только в продажах, и если ты их Сделаешь полное соединение, то у тебя в таких случаях будет одно из полей NULL. Т.е. при полном соединении одинаковая ТМЦ соединится в одну строку, а не одинаковые - добавятся новыми строками.