![]() |
|
v7: Как через sqlite выбрать документы по его статусу? | ☑ | ||
---|---|---|---|---|
0
sysadminlk
01.07.20
✎
15:27
|
Нужно найти не проведен и не удалён.
|
|||
1
Djelf
гуру
01.07.20
✎
15:47
|
(0) В чем сложность то? Это ну... Ну совсем простенький запрос.
|
|||
2
sysadminlk
01.07.20
✎
16:09
|
(1) спасибо, не знал что через журнал
|
|||
3
sysadminlk
01.07.20
✎
16:09
|
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать) |ОбрабатыватьДокументы НеПроведенные; |Обрабатывать НеПомеченныеНаУдаление; |Док = Документ.Доставка.ТекущийДокумент; |"//}}ЗАПРОС ; Запрос = СоздатьОбъект("Запрос"); Рез = Запрос.Выполнить(ТекстЗапроса); Сообщить(Рез); Если Рез = 1 Тогда запрос.Выгрузить(ТабФорм); КонецЕсли; Запрос = ""; хотел через нативный запрос но чет ничего не выводит а где тут ошибка? |
|||
4
Злопчинский
01.07.20
✎
16:34
|
(3) Группировку воткни!
|
|||
5
sysadminlk
01.07.20
✎
17:01
|
может пригодится кому:
Проведен="and (Журнал.CLOSED%2=1)"; Непроведен="and (Журнал.CLOSED%2=0 and Журнал.ISMARK='')"; ПомеченНаУдаление="and (Журнал.ISMARK='*')"; НеПомеченНаУдаление="and (Журнал.ISMARK='')"; |
|||
6
sysadminlk
01.07.20
✎
17:01
|
итог такой
текст="SELECT Журнал.IDDOC [Документ :Документ.Доставка] FROM Журнал WHERE |Журнал.IDDOCDEF = :ВидДокумента.Доставка |and Журнал.CLOSED%2=0 |and Журнал.ISMARK=''"; |
|||
7
sysadminlk
01.07.20
✎
17:10
|
Всё-таки SQLite быстрее
Старт = _GetPerformanceCounter(); запрос.ВыполнитьЗапрос("create virtual table Журнал using dbeng(Журнал)"); запрос.Подставлять("Сотрудник", Вар); текст="SELECT Журнал.IDDOC [Документ :Документ.Доставка] FROM Журнал WHERE |Журнал.IDDOCDEF = :ВидДокумента.Доставка |and Журнал.CLOSED%2=0 |and Журнал.ISMARK=''"; //Сообщить(запрос.ОбработатьТекстЗапроса(текст)); тз=запрос.ВыполнитьЗапрос(текст); тз.Выгрузить(ТабФорм); базаДанных.Закрыть(); Стоп = _GetPerformanceCounter(); Микро = Стоп-Старт; Сообщить(Микро); ТабФорм.Очистить(); Старт = _GetPerformanceCounter(); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с Дата1 по Дата2; |ОбрабатыватьДокументы НеПроведенные; |Обрабатывать НеПомеченныеНаУдаление; |Док = Документ.Доставка.ТекущийДокумент; |Группировка Док; |"//}}ЗАПРОС ; Запрос = СоздатьОбъект("Запрос"); Рез = Запрос.Выполнить(ТекстЗапроса); Если Рез = 1 Тогда запрос.Выгрузить(ТабФорм); КонецЕсли; Запрос = ""; Стоп = _GetPerformanceCounter(); Микро = Стоп-Старт; Сообщить(Микро); |
|||
8
sysadminlk
01.07.20
✎
17:11
|
итог количество миллисекунд получилось в среднем такое
7 18 |
|||
9
Djelf
гуру
01.07.20
✎
17:29
|
(8) Ну так нельзя же сравнивать. В прямом нет ограничения на дату, а в чёрном есть.
Ну и 7мс и 18мс это значит что документов очень мало. Проверяй на Реализации, что-ли. Разница должна быть в 10 раз. А в чёрный добавь еще |Без итогов; и |Группировка Докбез упорядочивания; еще пару мс может сэкономишь. А в прямом Журнал.CLOSED%2=0 - лишние вычислительные затраты, пустой строки в данном случае вполне достаточно. |
|||
10
sysadminlk
01.07.20
✎
18:40
|
(9) Журнал.CLOSED%2 там 4 почему что стоит, поэтому пустая строка не подходит
проведенные 5, а не проведенные 4 загуглил оказалось вот так надо (5) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |