|
v7: Как получить количество строк в контексте документа через 1SQLite? | ☑ | ||
---|---|---|---|---|
0
alyuev
14.08.20
✎
11:03
|
Есть сохраненный документ. Как после редактирования строк табличной части (например, добавили или удалили строки) - получить лайтом количество строк?
Запрос вида: текЗапроса="Select Count(NСтр) |From ДокументСтроки_"+ВидДок+" as Док |Where Док.IDDOC = :ТекДок |"; Вернет количество ранее сохраненного документа. А как текущее значение вернуть лайтом? |
|||
1
ДенисЧ
14.08.20
✎
11:08
|
А зачем это делать черз склайт?
|
|||
2
Djelf
14.08.20
✎
11:09
|
Примерно так же
|
|||
3
Djelf
14.08.20
✎
11:12
|
(1) А вдруг у него документы больше 9999 строк? Я что-то не уверен что 7ка в КоличествоСтрок() вернет правильное значение.
|
|||
4
alyuev
14.08.20
✎
11:35
|
Да, строк бывает гораздо больше 9999. Стандартное КоличествоСтрок() возвращает правильное значение. Но долго. Делали замер: стандартное - 30сек. Лайтовский запрос - несколько секунд.
(2) Не работает. |
|||
5
Djelf
14.08.20
✎
11:41
|
Потому что :ТекДок надо правильно подставлять!
Проверь что в SELECT :ТекДок у тебя id9 подставляется. |
|||
6
Salimbek
14.08.20
✎
12:35
|
(5) Вы уверены? Там, как я понял, товарищ всякую всячину в _Открытом_ документе делает, и вот ему, без записи, хочется сразу узнать - сколько строк у него в документе. Запрос sqlite - вернет данные из базы, как автор в (0) и говорит - "количество ранее сохраненного документа".
(0) Вам бы просто вести глобальный счетчик строк в этом документе. Устанавливаете в ПриОткрытии и при каждом Добавлении/Удалении строки - счетчик увеличиваете/уменьшаете. |
|||
7
Djelf
14.08.20
✎
12:47
|
А "текущее количество строк".
Ну так у не записанного документа и в mssql бессмысленно запросом вычислять количество строк. А у записанного, да, жуткая жуть!
|
|||
8
Злопчинский
14.08.20
✎
19:56
|
фу. бякасть какая, неужели количествоСтрок так тупит..? сейчас тупо прорверю
|
|||
9
Ёпрст
14.08.20
✎
20:15
|
(0) никак
|
|||
10
Ёпрст
14.08.20
✎
20:16
|
Да и.. зачем ?
|
|||
11
Злопчинский
14.08.20
✎
20:36
|
проверил.. жуть...
|
|||
12
alyuev
17.08.20
✎
13:57
|
Если для текущего состояния (контекста) вызывать КоличествоСтрок() - оно выполняется очень быстро, плюс выдается текущее (не сохраненное) количество. Если вызывать через объект, т.е. выбДок.КоличествоСтрок() - тогда тупит.
|
|||
13
uno-group
17.08.20
✎
14:21
|
Конт="КвоСтрок";
Открытьформу(ВыбДок,Конт); В документе при открытии Если Форма.Парметр="КвоСтрок" тогда Форма.Парметр=КоличествоСтрок(); СтатусВозврата(0); Возврат; Бредово конечно но точно быстрее чем за 30 сек должно работать. |
|||
14
Djelf
17.08.20
✎
14:46
|
(12) Так по диспетчеру задач видно что 1С при выбДок.КоличествоСтрок() весь документ из базы вытягивает, на тесте в (7) 600 метров памяти потребовалось.
В (6) правильно было сказано: если нужно быстро получить количество строк - делай счетчик в шапке документа. И я согласен с (10)! Нафехоа это вообще нужно? Разве что разбивать документ на куски по 9999 строк, но на таких документах не сильно большие тормоза. |
|||
15
trdm
17.08.20
✎
15:53
|
(10) Садо-мазо-огородо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |