Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 янв 2025, 10:29

Доработка стандартных отчетов

Автор Artem, 17 дек 2024, 00:15

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

Artem

Приветствую всех на данном замечательном форуме. Вопрос заключается в следующем: стоит задача на тему доработки стандартных отчетов, а именно вывод дополнительных данных по номенклатуре (в данном случае). При попытке левым соединением добавить регистр он где-то значения задваивает, а где-то и умножает в несколько раз. Пробовал по различному настроить группировки, но все равно проблема сохраняется. Как сделать так чтобы отчет работал и более глобальный вопрос есть возможно какие-то правила по доработке стандартных отчетов и вывода туда дополнительных полей?

P.S В контексте данной задачи требуется вывести себестоимость в отчет остатки и доступность товаров на складах (УТ)

fruitella

Используй агрегатные функции такие как СУММА() и группировку

LexaK

Artem, левое соединение нужно делать по нескольким связям ПО
1.по объекту - номенклатура
2.по Свойство = &НужноеСвойство

(и это при условии что у вас с одним товаром не связано несколько одинаковых свойств)
если помогло нажмите: Спасибо!

Artem

LexaK, Делаю связь по Номенклатуре, Характеристике, Складу и Назначению. Делаю группировку по АналитикеУчетаНоменклатуре (пробовал еще по отдельности Номенклатура, Характеристика, Склад и Назначения) по итогу сумма не равна результату полученному в консоли запросов 

LexaK

Artem, а что в вы в левое соединение добавляете? )мне показалось рег.Св доп.свойства)
если помогло нажмите: Спасибо!

Artem

LexaK, к таблице я добавляю левым вложенный запрос к регистру накопления "СебестоимостьТоваров.Остатки"

LexaK

Artem, какие поля в этом вложенном запросе?
если есть еще поля кроме номенклатуры, то по ним всем надо делать связь
в секции По...
если помогло нажмите: Спасибо!

Artem

LexaK, Я и говорю, я вытягиваю поля Номенклатура, Характеристика, Склад и Назначений - по всем этим полям делаю связь, так же вытягиваю ресурс "Себестоимость" и "Доп.Расходы"

LexaK

Artem, осталось только посмотреть на ваше левое соединение со связями...
выкладывайте!
если помогло нажмите: Спасибо!

Artem

@LexaK,не знаю как лучше, скидываю запрос, если проще будет скринами могу и так отправить


ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
Сегменты.Номенклатура КАК Номенклатура,
Сегменты.Характеристика КАК Характеристика,
ИСТИНА КАК ИспользуетсяОтборПоСегментуНоменклатуры
ПОМЕСТИТЬ ОтборПоСегментуНоменклатуры
ИЗ
РегистрСведений.НоменклатураСегмента КАК Сегменты
{ГДЕ
Сегменты.Сегмент.* КАК СегментНоменклатуры,
Сегменты.Номенклатура.* КАК Номенклатура,
Сегменты.Характеристика.* КАК Характеристика}

ИНДЕКСИРОВАТЬ ПО
Номенклатура,
Характеристика,
ИспользуетсяОтборПоСегментуНоменклатуры
;

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

ИНДЕКСИРОВАТЬ ПО
Номенклатура,
Характеристика,
Склад,
Назначение
;

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

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

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

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

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

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

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

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

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

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

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

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

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

СГРУППИРОВАТЬ ПО
Таблица.Номенклатура,
Таблица.Характеристика,
Таблица.Склад,
Таблица.Назначение,
Таблица.ЗаказНаПоступление,
Таблица.ДатаДоступности

ИМЕЮЩИЕ
СУММА(Таблица.ВНаличии + Таблица.Поступит - Таблица.Доступно) <> СУММА(Таблица.ВРезерве)
;

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

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

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

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

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

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

ВЫБРАТЬ
Таблица.Номенклатура,
Таблица.Характеристика,
Таблица.Склад,
Таблица.Назначение,
Таблица.ВРезерве,
-Таблица.КОбеспечению
ИЗ
ТаблицаДанныхОтчета КАК Таблица

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

ВЫБРАТЬ
Таблица.Номенклатура,
Таблица.Характеристика,
Таблица.Склад,
Таблица.Назначение,
Таблица.ВРезерве,
0
ИЗ
ТаблицаКРаспределению КАК Таблица) КАК Таблица

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

ИМЕЮЩИЕ
СУММА(Таблица.КОбеспечению - Таблица.ВРезерве) <> 0) КАК Набор

СГРУППИРОВАТЬ ПО
Набор.ТипЗаписи,
Набор.Номенклатура,
Набор.Характеристика,
Набор.Склад,
Набор.Назначение,
Набор.ЗаказНаОтгрузку,
Набор.ЗаказНаПоступление,
Набор.ДатаДоступности

ИМЕЮЩИЕ
(СУММА(Набор.Отгружается) <> 0
ИЛИ СУММА(Набор.ВНаличии) <> 0
ИЛИ СУММА(Набор.Поступит) <> 0
ИЛИ СУММА(Набор.ВРезерве) <> 0
ИЛИ СУММА(Набор.Доступно) <> 0
ИЛИ СУММА(Набор.КОбеспечению) > 0)

ИНДЕКСИРОВАТЬ ПО
Номенклатура,
Характеристика,
Склад,
Назначение
;

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

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

ИНДЕКСИРОВАТЬ ПО
Номенклатура,
Характеристика,
Склад,
Назначение
;

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

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

СГРУППИРОВАТЬ ПО
Таблица.ЗаказНаОтгрузку,
Таблица.ЗаказНаПоступление,
Таблица.Назначение,
Таблица.ТипЗаписи,
Таблица.Номенклатура,
Таблица.Характеристика,
Таблица.Склад,
Таблица.ДатаДоступности,
Таблица.Номенклатура.ЕдиницаИзмерения,
Таблица.Номенклатура.ЕдиницаДляОтчетов,
ЕСТЬNULL(Таблица.Назначение.НаправлениеДеятельности, ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПустаяСсылка)),
ЕСТЬNULL(Таблица.Назначение.Партнер, ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка)),
ЕСТЬNULL(Таблица.Назначение.Договор, ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка))

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

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


Теги:

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

Рейтинг@Mail.ru

Поиск