![]() |
![]() |
![]() |
|
Быстрый подсчет общего количества документов | ☑ | ||
---|---|---|---|---|
0
DANDAN
13.01.06
✎
10:18
|
В 1с при выборе удаления помеченных документов. Осуществляется быстрый подсчет всех документов. Это видно в строке состояния. Как можно такое сделать ????
Процедура ххх.выбратьДокуметы() Пока ххх.ПолучитьДокумент()=1 Цикл занимает очень много времени.. КонецЦикла. |
|||
1
ВторНик
13.01.06
✎
10:21
|
поиск рулит
|
|||
2
DANDAN
13.01.06
✎
10:23
|
т.е. ПОИСК? надо посчитать количество
|
|||
3
Simod
13.01.06
✎
10:24
|
||||
4
lisss
13.01.06
✎
10:27
|
(2)запросом.... вот пример для справочника, по аналогии можешь сделать для доков:
Вид = "Номенклатура"; Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Товар = Справочник." + Вид + ".ТекущийЭлемент; |Функция КолЗап = Счётчик(Товар);"; Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда Сообщить("Нет, нах...") Иначе Сообщить(Запрос.КолЗап) КонецЕсли; |
|||
5
1CPP
13.01.06
✎
10:29
|
Лучше прямой 1С++ запрос
SELECT COUNT(*) FROM $Документ.ххх |
|||
6
Zmich
13.01.06
✎
10:30
|
Инд = 1;
Для Инд = 1 По Метаданные.Документ() Цикл Идент = Метаданные.Документ(Инд).Идентификатор; ДокИдент = "Документ." + Идент; Док = СоздатьОбъект(ДокИдент); Кол = 0; Док.ВыбратьДокументы(); Пока Док.ПолучитьДокумент() = 1 Цикл Кол = Кол + 1; КонецЦикла; Сообщить(Идент + " = " + Строка(Кол)); КонецЦикла; |
|||
7
Zmich
13.01.06
✎
10:30
|
Инд = 1;
Для Инд = 1 По Метаданные.Документ() Цикл Идент = Метаданные.Документ(Инд).Идентификатор; ДокИдент = "Документ." + Идент; Док = СоздатьОбъект(ДокИдент); Кол = 0; Док.ВыбратьДокументы(); Пока Док.ПолучитьДокумент() = 1 Цикл Кол = Кол + 1; КонецЦикла; Сообщить(Идент + " = " + Строка(Кол)); КонецЦикла; |
|||
8
Zmich
13.01.06
✎
10:31
|
(+7) Если блок
Док.ВыбратьДокументы(); Пока Док.ПолучитьДокумент() = 1 Цикл Кол = Кол + 1; КонецЦикла; работает долго, меняешь его на запрос, как советует (4) |
|||
9
1CPP
13.01.06
✎
10:31
|
(7) - от этого уходили.
Прямые запросы рулят. Обычные (4) - тормозят |
|||
10
DANDAN
13.01.06
✎
10:41
|
А если мне надо сделать подсчет доков для любой базы, тогда я же не знаю какие доки есть в этой базе.
и тогда ТекстЗапроса = " |Товар = Справочник." + Вид + ".ТекущийЭлемент; |Функция КолЗап = Счётчик(Товар);"; ВИД - неизвестен :-( |
|||
11
lisss
13.01.06
✎
11:08
|
Вот тебе готовый, раз сам думать не хочешь...
Кол = 0; Запрос = СоздатьОбъект("Запрос"); Для Инд = 1 По Метаданные.Документ() Цикл Идент = Метаданные.Документ(Инд).Идентификатор; ТекстЗапроса = " |Товар = Документ." + Идент + ".ТекущийДокумент; |Функция КолЗап = Счётчик(Товар);"; Если Запрос.Выполнить(ТекстЗапроса) = 1 Тогда Кол = Кол + Запрос.КолЗап; КонецЕсли; КонецЦикла; |
|||
12
DANDAN
13.01.06
✎
11:25
|
Огромное спасибо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |