• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Как исключить накладные из запроса

  • Автор темы RomanVolgograd
  • Дата начала
R

RomanVolgograd

Конфигурация Тогрговля и Склад 7.7, релиз 942. Товарный отчет, в процедуре Сформировать есть запрос. Из него нада исключить Документ "РеализацияРозница". Можно в условие включить: "КодОперации <> глКО.РозничнаяПродажаЕНВД". Все бы хорошо, но сумма на начало считается неправильно (т.е. сумма на начало все равно включает данные накладные). Кто нибудь сталкивался с подобными проблемы? Если да, то как подходили к их решению? Заранее спасибо...
 
I

Isabela

как-то некорректно изложил проблему
 
A

Akulina

Во-во. Приведи хотя бы текст запроса.
 
R

RomanVolgograd

текст запроса кончно могу привести, но что он даст отдельно от конфигурации. Стандартная конфигурация, Торговля и Склад, Товарный отчет, процдура сформировать.

ТекстЗапроса = "
|ПЕРИОД С ДатаНачала По ДатаКонца;
|
|Докум = Регистр.ПартииНаличие.ТекущийДокумент;
|Фирма = Регистр.ПартииНаличие.Фирма;
|МОЛ = Регистр.ПартииНаличие.МОЛ;
|УпрАналит = Регистр.ПартииНаличие.Фирма.УпрАналитика;
|ЮрЛицо = Регистр.ПартииНаличие.Фирма.ЮрЛицо;
|Номенклатура = Регистр.ПартииНаличие.Номенклатура;
|СтатусПартии = Регистр.ПартииНаличие.СтатусПартии;
|Количество = Регистр.ПартииНаличие.Количество;
|ПродЦена = Регистр.ПартииНаличие.ЦенаПрод;
|Стоимость = Регистр.ПартииНаличие.СуммаБезНДС;
|КодОперации = Регистр.ПартииНаличие.КодОперации;
|
|";

Если ЦенаТовара.ТекущаяСтрока() = 1 Тогда

// Отчет формируется в закупочных ценах
Если ПустоеЗначение(ВыбМОЛ) = 0 Тогда

// МОЛ выбран
УсловиеДляТовара = "";
УсловиеДляТары = " Когда ((СтатусПартии = глСП.Т_Тара) ИЛИ (СтатусПартии = глСП.М_Тара))";

Иначе

// МОЛ не выбран. Не учитываем в приходе и расходе внутреннее перемещения
УсловиеДляТовара = " Когда ((КодОперации <> глКО.Перемещение) И (КодОперации <> глКО.Перемещение) И (КодОперации <> глКО.ПередачаВРозницу) И (КодОперации <> глКО.ВозвратИзРозницы))";
УсловиеДляТары = " Когда (((СтатусПартии = глСП.Т_Тара) ИЛИ (СтатусПартии = глСП.М_Тара))
|И (КодОперации <> глКО.Перемещение) И (КодОперации <> глКО.ПередачаВРозницу) И (КодОперации <> глКО.ВозвратИзРозницы))";

КонецЕсли;

ТекстЗапроса = ТекстЗапроса + "
|Группировка Докум;
|
|Функция НачСтоимостьВсего = НачОст(Стоимость);
|Функция НачСтоимостьТара = НачОст(Стоимость)
| Когда ((СтатусПартии = глСП.Т_Тара) ИЛИ (СтатусПартии = глСП.М_Тара));
|Функция ПрихСтоимостьВсего = Приход(Стоимость)" + УсловиеДляТовара + ";
|Функция ПрихСтоимостьТара = Приход(Стоимость)" + УсловиеДляТары + ";
|Функция РасхСтоимостьВсего = Расход(Стоимость)" + УсловиеДляТовара + ";
|Функция РасхСтоимостьТара = Расход(Стоимость)" + УсловиеДляТары + ";
|Функция КонСтоимостьВсего = КонОст(Стоимость);
|Функция КонСтоимостьТара = КонОст(Стоимость)
| Когда ((СтатусПартии = глСП.Т_Тара) ИЛИ (СтатусПартии = глСП.М_Тара));
|
|";

Иначе

// Если отчет формируется в розничных ценах
Если ПустоеЗначение(ВыбМОЛ) = 0 Тогда

// МОЛ выбран
УсловиеДляТовара = "";
УсловиеДляТары = " Когда ((СтатусПартии = глСП.Т_Тара) ИЛИ (СтатусПартии = глСП.М_Тара))";

Иначе

// МОЛ не выбран. Не учитываем в приходе и расходе внутреннее перемещения
УсловиеДляТовара = " Когда ((КодОперации <> глКО.Перемещение) И (КодОперации <> глКО.Перемещение) И (КодОперации <> глКО.ПередачаВРозницу) И (КодОперации <> глКО.ВозвратИзРозницы))";
УсловиеДляТары = " Когда (((СтатусПартии = глСП.Т_Тара) ИЛИ (СтатусПартии = глСП.М_Тара))
|И ((КодОперации <> глКО.Перемещение) ИЛИ (Докум.Вид() = ""ПереоценкаРозница"")) И (КодОперации <> глКО.ПередачаВРозницу) И (КодОперации <> глКО.ВозвратИзРозницы))";

КонецЕсли;

ТекстЗапроса = ТекстЗапроса + "
|Группировка Номенклатура;
|Группировка ПродЦена;
|Группировка Докум;
|
|Функция НачКоличествоВсего = НачОст(Количество);
|Функция НачКоличествоТара = НачОст(Количество)
| Когда ((СтатусПартии = глСП.Т_Тара) ИЛИ (СтатусПартии = глСП.М_Тара));
|Функция ПрихКоличествоВсего = Приход(Количество)" + УсловиеДляТовара + ";
|Функция ПрихКоличествоТара = Приход(Количество)" + УсловиеДляТары + ";
|Функция РасхКоличествоВсего = Расход(Количество)" + УсловиеДляТовара + ";
|Функция РасхКоличествоТара = Расход(Количество)" + УсловиеДляТары + ";
|Функция КонКоличествоВсего = КонОст(Количество);
|Функция КонКоличествоТара = КонОст(Количество)
| Когда ((СтатусПартии = глСП.Т_Тара) ИЛИ (СтатусПартии = глСП.М_Тара));
|Условие (ПродЦена <> 0);
|
|";

КонецЕсли;


Если в конце дописать
ТекстЗапроса = ТекстЗапроса + "
|Условие (КодОперации <> глКО.РозничнаяПродажаЕНВД);";
то в обороты (РасхКоличествоВсего) накладные не попадают. но они попадаю в сумму на начало (НачКоличествоВсего).
Это не совсем правильно... Я так думаю. Как решить данную проблему?
 
V

vitfil

КодОперации - реквизит регистра, а не измерение. По реквизитам нет итогов (что-то типа субконто с пометкой "только обороты"). Вывод - никак по коду операции.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!