|
v7: Запрос. Выбрать номенклатуру с остатком или не помеченную на удаление | ☑ | ||
---|---|---|---|---|
0
Midzgun
03.12.13
✎
20:38
|
Друзья, добрый вечер!
Конфигурация ТиС 9.2. Задача у меня такая: нужно выбрать запросом номенклатуру, которая есть на остатках и которая без остатка, но не помечена на удаление. Пишу следующий запрос Период с ДатаНач по ДатаНач; Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура; Количество = Регистр.ОстаткиТМЦ.Количество; Функция КоличествоНом = КонОст(Количество); Группировка Номенклатура без групп все; Условие( (Номенклатура.ПометкаУдаления()=0) или (Запрос.КоличествоНом<>0)); условие не отрабатывает, подскажите где я накосячил? |
|||
1
ДенисЧ
03.12.13
✎
20:39
|
и не сработает.
Фильтруй при выводе |
|||
2
v4442
03.12.13
✎
20:41
|
МОЖЕТ ТАК
Период с ДатаНач по ДатаНач; Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура; Количество = Регистр.ОстаткиТМЦ.Количество; Функция КоличествоНом = КонОст(Количество); Группировка Номенклатура без групп все; Условие( (Номенклатура.ПометкаУдаления()=0) и (Запрос.КоличествоНом<>0)); |
|||
3
Midzgun
03.12.13
✎
20:43
|
(2) так смысл, чтобы или нет на остатке, но без пометки или есть на остатке и на пометку пофигу. Так что тут "и" логически неверно
|
|||
4
v4442
03.12.13
✎
20:43
|
возможно так ))
Период с ДатаНач по ДатаНач; Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура; Количество = Регистр.ОстаткиТМЦ.Количество; Функция КоличествоНом = КонОст(Количество); Группировка Номенклатура без групп все; Условие Номенклатура.ПометкаУдаления()=0; |
|||
5
Midzgun
03.12.13
✎
20:44
|
(1) т.е. если пишу в группировке "все", то там уже условия в запросе не пашут?
|
|||
6
Midzgun
03.12.13
✎
20:45
|
(4) так бы было супер, но есть номенклатура с пометкой на удалении и остатком. как это не было бы печально )
|
|||
7
v4442
03.12.13
✎
20:47
|
(6) точно
пиво после виски ))) |
|||
8
Ork
03.12.13
✎
20:49
|
(0) Выбирать нужно по справочнику. А не по регистру. Там можно фильтровать помеченные/непомеченные.
|
|||
9
Midzgun
03.12.13
✎
20:52
|
(8) т.е. нужно Номеклатура = Справочник.Номенклатура, Регистр.ОстаткиТМЦ.Номенклатура ???
|
|||
10
v4442
03.12.13
✎
20:52
|
надо попробовать в условие затолкать количество,может что и получится
Период с ДатаНач по ДатаНач; Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура; Количество = Регистр.ОстаткиТМЦ.Количество; Функция КоличествоНом = КонОст(Количество); Группировка Номенклатура без групп все; Условие(((Номенклатура.ПометкаУдаления()=0) и КонОст(Количество)>0) или (Запрос.КоличествоНом<>0)); |
|||
11
Midzgun
03.12.13
✎
20:58
|
(10) это ты пошутил, да?
|
|||
12
v4442
03.12.13
✎
21:09
|
|Период с ВыбНачПериода по ВыбКонПериода;
|Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура; |Количество = Регистр.ОстаткиТМЦ.Количество; |НомерСтроки = Регистр.ОстаткиТМЦ.НомерСтроки; |Функция КоличествоНачОст = НачОст(Количество); |Функция НомерСтрокиСумма = Сумма(НомерСтроки) когда(Номенклатура.ПометкаУдаления()=1); |Группировка Номенклатура без групп все; |
|||
13
v4442
03.12.13
✎
21:10
|
Но самое простое решение в (1)
|
|||
14
Холст
03.12.13
✎
21:29
|
спр Номенклатура левый джойн Остатки ))
блин, тут 1Совский запрос надо... тогда можно условие вынести в функцию, правда работать медленно будет |
|||
15
v4442
03.12.13
✎
21:47
|
Вот на кодил что-то
Процедура Сформировать() Перем Запрос, ТекстЗапроса, Таб; //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент, Регистр.ОстаткиТМЦ.Номенклатура.ТекущийЭлемент; |Количество = Регистр.ОстаткиТМЦ.Количество; |Функция КоличествоКонОст = КонОст(Количество); |Группировка Номенклатура без групп все; |"//}}ЗАПРОС ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Спр=СоздатьОБъект("Справочник.Номенклатура"); // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Сформировать"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл Помнаудал=0; ттт =Запрос.Номенклатура; Если Спр.НайтиЭлемент(ттт)=1 Тогда Помнаудал=ттт.ПометкаУдаления(); КонецЕсли; Если (Помнаудал=1) или (Запрос.КоличествоКонОст<>0) Тогда Таб.ВывестиСекцию("Номенклатура"); КонецЕсли; КонецЦикла; // Заполнение полей "Итого" Таб.ВывестиСекцию("Итого"); // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("Сформировать", ""); КонецПроцедуры |
|||
16
hhhh
03.12.13
✎
22:56
|
(11) ну это, снять пометку удаления не судьба?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |