В Бухгалтерии Предприятия делаю отчет СКД по движениям товаров: нач остатки, приход, расход, кон остатки. Есть различные параметры, включенные в пользовательные настройки для фильтрации выводимого результата: Номенклатура, Склад, Номенклатурная группа, Только с оборотами. И всё работает хорошо, за исключением последнего параметра "ТолькоСОборотами". Если я ставлю его в положение ИСТИНА, выводит товары у которых есть обороты, но не показывает начальные и конечные остатки, показывает только эти самые обороты. Вот Код запроса СКД:
ВЫБРАТЬ
ХозрасчетныйОстатки_КонОст.Счет КАК Счет,
ХозрасчетныйОстатки_КонОст.Субконто1 КАК Номенклатура,
ХозрасчетныйОстатки_КонОст.СуммаОстаток КАК СуммаКонОст,
ХозрасчетныйОстатки_КонОст.КоличествоОстаток КАК КоличествоКонОст,
ХозрасчетныйОстатки_КонОст.Субконто2 КАК Склад,
ХозрасчетныйОстатки_КонОст.Организация КАК Организация,
ХозрасчетныйОстатки_КонОст.Подразделение КАК Подразделение,
0 КАК СуммаПоступление,
0 КАК СуммаВыбытие,
0 КАК КоличествоПоступление,
0 КАК КоличествоВыбытие,
0 КАК СуммаНачОст,
0 КАК КоличествоНачОст,
NULL КАК Регистратор
ПОМЕСТИТЬ ОстаткиИОбороты
{ВЫБРАТЬ
Счет.*,
Номенклатура.*,
СуммаКонОст,
КоличествоКонОст,
Склад.*,
Организация.*,
Подразделение.*}
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(&КонецПериода, Счет В ИЕРАРХИИ (&ВыбСчет), &СубконтоНоменклатураИСклад, {(Организация).* КАК Организация, (Субконто1).* КАК Номенклатура, (Субконто2).* КАК Склад, (Подразделение).* КАК Подразделение}) КАК ХозрасчетныйОстатки_КонОст
{ГДЕ
ХозрасчетныйОстатки_КонОст.СуммаОстаток КАК СуммаКонОст,
ХозрасчетныйОстатки_КонОст.КоличествоОстаток КАК КоличествоКонОст}
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ХозрасчетныйОбороты.Счет,
ХозрасчетныйОбороты.Субконто1,
0,
0,
ХозрасчетныйОбороты.Субконто2,
ХозрасчетныйОбороты.Организация,
ХозрасчетныйОбороты.Подразделение,
ХозрасчетныйОбороты.СуммаОборотДт,
ХозрасчетныйОбороты.СуммаОборотКт,
ХозрасчетныйОбороты.КоличествоОборотДт,
ХозрасчетныйОбороты.КоличествоОборотКт,
0,
0,
ХозрасчетныйОбороты.Регистратор
ИЗ
РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Регистратор, Счет В ИЕРАРХИИ (&ВыбСчет), &СубконтоНоменклатураИСклад, {(Организация).* КАК Организация, (Субконто1).* КАК Номенклатура, (Субконто2).* КАК Склад, (Подразделение).* КАК Подразделение}, , ) КАК ХозрасчетныйОбороты
{ГДЕ
ХозрасчетныйОбороты.СуммаОборотДт КАК СуммаПоступление,
ХозрасчетныйОбороты.СуммаОборотКт КАК СуммаВыбытие,
ХозрасчетныйОбороты.КоличествоОборотДт КАК КоличествоПоступление,
ХозрасчетныйОбороты.КоличествоОборотКт КАК КоличествоВыбытие}
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ХозрасчетныйОстатки_НачОст.Счет,
ХозрасчетныйОстатки_НачОст.Субконто1,
0,
0,
ХозрасчетныйОстатки_НачОст.Субконто2,
ХозрасчетныйОстатки_НачОст.Организация,
ХозрасчетныйОстатки_НачОст.Подразделение,
0,
0,
0,
0,
ХозрасчетныйОстатки_НачОст.СуммаОстаток,
ХозрасчетныйОстатки_НачОст.КоличествоОстаток,
NULL
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(&НачалоПериода, Счет В ИЕРАРХИИ (&ВыбСчет), &СубконтоНоменклатураИСклад, {(Организация).* КАК Организация, (Субконто1).* КАК Номенклатура, (Субконто2).* КАК Склад, (Подразделение).* КАК Подразделение}) КАК ХозрасчетныйОстатки_НачОст
{ГДЕ
ХозрасчетныйОстатки_НачОст.СуммаОстаток КАК СуммаНачОст,
ХозрасчетныйОстатки_НачОст.КоличествоОстаток КАК КоличествоНачОст}
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОстаткиИОбороты.Счет КАК Счет,
ОстаткиИОбороты.Номенклатура КАК Номенклатура,
СУММА(ОстаткиИОбороты.СуммаКонОст) КАК СуммаКонОст,
СУММА(ОстаткиИОбороты.КоличествоКонОст) КАК КоличествоКонОст,
ОстаткиИОбороты.Склад КАК Склад,
ОстаткиИОбороты.Организация КАК Организация,
ОстаткиИОбороты.Подразделение КАК Подразделение,
СУММА(ОстаткиИОбороты.СуммаПоступление) КАК СуммаПоступление,
СУММА(ОстаткиИОбороты.СуммаВыбытие) КАК СуммаВыбытие,
СУММА(ОстаткиИОбороты.КоличествоПоступление) КАК КоличествоПоступление,
СУММА(ОстаткиИОбороты.КоличествоВыбытие) КАК КоличествоВыбытие,
СУММА(ОстаткиИОбороты.СуммаНачОст) КАК СуммаНачОст,
СУММА(ОстаткиИОбороты.КоличествоНачОст) КАК КоличествоНачОст,
ОстаткиИОбороты.Регистратор КАК Регистратор
{ВЫБРАТЬ
Счет.*,
Номенклатура.*,
СуммаКонОст,
КоличествоКонОст,
Склад.*,
Организация.*,
Подразделение.*,
СуммаПоступление,
СуммаВыбытие,
КоличествоПоступление,
КоличествоВыбытие,
СуммаНачОст,
КоличествоНачОст,
Регистратор.*}
ИЗ
ОстаткиИОбороты КАК ОстаткиИОбороты
ГДЕ
ВЫБОР
КОГДА &Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
ИЛИ &Номенклатура = НЕОПРЕДЕЛЕНО
ТОГДА ИСТИНА
ИНАЧЕ ОстаткиИОбороты.Номенклатура = &Номенклатура
КОНЕЦ
И ВЫБОР
КОГДА &Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
ИЛИ &Склад = НЕОПРЕДЕЛЕНО
ТОГДА ИСТИНА
ИНАЧЕ ОстаткиИОбороты.Склад = &Склад
КОНЕЦ
И ВЫБОР
КОГДА &НоменклатурнаяГруппа = ЗНАЧЕНИЕ(Справочник.НоменклатурныеГруппы.ПустаяСсылка)
ИЛИ &НоменклатурнаяГруппа = НЕОПРЕДЕЛЕНО
ТОГДА ИСТИНА
ИНАЧЕ ОстаткиИОбороты.Номенклатура.НоменклатурнаяГруппа = &НоменклатурнаяГруппа
КОНЕЦ
И ВЫБОР
КОГДА &ТолькоСОборотами = ИСТИНА
ТОГДА ОстаткиИОбороты.СуммаПоступление > 0
ИЛИ ОстаткиИОбороты.СуммаВыбытие > 0
ИНАЧЕ ИСТИНА
КОНЕЦ
СГРУППИРОВАТЬ ПО
ОстаткиИОбороты.Счет,
ОстаткиИОбороты.Номенклатура,
ОстаткиИОбороты.Склад,
ОстаткиИОбороты.Организация,
ОстаткиИОбороты.Подразделение,
ОстаткиИОбороты.Регистратор
Показать
Вот часть того кода, где именно я задаю условие отбора только с оборотами:
ВЫБОР
КОГДА &ТолькоСОборотами = ИСТИНА
ТОГДА ОстаткиИОбороты.СуммаПоступление > 0
ИЛИ ОстаткиИОбороты.СуммаВыбытие > 0
ИНАЧЕ ИСТИНА
КОНЕЦ
Сам отчет тоже прикрепляю. Подскажите пожалуйста, как сделать запрос правильно, чтобы когда пользователь ставит параметр "ТолькоСОборотами" в ИСТИНА, то отображались товары только с оборотами и при этом показывались начальные и конечные остатки в СКД?
ИМЕЮЩИЕ
СУММА(ОстаткиИОбороты.СуммаПоступление) <>0
или СУММА(ОстаткиИОбороты.СуммаВыбытие) <>0
Так, почти работает, подскажите как добавить это условие если параметр в значении ИСТИНА? Я новичок в СКД да и впринципе в 1с8, не совсем понимаю структуры этих запросов, надо чтото вроде
ИМЕЮЩИЕ
Если &ТолькоСОборотами = ИСТИНА тогда
СУММА(ОстаткиИОбороты.СуммаПоступление) <>0
или СУММА(ОстаткиИОбороты.СуммаВыбытие) <>0
КонецЕсли
ИМЕЮЩИЕ
(СУММА(ОстаткиИОбороты.СуммаПоступление) <>0
или СУММА(ОстаткиИОбороты.СуммаВыбытие) <>0)
или (&ТолькоСОборотами = Истина)
Показать
Может быть так.
Если не получится, добавьте в запрос фиктивную агрегатную функцию
СУММА(выбор когда &ТолькоСОборотами = Истина тогда 1 иначе 0 конец)
ИМЕЮЩИЕ
(СУММА(ОстаткиИОбороты.СуммаПоступление) <>0
или СУММА(ОстаткиИОбороты.СуммаВыбытие) <>0)
И СУММА(выбор когда &ТолькоСОборотами = Истина тогда 1 иначе 0 конец)
(9)Не, вообще не то. В первом варианте всегда показывает только с оборотами, во втором синтаксическая ошибка, конструктор не понимает в запросе СУММА(выбор когда &ТолькоСОборотами = Истина тогда 1 иначе 0 конец) что это вообще такое
я б пожалуй первый запрос сгруппировал бы по номенклатуре сначала. Вообще это все отлаживается через консоль запросов - смотришь, где что, видно ошибки.
Хм.
Вангую, что на меня налетят хейтеры.
НО Вы ведь пишите на СКД....
Заходите на вкладку настройки, там есть вкладка Отборы, добавляете группу в нее накидываете отборы и группу делаете с быстрым доступом, да, чуть дольше будет работать, но результат вы получите ровно такой как вам нужно....
(13)так вы сделаейте группу "ИЛИ" и в ней заполните отборы, начальный остаток <>0 или Конечный <>0 или Движения <>0
Тогда будет выводить все как нужно)
У вас просто стоит проверка по оборотам