v7: sql запрос. Получить количество дней, где остаток больше 0 #688039


#0 by Lacoster
Всем привет! Как из темы ясно, нужно получить количество дней где остаток у номенклатуры больше 0. Это необходимо для расчета динамики. Я задаю интервал и менеджера (чья это номенклатура). Собственно получить остаток на дату не сложно $РегистрОстатки.ОстаткиТМЦ(:ВыбДата~,,     |,     |Номенклатура,) и т.д. вопрос как пробежать по диапазону дат? Циклом бежать по датам и подставлять нужную в запрос а потом Union all? В итоге получится здоровенный запрос (если скажем динамику за год посчитать нужно) и попытаться его выполнить? Или всё же есть более простые и лаконичные решения? В этом вопрос.
#1 by HIDDEN MESSAGE
#2 by Lacoster
??
#3 by dk
хрень какая получилась, хотя теги вроде ставил
#4 by dk
попробую без комментариев
#5 by Lacoster
Идея интересная. Вот только где у тебя такое что если товар пришел сегодня и сегодня его весь продали?
#6 by dk
там же есть объединение с продажами - так что строчка должна быть, хотя я такую ситуацию не рассматривал подробно
#7 by Mikeware
Да возьмите вы ОстаткиОбороты в разрезе дня, получите количество дней где есть остатки и/или движения.
#8 by dk
Дни = CASE WHEN ((@n <> 0) OR (ОборотКол <> 0)) THEN 1 ELSE 0 END вот тут единичка в день пишется если есть остаток или был оборот (продажа)
#9 by dk
если нет движений, то этот день пропустит
#10 by Lacoster
неа, не пропустит. Он остаток тогда достанет. походу дела это то что нужно. Щас попробую
#11 by dk
видимо у меня какие-то неправильные ОстаткиОбороты ))
#12 by Dolly_EV
Класс "ПрямойЗапрос" ВТ РегистрОстаткиОбороты: $РегистрОстаткиОбороты Синтаксис: $РегистрОстаткиОбороты.<ИмяРегистра>(НачалоПериода, КонецПериода, Периодичность, МетодДополнения, Условие, Измерения, Ресурсы, Соединения) .... •    Периодичность – Тип: Строка. Значение периодичности. Возможные значения: Период|Документ|День|Неделя|Месяц|Квартал|Год [ДОПОЛНЕНИЕ]. ЕСЛИ ПОСЛЕ ПЕРИОДИЧНОСТИ ДОБАВЛЕНА КОМАНДА «ДОПОЛНЕНИЕ», ИТОГОВАЯ ТАБЛИЦА БУДЕТ СОДЕРЖАТЬ ВСЕ ПЕРИОДЫ ВХОДЯЩИЕ В ТАБЛИЦУ, А НЕ ТОЛЬКО ТЕ КОТОРЫЕ ИМЕЛИ ОСТАТКИ И/ИЛИ ОБОРОТЫ. Дополнение невозможно по периодичности: Период, Документ. Для метода дополнения «Движения» параметр «Дополнение» игнорируется. По умолчанию: Период. Слово "ДОПОЛНЕНИЕ" = то, что тебе и нужно....
#13 by Dolly_EV
возьми класс "ПрямойЗапрос" - там "правильные" ОстаткиОбороты))
#14 by dk
а есть пример с этим дополнением - у меня на синтаксис матерится
#15 by Lacoster
подскажи что за дополнение на скрине изображено такое для запросов?
#16 by Dolly_EV
Это класс "ПрямойЗапрос", парсер. Не родной 1C++
#17 by dk
а отличий от 1с++ много? т.е. запустятся запросы написанные для 1с++ на прямом запросе?
#18 by Ёпрст
нет, там другой синтаксис.. аля снеговик.
#19 by dk
консоль запросов 1с++ вроде эта
#20 by dk
тогда останемся на 1с++
#21 by Dolly_EV
Запустятся. При выполнении есть параметр "БезПодготовки", тогда текст запроса не парсится и отправляется как есть на выполнение. Вся красота класса - кроссплатформенность. Ты пишешь для СКЛь и ДБФ одно и то же. Класс сам парсит или под СКЛь или под 1SQLite
#22 by Dolly_EV
Да и как бы ничто не мешает, использую класс "ПрямойЗапрос", параллельно писать просто под 1C++
#23 by Lacoster
Получилось сделать проще |SELECT Ном.ID [Элемент $Справочник.Номенклатура]         |"; Но тут пока по 1 номенклатуре, но список засунуть ничего не стоит
#24 by Lacoster
Коллеги! Я был не прав. не работает так как нужно. Вот верное решение которое отработало на отлично! запрос=СоздатьОбъект("ПрямойЗапрос");
#25 by Mikeware
о чем и было сказано сутки назад.
#26 by dk
синтаксис вроде такой же как в 1с++, я разницы не вижу что-то
#27 by Lacoster
|       День Дополнение, вот вся разница в этом
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С