Имя: Пароль:
1C
1С v8
Не могу понять условие в запросе
0 Beduin
 
25.02.22
13:52
ГДЕ
    ЕСТЬNULL(ТаблицаОстатковБезОснования.Количество, 0) - ЕСТЬNULL(ТаблицаОстатковПоОснованию.Количество, 0) > 0
    И ТаблицаОстатковПоОснованию.Количество ЕСТЬ NULL

я правильно понимаю что оно равно

ГДЕ
    ЕСТЬNULL(ТаблицаОстатковБезОснования.Количество, 0)  > 0
|    И ТаблицаОстатковПоОснованию.Количество ЕСТЬ NULL
1 mikecool
 
25.02.22
13:56
эээ, булеву логику знаешь? разложи на операнды и посчитай
2 vicof
 
25.02.22
13:56
ага
3 mikecool
 
25.02.22
13:57
а так - либо кто то облажался и должно быть ИЛИ
4 Beduin
 
25.02.22
13:58
(1) Да знаю. Просто засомневался. Это из типовой. Вот весь запрос.

ВЫБРАТЬ
    ТаблицаОстатковБезОснования.Номенклатура КАК Номенклатура,
    СУММА(ЕСТЬNULL(ТаблицаОстатковБезОснования.Количество, 0) - ЕСТЬNULL(ТаблицаОстатковПоОснованию.Количество, 0) - ЕСТЬNULL(ТаблицаОстатковПрослеживаемогоТовараСРНПТОтПоставщика.Остаток, 0)) КАК Количество,
    СУММА(ЕСТЬNULL(ТаблицаОстатковБезОснования.Сумма, 0) - ЕСТЬNULL(ТаблицаОстатковПоОснованию.Сумма, 0)) КАК Сумма,
    ТаблицаОстатковБезОснования.Склад КАК Склад
ПОМЕСТИТЬ ТаблицаОстатковБезОснования
ИЗ
    ТаблицаОстатков КАК ТаблицаОстатковБезОснования
        ЛЕВОЕ СОЕДИНЕНИЕ ЗарегистрированныеОстаткиПоОснованию КАК ТаблицаОстатковПоОснованию
        ПО ТаблицаОстатковБезОснования.Номенклатура = ТаблицаОстатковПоОснованию.Номенклатура
            И ТаблицаОстатковБезОснования.Склад = ТаблицаОстатковПоОснованию.Склад
        ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаОстатковПрослеживаемогоТовараСРНПТОтПоставщика КАК ТаблицаОстатковПрослеживаемогоТовараСРНПТОтПоставщика
        ПО ТаблицаОстатковБезОснования.Номенклатура = ТаблицаОстатковПрослеживаемогоТовараСРНПТОтПоставщика.Номенклатура
            И ТаблицаОстатковБезОснования.Склад = ТаблицаОстатковПрослеживаемогоТовараСРНПТОтПоставщика.Склад
ГДЕ
    ЕСТЬNULL(ТаблицаОстатковБезОснования.Количество, 0) - ЕСТЬNULL(ТаблицаОстатковПоОснованию.Количество, 0) > 0
    И ТаблицаОстатковПоОснованию.Количество ЕСТЬ NULL

СГРУППИРОВАТЬ ПО
    ТаблицаОстатковБезОснования.Номенклатура,
    ТаблицаОстатковБезОснования.Склад
;
5 Beduin
 
25.02.22
14:00
Бухгалтерия 3.0 последний релиз
6 Dmitrii
 
гуру
25.02.22
14:05
(3) >> кто то облажался и должно быть ИЛИ.

Вероятнее всего.
7 Мимохожий Однако
 
25.02.22
14:28
(4) Это в какой процедуре (функции)?
8 Beduin
 
25.02.22
14:30
(7) ОбщийМодуль.ПрослеживаемостьБП
Функция ПолучитьНачальныеДанные
9 Мимохожий Однако
 
25.02.22
14:33
Видимо, это на тот случай, когда есть заполненная ТаблицаОстатковБезОснования с неким количеством и отсутствует ТаблицаОстатковПоОснованию.
10 Dmitrii
 
гуру
25.02.22
14:38
(9) >> и отсутствует ТаблицаОстатковПоОснованию.

Или данные об остатках не сходятся в этих двух таблицах или количественные остатки нулевые, но в ТаблицаОстатковБезОснования есть суммовые остатки (без количества).
Как-то так. При условии, что я прав в (6) и в ГДЕ должно быть ИЛИ.
11 Beduin
 
25.02.22
14:43
(9) Не совсем. Вот весь запрос.


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

СГРУППИРОВАТЬ ПО
    ХозрасчетныйОстатки.Субконто1,
    ХозрасчетныйОстатки.Субконто2

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

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

СГРУППИРОВАТЬ ПО
    ХозрасчетныйОстатки.Субконто1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    РегистрацияПрослеживаемыхТоваров.Номенклатура КАК Номенклатура,
    СУММА(РегистрацияПрослеживаемыхТоваров.Количество) КАК Количество,
    СУММА(РегистрацияПрослеживаемыхТоваров.Сумма) КАК Сумма,
    РегистрацияПрослеживаемыхТоваров.Основание КАК ДокументРегистрации,
    ВЫБОР
        КОГДА &ВестиСкладскойУчетБУ
            ТОГДА РегистрацияПрослеживаемыхТоваров.Основание.Склад
        ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
    КОНЕЦ КАК Склад,
    РегистрацияПрослеживаемыхТоваров.ТНВЭД КАК ТНВЭД
ПОМЕСТИТЬ ЗарегистрированныеОстаткиПоОснованию
ИЗ
    РегистрСведений.РегистрацияПрослеживаемыхТоваров КАК РегистрацияПрослеживаемыхТоваров
ГДЕ
    РегистрацияПрослеживаемыхТоваров.Организация = &Организация
    И РегистрацияПрослеживаемыхТоваров.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРегистрацииПрослеживаемыхТоваров.ИнвентаризацияТоваров)
    И РегистрацияПрослеживаемыхТоваров.ПериодСобытия <= КОНЕЦПЕРИОДА(&Период, МЕСЯЦ)

СГРУППИРОВАТЬ ПО
    РегистрацияПрослеживаемыхТоваров.Номенклатура,
    РегистрацияПрослеживаемыхТоваров.Основание,
    РегистрацияПрослеживаемыхТоваров.ТНВЭД,
    ВЫБОР
        КОГДА &ВестиСкладскойУчетБУ
            ТОГДА РегистрацияПрослеживаемыхТоваров.Основание.Склад
        ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
    КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПрослеживаемыеТоварыОбороты.Номенклатура КАК Номенклатура,
    СУММА(ПрослеживаемыеТоварыОбороты.КоличествоПриход) КАК КоличествоПриход,
    СУММА(ПрослеживаемыеТоварыОбороты.КоличествоРасход) КАК КоличествоРасход,
    ВЫБОР
        КОГДА &ВестиСкладскойУчетБУ
            ТОГДА ПрослеживаемыеТоварыОбороты.Регистратор.Склад
        ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
    КОНЕЦ КАК Склад,
    ПрослеживаемыеТоварыОбороты.РНПТ КАК РНПТ,
    ВЫБОР
        КОГДА НЕ ПрослеживаемыеТоварыОбороты.Регистратор ССЫЛКА Документ.УведомлениеОбОстаткахПрослеживаемыхТоваров
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК ЭтоРНПТОтПоставщика
ПОМЕСТИТЬ ПрослеживаемыеТоварыСРНПТ
ИЗ
    РегистрНакопления.ПрослеживаемыеТовары.Обороты(&НачалоПериода, &Период, Регистратор, Организация = &Организация) КАК ПрослеживаемыеТоварыОбороты

СГРУППИРОВАТЬ ПО
    ПрослеживаемыеТоварыОбороты.Номенклатура,
    ПрослеживаемыеТоварыОбороты.РНПТ,
    ВЫБОР
        КОГДА НЕ ПрослеживаемыеТоварыОбороты.Регистратор ССЫЛКА Документ.УведомлениеОбОстаткахПрослеживаемыхТоваров
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ,
    ВЫБОР
        КОГДА &ВестиСкладскойУчетБУ
            ТОГДА ПрослеживаемыеТоварыОбороты.Регистратор.Склад
        ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
    КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПрослеживаемыеТоварыСРНПТ.РНПТ КАК РНПТ
ПОМЕСТИТЬ СписокРНПТОтПоставщика
ИЗ
    ПрослеживаемыеТоварыСРНПТ КАК ПрослеживаемыеТоварыСРНПТ
ГДЕ
    ПрослеживаемыеТоварыСРНПТ.ЭтоРНПТОтПоставщика = ИСТИНА

СГРУППИРОВАТЬ ПО
    ПрослеживаемыеТоварыСРНПТ.РНПТ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПрослеживаемыеТоварыСРНПТ.Номенклатура КАК Номенклатура,
    СУММА(ПрослеживаемыеТоварыСРНПТ.КоличествоПриход - ПрослеживаемыеТоварыСРНПТ.КоличествоРасход) КАК Остаток,
    ПрослеживаемыеТоварыСРНПТ.Склад КАК Склад
ПОМЕСТИТЬ ТаблицаОстатковПрослеживаемогоТовараСРНПТОтПоставщика
ИЗ
    ПрослеживаемыеТоварыСРНПТ КАК ПрослеживаемыеТоварыСРНПТ
ГДЕ
    ПрослеживаемыеТоварыСРНПТ.РНПТ В
            (ВЫБРАТЬ
                СписокРНПТОтПоставщика.РНПТ
            ИЗ
                СписокРНПТОтПоставщика КАК СписокРНПТОтПоставщика)

СГРУППИРОВАТЬ ПО
    ПрослеживаемыеТоварыСРНПТ.Номенклатура,
    ПрослеживаемыеТоварыСРНПТ.Склад
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТаблицаОстатковБезОснования.Номенклатура КАК Номенклатура,
    СУММА(ЕСТЬNULL(ТаблицаОстатковБезОснования.Количество, 0) - ЕСТЬNULL(ТаблицаОстатковПоОснованию.Количество, 0) - ЕСТЬNULL(ТаблицаОстатковПрослеживаемогоТовараСРНПТОтПоставщика.Остаток, 0)) КАК Количество,
    СУММА(ЕСТЬNULL(ТаблицаОстатковБезОснования.Сумма, 0) - ЕСТЬNULL(ТаблицаОстатковПоОснованию.Сумма, 0)) КАК Сумма,
    ТаблицаОстатковБезОснования.Склад КАК Склад
ПОМЕСТИТЬ ТаблицаОстатковБезОснования
ИЗ
    ТаблицаОстатков КАК ТаблицаОстатковБезОснования
        ЛЕВОЕ СОЕДИНЕНИЕ ЗарегистрированныеОстаткиПоОснованию КАК ТаблицаОстатковПоОснованию
        ПО ТаблицаОстатковБезОснования.Номенклатура = ТаблицаОстатковПоОснованию.Номенклатура
            И ТаблицаОстатковБезОснования.Склад = ТаблицаОстатковПоОснованию.Склад
        ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаОстатковПрослеживаемогоТовараСРНПТОтПоставщика КАК ТаблицаОстатковПрослеживаемогоТовараСРНПТОтПоставщика
        ПО ТаблицаОстатковБезОснования.Номенклатура = ТаблицаОстатковПрослеживаемогоТовараСРНПТОтПоставщика.Номенклатура
            И ТаблицаОстатковБезОснования.Склад = ТаблицаОстатковПрослеживаемогоТовараСРНПТОтПоставщика.Склад
ГДЕ
    ЕСТЬNULL(ТаблицаОстатковБезОснования.Количество, 0) - ЕСТЬNULL(ТаблицаОстатковПоОснованию.Количество, 0) > 0
    И ТаблицаОстатковПоОснованию.Количество ЕСТЬ NULL

СГРУППИРОВАТЬ ПО
    ТаблицаОстатковБезОснования.Номенклатура,
    ТаблицаОстатковБезОснования.Склад
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЗарегистрированныеОстатки.Номенклатура КАК Номенклатура,
    СУММА(ЗарегистрированныеОстатки.Количество) КАК Количество,
    СУММА(ЗарегистрированныеОстатки.Сумма) КАК Сумма,
    ЗарегистрированныеОстатки.ДокументРегистрации КАК ДокументРегистрации,
    НоменклатураСправочник.КодОКПД2 КАК КодОКПД2,
    НоменклатураСправочник.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    ЗарегистрированныеОстатки.ТНВЭД КАК КодТНВЭД,
    КлассификаторТНВЭД.ЕдиницаИзмерения КАК ЕдиницаПрослеживаемости,
    ВЫБОР
        КОГДА НоменклатураСправочник.ВесПоСертификатуТовара > 0
            ТОГДА ЗарегистрированныеОстатки.Количество * НоменклатураСправочник.ВесПоСертификатуТовара
        ИНАЧЕ ЗарегистрированныеОстатки.Количество
    КОНЕЦ КАК КоличествоПрослеживаеомсти,
    ЗарегистрированныеОстатки.Склад КАК Склад,
    НоменклатураСправочник.СтранаПроисхождения КАК СтранаПроисхождения
ПОМЕСТИТЬ ТаблицаОстатковПоОснованию
ИЗ
    ЗарегистрированныеОстаткиПоОснованию КАК ЗарегистрированныеОстатки
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураСправочник
            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлассификаторТНВЭД КАК КлассификаторТНВЭД
            ПО НоменклатураСправочник.КодТНВЭД = КлассификаторТНВЭД.Ссылка
        ПО ЗарегистрированныеОстатки.Номенклатура = НоменклатураСправочник.Ссылка
ГДЕ
    ЗарегистрированныеОстатки.Количество > 0

СГРУППИРОВАТЬ ПО
    ЗарегистрированныеОстатки.Номенклатура,
    ЗарегистрированныеОстатки.ДокументРегистрации,
    НоменклатураСправочник.КодОКПД2,
    НоменклатураСправочник.ЕдиницаИзмерения,
    КлассификаторТНВЭД.ЕдиницаИзмерения,
    ВЫБОР
        КОГДА НоменклатураСправочник.ВесПоСертификатуТовара > 0
            ТОГДА ЗарегистрированныеОстатки.Количество * НоменклатураСправочник.ВесПоСертификатуТовара
        ИНАЧЕ ЗарегистрированныеОстатки.Количество
    КОНЕЦ,
    ЗарегистрированныеОстатки.Склад,
    ЗарегистрированныеОстатки.ТНВЭД,
    НоменклатураСправочник.СтранаПроисхождения
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТаблицаОстатковБезОснования.Номенклатура КАК Номенклатура,
    ТаблицаОстатковБезОснования.Количество КАК Количество,
    ТаблицаОстатковБезОснования.Сумма КАК Сумма,
    ТаблицаОстатковБезОснования.Склад КАК Склад
ПОМЕСТИТЬ ТаблицаОстатковБезОснованияБезИнвентаризации
ИЗ
    ТаблицаОстатковБезОснования КАК ТаблицаОстатковБезОснования
        ЛЕВОЕ СОЕДИНЕНИЕ ЗарегистрированныеОстаткиПоОснованию КАК ЗарегистрированныеОстаткиПоОснованию
        ПО ТаблицаОстатковБезОснования.Номенклатура = ЗарегистрированныеОстаткиПоОснованию.Номенклатура
            И ТаблицаОстатковБезОснования.Склад = ЗарегистрированныеОстаткиПоОснованию.Склад
ГДЕ
    ЗарегистрированныеОстаткиПоОснованию.Номенклатура ЕСТЬ NULL
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТаблицаОстатковБезОснованияБезИнвентаризации.Номенклатура КАК Номенклатура,
    ТаблицаОстатковБезОснованияБезИнвентаризации.Количество КАК Количество,
    ТаблицаОстатковБезОснованияБезИнвентаризации.Сумма КАК Сумма,
    "" КАК Основание,
    ЛОЖЬ КАК ЕстьПервичныйДокумент,
    НЕОПРЕДЕЛЕНО КАК КодОКПД2,
    НЕОПРЕДЕЛЕНО КАК ЕдиницаИзмерения,
    НЕОПРЕДЕЛЕНО КАК КодТНВЭД,
    НЕОПРЕДЕЛЕНО КАК ЕдиницаПрослеживаемости,
    НЕОПРЕДЕЛЕНО КАК КоличествоПрослеживаемости,
    ТаблицаОстатковБезОснованияБезИнвентаризации.Склад КАК Склад,
    ЛОЖЬ КАК ИмпортИзЕАЭС,
    NULL КАК СтранаПроисхождения
ИЗ
    ТаблицаОстатковБезОснованияБезИнвентаризации КАК ТаблицаОстатковБезОснованияБезИнвентаризации

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

ВЫБРАТЬ
    ТаблицаОстатковПоРегистрации.Номенклатура,
    ТаблицаОстатковПоРегистрации.Количество,
    ТаблицаОстатковПоРегистрации.Сумма,
    ТаблицаОстатковПоРегистрации.ДокументРегистрации,
    ИСТИНА,
    ТаблицаОстатковПоРегистрации.КодОКПД2,
    ТаблицаОстатковПоРегистрации.ЕдиницаИзмерения,
    ТаблицаОстатковПоРегистрации.КодТНВЭД,
    ТаблицаОстатковПоРегистрации.ЕдиницаПрослеживаемости,
    ТаблицаОстатковПоРегистрации.КоличествоПрослеживаеомсти,
    ТаблицаОстатковПоРегистрации.Склад,
    ЛОЖЬ,
    ТаблицаОстатковПоРегистрации.СтранаПроисхождения
ИЗ
    ТаблицаОстатковПоОснованию КАК ТаблицаОстатковПоРегистрации

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

ВЫБРАТЬ
    РегистрацияПрослеживаемыхТоваров.Номенклатура,
    РегистрацияПрослеживаемыхТоваров.Количество,
    РегистрацияПрослеживаемыхТоваров.Сумма,
    РегистрацияПрослеживаемыхТоваров.Основание,
    ИСТИНА,
    НоменклатураСправочник.КодОКПД2,
    НоменклатураСправочник.ЕдиницаИзмерения,
    РегистрацияПрослеживаемыхТоваров.ТНВЭД,
    РегистрацияПрослеживаемыхТоваров.ТНВЭД.ЕдиницаИзмерения,
    ВЫБОР
        КОГДА НоменклатураСправочник.ВесПоСертификатуТовара > 0
            ТОГДА РегистрацияПрослеживаемыхТоваров.Количество * НоменклатураСправочник.ВесПоСертификатуТовара
        ИНАЧЕ РегистрацияПрослеживаемыхТоваров.Количество
    КОНЕЦ,
    НЕОПРЕДЕЛЕНО,
    ИСТИНА,
    РегистрацияПрослеживаемыхТоваров.СтранаПроисхождения
ИЗ
    РегистрСведений.РегистрацияПрослеживаемыхТоваров КАК РегистрацияПрослеживаемыхТоваров
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураСправочник
        ПО РегистрацияПрослеживаемыхТоваров.Номенклатура = НоменклатураСправочник.Ссылка
ГДЕ
    РегистрацияПрослеживаемыхТоваров.Количество > 0
    И РегистрацияПрослеживаемыхТоваров.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРегистрацииПрослеживаемыхТоваров.ВвозТоваровИзЕАЭС)
    И РегистрацияПрослеживаемыхТоваров.Организация = &Организация
AdBlock убивает бесплатный контент. 1Сергей