|
v7: Как установить условие после выполнения запроса? | ☑ | ||
---|---|---|---|---|
0
lesstat
27.06.12
✎
12:31
|
Перем Запрос, ТекстЗапроса, Таб;
//Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |ОбрабатыватьДокументы все; |Склад = Регистр.ОстаткиТМЦ.Склад; |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура; |Количество = Регистр.ОстаткиТМЦ.Количество; |ТекущийДокумент = Регистр.ОстаткиТМЦ.ТекущийДокумент; |Функция КоличествоНачОст = НачОст(Количество); |Функция КоличествоПриход = Приход(Количество); |Функция КоличествоРасход = Расход(Количество); |Функция КоличествоКонОст = КонОст(Количество); |Группировка Склад; |Группировка Номенклатура; |Группировка Документ; |Условие(Склад в ВыбСклад); |Условие(Номенклатура в ВыбНоменклатура); |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл // Заполнение полей Склад Таб.ВывестиСекцию("Склад"); Пока Запрос.Группировка(2) = 1 Цикл // Заполнение полей Номенклатура Таб.ВывестиСекцию("Номенклатура"); Пока Запрос.Группировка(3) = 1 Цикл // Заполнение полей Документ Таб.ВывестиСекцию("Документ"); КонецЦикла; КонецЦикла; КонецЦикла; // Заполнение полей "Итого" Таб.ВывестиСекцию("Итого"); // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать", ""); на форме есть флажки нулевыеостаткинананачало и нулевыеостаткинаконец, как мне отбирать номенклатуры при включении того или иного флажка или если оба флажка включены? |
|||
1
MishaD
27.06.12
✎
12:43
|
Внутри цикла по номенклатуре поставь условие
Если (флажок нулевыеостаткинананачало = 1 ) и (Запрос.КоличествоНачОст<>0) Тогда продолжить КонецЕсли; |
|||
2
lesstat
27.06.12
✎
12:57
|
(1) Спасибо
|
|||
3
lesstat
27.06.12
✎
13:42
|
Блин а как в сам запрос засунуть это условие?
|
|||
4
lesstat
27.06.12
✎
13:43
|
Если делать в цикле то слишком долго работает
|
|||
5
Nik_nik_nik
27.06.12
✎
13:46
|
(3) на экране условий добавьте условие и напишите его руками.
Примерно так и будет: (нулевыеостаткинананачало = 1 ) и (КоличествоНачОст<>0) |
|||
6
lesstat
27.06.12
✎
13:50
|
Условие(Номенклатура в ВыбНоменклатура);"+
ТекстЗапроса = ТекстЗапроса + |Условие(Если ОстатокнаНачало = 1 Тогда (КоличествоНачОст = 0) и (КоличествоКонОст >=0) КонецЕсли);"; Пишет переменная не определена КоличествоНачОст И где то ошибка в присоединении ТекстЗапроса |
|||
7
Ёпрст
27.06.12
✎
13:53
|
(6) не надо пытаться фильтровать в тексте запросе результат функции, чорный запрос этого не умеет "как надо", в нём нет having, условие наложится для каждого вычисления функции.
+ конструкции Если ОстатокнаНачало = 1 Тогда в тексте запроса недопустимы |
|||
8
Андрей_Андреич
naïve
27.06.12
✎
13:54
|
(6) не слушай (5). Нет в запросе фильтра на результат типа Having.
|
|||
9
Андрей_Андреич
naïve
27.06.12
✎
13:55
|
(0) А (7) слушай - он ну сильно умный. Правда.
|
|||
10
ДенисЧ
27.06.12
✎
13:55
|
(8) А куда делся? О_о
Условие(Запрос.КоличествоНачОст>0); |
|||
11
Ёпрст
27.06.12
✎
14:02
|
(10) вот сразу видно - никогда не смотрел на результат оного выполнения
:)))) |
|||
12
Ёпрст
27.06.12
✎
14:02
|
ничего.. это хорошие грабли
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |