|
v7: В одном запросе к регистру остатков получить остатки по позициям с движениями | ☑ | ||
---|---|---|---|---|
0
GrayS19
30.04.21
✎
11:15
|
Не могу найти хорошей документации по запросам в 7.7 (стандартным).
Простая задача : получить из регистра остатков остатки товаров , по которым были/не были движения за период. Лобовое решение: 1-й запрос - номенклатура с движениями |Период С ДатаНач По ДатаОконч; |Товар = Регистр.Товары.Номенткатура; |Количество = Регистр.Товары.Количество; |Функция ПриходК = Приход(Количество); |Функция РасходК = Расход(Количество); |Группировка Товар; Выгрузили результаты запроса в СписокТоваров 2-й запрос: фильтр по двигавшимся |Период С ДатаНач По ДатаОконч; |Товар = Регистр.Товары.Номенткатура; |Количество = Регистр.Товары.Количество; |Функция КонОстК = КонОст(Количество); |Условие (Товар в СписокТоваров); |Группировка Товар; А в одном запросе возможно штатно отфильтровать остатки ? |
|||
1
Mikeware
30.04.21
✎
11:17
|
в черных, насколько помню, нет....
|
|||
2
Злопчинский
30.04.21
✎
11:43
|
попробуй так
|Функция ПриходК = Приход(Количество); |Функция РасходК = Расход(Количество); |Функция КонОстК = КонОст(Количество); |Условие((Запрос.РасходК<>0) ИЛИ (Запрос.ПриходК<>0)); |
|||
3
GrayS19
30.04.21
✎
11:51
|
(2) конечно пробовал, тогда остатки на конец не показывает
|
|||
4
Mikeware
30.04.21
✎
11:55
|
(3) а что мешает использовать нормальные запросы?
можно еще выгрузить результат в индексированную ТЗ, и отфильтровать там. Но это опять же если религия не мешает |
|||
5
acanta
30.04.21
✎
12:03
|
Регистр.товары.номенклатура,справочник.номенклатура.текущийэлемент;
Это типа leftjoin Какая-нибудь функция=сумма(1); Чтобы запрос не обрезал сам нулевую номенклатуру. |
|||
6
Злопчинский
30.04.21
✎
12:03
|
(3) тады оставить только КОнОстК, а фильтровать уже в обходе запроса?
|
|||
7
GrayS19
30.04.21
✎
12:05
|
(4) так я и использую нормальные, не чёрные. Про индексированную ТЗ надо читать, не знаком.
|
|||
8
acanta
30.04.21
✎
12:06
|
В качестве функции можно исправить сумма (любая глобальная функция), но индексирования по ним точно не будет, поэтому тормозит эта высшая математика в 7ке еще больше чем 8ка с котиками.
|
|||
9
1Сергей
30.04.21
✎
12:06
|
(7) в (0) черные запросы. Предлагают прямые
|
|||
10
GrayS19
30.04.21
✎
12:11
|
(6) нужны итоги по вышестоящим группам справочника "Номенклатура". Без них - да, обход с фильтром. Вобщем понятно: запрос-фильтр перед основным запросом. Может не сильно красиво, но работоспособно.
|
|||
11
Mikeware
30.04.21
✎
12:24
|
(7) ну тогда читай про индексированную таблицу... там все это делается быстро и просто
|
|||
12
acanta
30.04.21
✎
12:24
|
Никто не против делать выборку прямыми запросами а группировку в иерархии черным с функцией сумма с какими-то то параметрами поиска по полученной тз.
|
|||
13
Mikeware
30.04.21
✎
12:26
|
(12) ээээ? не, можно еще в промежутке выгружать результаты запроса в экссель, там преобразовывать в цсв...
но нахрена? |
|||
14
acanta
30.04.21
✎
12:26
|
Наверняка той sql может круче, но я прочитала и не осилила, а пробовать на боевой базе без соответствующего образования стремно.
|
|||
15
Злопчинский
30.04.21
✎
12:29
|
не, итз - хорошая вещь
|
|||
16
acanta
30.04.21
✎
12:45
|
А вообще всем известно,что черный запрос это обычный файл dbf с какими-то cdx. Даже если сама база sql. Это действительно странно использовать обычный запрос в sql базе.
|
|||
17
Mikeware
30.04.21
✎
12:52
|
(16) "так истерически слежалось"©.
ну то есть исторически сложилось... но в те времена за использование в качестве иденитификаторов УИДов могли и морду набить... |
|||
18
GrayS19
30.04.21
✎
12:56
|
База DBF. Поэтому, наверное, проще чёрными.
|
|||
19
Mikeware
30.04.21
✎
13:00
|
(18) тогда черный запрос, выгрузить в ИТЗ, там поставить фильтр по нулевым оборотам, и группировка по номенклатуре
|
|||
20
Злопчинский
30.04.21
✎
13:00
|
(19) академик!
|
|||
21
Mikeware
30.04.21
✎
13:02
|
(20) "у нас академиков не хватает раздевалки обслуживать!"©угроза замдекана
|
|||
22
GrayS19
30.04.21
✎
13:04
|
(15)верю земляку, посмотрел документацию на 1цпп.ру - 16 страниц. Нада грызть
|
|||
23
Злопчинский
30.04.21
✎
13:10
|
(22)выгружаешь плоский результат запроса в ИТЗ.
добавляешь индекс по полю, например ПриходК устанавливаешь фильтр на значение прихода в диапазоне От-До. удаляешь. профит. |
|||
24
Mikeware
30.04.21
✎
13:10
|
(22) слона едят по кусочкам
из всей документации надо [пока] два метода. а установить библиотеку, создать объект ИТЗ, - это штатные. |
|||
25
Mikeware
30.04.21
✎
13:11
|
(23) а после - "сгруппировать"
|
|||
26
GrayS19
30.04.21
✎
13:45
|
всем спасибо ! Если не заленюсь, сделаю 2 варианта: 2 чёрных (то что знаю, что в топике) и чёрный + ИТЗ.
Интересно будет увидеть разницу по времени исполнения. Может и небольшая ? :) |
|||
27
Mikeware
30.04.21
✎
14:01
|
(26) раз уж взялся, то делай сразу прямым запросом :-)
|
|||
28
Ёпрст
30.04.21
✎
14:07
|
(0) На вот, занимайся. И не надо ничего грызть
https://cloud.mail.ru/public/AeJK/71o1vuzd1 |
|||
29
GrayS19
30.04.21
✎
14:35
|
(28) отдельный респект уважаемому гуру. Не только за эту тему. В попытке получить быстрый результат сразу получил отлуп :
Рез = ОлеДБ.Соединение(Соединение); {D:\ISN\1C\_ОБРАБОТКИ\_ЗАПРОСОСТАТКИИОБОРОТЫ_ФОКС_СКУЛЬЛАЙТ (1).ERT(11)}: FAILED! IDataInitialize::GetDataSource(): Класс не зарегистрирован Проверил на 1cpp.dll версия 2.5.0.7 с 1cpp.ru и версии 3.2.2.0 - не помню откуда |
|||
30
Mikeware
30.04.21
✎
14:40
|
(29) фокс установлен?
|
|||
31
Mikeware
30.04.21
✎
14:41
|
+(30) если нет, то кинь в каталог 1sqlite, и заремь все фоксовое
|
|||
32
GrayS19
03.05.21
✎
10:43
|
(26)- ответ самому себе :) , может кому пригодится (чтобы начать изучать прямые запросы)
Сравнил получение плоской таблицы движений и остатков через SQLite из (28) и чёрного запроса. За февраль 2021 года (начал с него): SQLite : строк в таблице результата - 49303, время выполнения - 4.28 сек. чёрный : строк в таблице результата - 48865, время выполнения - 17.90 сек. За январь 2021 года: SQLite : строк в таблице результата - 49420, время выполнения - 3.41 сек. чёрный : строк в таблице результата - 48629, время выполнения - 18.32 сек. Почему разное количество строк, хотя итоги по всем колонкам идут - выясняю. |
|||
33
Mikeware
03.05.21
✎
10:54
|
(32) ускорение - это хорошо. Но немаловажно и то, что запросы уже человеческие...
пысы. для поиска расхождений у ИТЗ есть метод ЛевоеСоединение, например... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |