|
УТ 10. Разница между количеством товара | ☑ | ||
---|---|---|---|---|
0
AlexKulikov
20.06.18
✎
17:57
|
Добрый день уважаемые форумчане, подскажите пожалуйста, в запросом:
<code> ВЫБРАТЬ РАЗРЕШЕННЫЕ ТоварыНаСкладахОстатки.КоличествоОстаток КАК ОстатокПоТоварам, ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК ОстатокПоПартиям, ТоварыНаСкладахОстатки.КоличествоОстаток - ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК РазницаОстатков, ПартииТоваровНаСкладахОстатки.Номенклатура КАК НоменклатураПартии, ТоварыНаСкладахОстатки.Номенклатура КАК НоменклатураТовара ПОМЕСТИТЬ ТаблицаОстатков ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон, ) КАК ТоварыНаСкладахОстатки ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&ДатаКон, ) КАК ПартииТоваровНаСкладахОстатки ПО ТоварыНаСкладахОстатки.Номенклатура = ПартииТоваровНаСкладахОстатки.Номенклатура И ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладахОстатки.ХарактеристикаНоменклатуры И ТоварыНаСкладахОстатки.СерияНоменклатуры = ПартииТоваровНаСкладахОстатки.СерияНоменклатуры И ТоварыНаСкладахОстатки.Склад = ПартииТоваровНаСкладахОстатки.Склад ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТаблицаОстатков.ОстатокПоТоварам КАК ОстатокПоТоварам, ТаблицаОстатков.ОстатокПоПартиям КАК ОстатокПоПартиям, ТаблицаОстатков.РазницаОстатков КАК РазницаОстатков, ТаблицаОстатков.НоменклатураПартии, ТаблицаОстатков.НоменклатураТовара, ВЫБОР КОГДА ТаблицаОстатков.НоменклатураПартии = NULL ТОГДА ТаблицаОстатков.НоменклатураТовара.Ссылка ИНАЧЕ ТаблицаОстатков.НоменклатураПартии.Ссылка КОНЕЦ КАК НоменклатураИтоговая {ВЫБРАТЬ НоменклатураИтоговая, ОстатокПоТоварам, ОстатокПоПартиям, РазницаОстатков} ИЗ Справочник.Номенклатура КАК Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаОстатков КАК ТаблицаОстатков ПО (ТаблицаОстатков.НоменклатураПартии = Номенклатура.Ссылка) И (ТаблицаОстатков.НоменклатураТовара = Номенклатура.Ссылка) {ГДЕ (ВЫБОР КОГДА ТаблицаОстатков.НоменклатураПартии = NULL ТОГДА ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) = ТаблицаОстатков.ОстатокПоТоварам ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) = ТаблицаОстатков.НоменклатураПартии КОНЕЦ) КАК НоменклатураИтоговая} {УПОРЯДОЧИТЬ ПО НоменклатураИтоговая} ИТОГИ СУММА(ОстатокПоТоварам), СУММА(ОстатокПоПартиям), СУММА(РазницаОстатков) ПО ОБЩИЕ {ИТОГИ ПО НоменклатураИтоговая} </code> Есть задача, нужно получить отклонение по номенклатуре между двумя регистрами "Товары на складах" и "Товары по партиям", и вывести данные в отчет. Но, в данный момент, у меня отчет выводит некорректные данные. У меня два вопроса, первый касаемо строчки номенклатуры, почему то он не выполняет данные условие, колонка итоговая номенклатура все равно остается пустой и соответственно в отчет не попадает; Вторая проблема связана с остатком(партии или товара) если в одном из этих полей есть NULL, то разница не высчитывается, как бы я не игрался с конструкцией "ВЫБОР". Очень надеюсь на вашу помощь, с уважением Алексей. |
|||
1
shuhard
20.06.18
✎
17:59
|
(0)[Очень надеюсь на вашу помощь]
а зря |
|||
2
AlexKulikov
20.06.18
✎
17:59
|
Делаю через построитель отчета, если это важно
|
|||
3
AlexKulikov
20.06.18
✎
18:00
|
(1) мда, видимо я впал в немилость, где же я так провинился((
|
|||
4
AlexKulikov
20.06.18
✎
18:01
|
Тьфу ты, запрос корявый отправил
<code> ВЫБРАТЬ РАЗРЕШЕННЫЕ ТоварыНаСкладахОстатки.КоличествоОстаток КАК ОстатокПоТоварам, ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК ОстатокПоПартиям, ТоварыНаСкладахОстатки.КоличествоОстаток - ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК РазницаОстатков, ПартииТоваровНаСкладахОстатки.Номенклатура КАК НоменклатураПартии, ТоварыНаСкладахОстатки.Номенклатура КАК НоменклатураТовара ПОМЕСТИТЬ ТаблицаОстатков ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон, ) КАК ТоварыНаСкладахОстатки ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&ДатаКон, ) КАК ПартииТоваровНаСкладахОстатки ПО ТоварыНаСкладахОстатки.Номенклатура = ПартииТоваровНаСкладахОстатки.Номенклатура И ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладахОстатки.ХарактеристикаНоменклатуры И ТоварыНаСкладахОстатки.СерияНоменклатуры = ПартииТоваровНаСкладахОстатки.СерияНоменклатуры И ТоварыНаСкладахОстатки.Склад = ПартииТоваровНаСкладахОстатки.Склад ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТаблицаОстатков.ОстатокПоТоварам КАК ОстатокПоТоварам, ТаблицаОстатков.ОстатокПоПартиям КАК ОстатокПоПартиям, ТаблицаОстатков.РазницаОстатков КАК РазницаОстатков, ТаблицаОстатков.НоменклатураПартии, ТаблицаОстатков.НоменклатураТовара, ВЫБОР КОГДА ТаблицаОстатков.НоменклатураПартии = NULL ТОГДА ТаблицаОстатков.НоменклатураТовара.Ссылка ИНАЧЕ ТаблицаОстатков.НоменклатураПартии.Ссылка КОНЕЦ КАК НоменклатураИтоговая {ВЫБРАТЬ НоменклатураИтоговая, ОстатокПоТоварам, ОстатокПоПартиям, РазницаОстатков} ИЗ ТаблицаОстатков КАК ТаблицаОстатков {ГДЕ (ВЫБОР КОГДА ТаблицаОстатков.НоменклатураПартии = NULL ТОГДА ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) = ТаблицаОстатков.ОстатокПоТоварам ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) = ТаблицаОстатков.НоменклатураПартии КОНЕЦ) КАК НоменклатураИтоговая} {УПОРЯДОЧИТЬ ПО НоменклатураИтоговая} ИТОГИ СУММА(ОстатокПоТоварам), СУММА(ОстатокПоПартиям), СУММА(РазницаОстатков) ПО ОБЩИЕ {ИТОГИ ПО НоменклатураИтоговая} </code> |
|||
5
shuhard
20.06.18
✎
18:03
|
(3) Стаж: 1 год 9 месяцев 28 дней
за это время ты не помог ни кому и ни разу |
|||
6
AlexKulikov
20.06.18
✎
18:05
|
(5) Я конечно дико извняюсь за такое громадное допущение, но мне делать как некоторые пользователи, высказывать предположения и тем самым набивать себе очки?
|
|||
7
AlexKulikov
20.06.18
✎
18:06
|
Или вместо работы сидеть и искать темы, где я точно знаю ответ на вопрос?
|
|||
8
AlexKulikov
20.06.18
✎
19:07
|
<code>
ВЫБРАТЬ РАЗРЕШЕННЫЕ ТоварыНаСкладахОстатки.КоличествоОстаток КАК ОстатокПоТоварам, ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК ОстатокПоПартиям, ТоварыНаСкладахОстатки.КоличествоОстаток - ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК РазницаОстатков, ПартииТоваровНаСкладахОстатки.Номенклатура КАК НоменклатураПартии, ТоварыНаСкладахОстатки.Номенклатура КАК НоменклатураТовара, ПартииТоваровНаСкладахОстатки.Склад ПОМЕСТИТЬ ТаблицаОстатков ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон, ) КАК ТоварыНаСкладахОстатки ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&ДатаКон, ) КАК ПартииТоваровНаСкладахОстатки ПО ТоварыНаСкладахОстатки.Номенклатура = ПартииТоваровНаСкладахОстатки.Номенклатура И ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладахОстатки.ХарактеристикаНоменклатуры И ТоварыНаСкладахОстатки.СерияНоменклатуры = ПартииТоваровНаСкладахОстатки.СерияНоменклатуры И ТоварыНаСкладахОстатки.Склад = ПартииТоваровНаСкладахОстатки.Склад ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЕСТЬNULL(ТаблицаОстатков.ОстатокПоТоварам, 0) КАК ОстатокПоТоварам, ЕСТЬNULL(ТаблицаОстатков.ОстатокПоПартиям, 0) КАК ОстатокПоПартиям, ТаблицаОстатков.НоменклатураПартии, ТаблицаОстатков.НоменклатураТовара, ВЫБОР КОГДА ТаблицаОстатков.НоменклатураПартии = NULL ТОГДА ТаблицаОстатков.НоменклатураТовара.Ссылка ИНАЧЕ ТаблицаОстатков.НоменклатураПартии.Ссылка КОНЕЦ КАК НоменклатураИтоговая, ЕСТЬNULL(ТаблицаОстатков.ОстатокПоТоварам, 0) - ЕСТЬNULL(ТаблицаОстатков.ОстатокПоПартиям, 0) КАК РазницаОстатков, ТаблицаОстатков.Склад ПОМЕСТИТЬ ТаблицаИтоговая ИЗ ТаблицаОстатков КАК ТаблицаОстатков ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТаблицаИтоговая.ОстатокПоТоварам КАК ОстатокПоТоварам, ТаблицаИтоговая.ОстатокПоПартиям КАК ОстатокПоПартиям, ТаблицаИтоговая.НоменклатураПартии, ТаблицаИтоговая.НоменклатураТовара, ТаблицаИтоговая.НоменклатураИтоговая, ТаблицаИтоговая.РазницаОстатков КАК РазницаОстатков, ТаблицаИтоговая.Склад {ВЫБРАТЬ Склад.*, НоменклатураИтоговая.*, ОстатокПоТоварам, ОстатокПоПартиям, РазницаОстатков, НоменклатураПартии.*, НоменклатураТовара.*} ИЗ ТаблицаИтоговая КАК ТаблицаИтоговая ГДЕ ТаблицаИтоговая.РазницаОстатков <> 0 {ГДЕ ТаблицаИтоговая.НоменклатураИтоговая.*, ТаблицаИтоговая.Склад.*} {УПОРЯДОЧИТЬ ПО Склад.*, НоменклатураИтоговая.*} ИТОГИ СУММА(ОстатокПоТоварам), СУММА(ОстатокПоПартиям), СУММА(РазницаОстатков) ПО ОБЩИЕ {ИТОГИ ПО Склад.*, НоменклатураИтоговая.*} </code> |
|||
9
AlexKulikov
20.06.18
✎
19:11
|
Решил задачу, вообщем проблема была с NULL значениями в числовых полях, просле использования стандартной функции 1с, заменил NULL на 0, в результате чего нормально разница получилась верно.
Потом как дополнительно, нужно было удалить из запроса ненужные строки, где разница равна 0, пришлось городить еще одну таблицу, для того, чтобы условие легло верно, всем спасибо. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |