|
v7: Как быстро посчитать число элементов справочника? | ☑ | ||
---|---|---|---|---|
0
Новый участник
20.10.14
✎
11:29
|
Файловая БД,
ВсегоЭлементов = 0; Спр = СоздатьОбъект("Справочник.Контрагенты"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл ВсегоЭлементов=ВсегоЭлементов+1; КонецЦикла; База УРБДшная, поэтому код не гарантированно равен числу элементов. |
|||
1
Grekos2
20.10.14
✎
11:31
|
Может так ?
ВЫБРАТЬ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) КАК Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура |
|||
2
Krolik Bezobraznik
20.10.14
✎
11:35
|
(1) В условии только исключи из отбора группы и помеченные на удаление, если необходимо =)
|
|||
3
Looser-1c
20.10.14
✎
11:37
|
select count (ID) from $Спраовчник.Контрагеныты
|
|||
4
73с
20.10.14
✎
11:38
|
(1) а как это в 7.7 работать будет ?
|
|||
5
Chai Nic
20.10.14
✎
11:40
|
(4) см. (3) - ODBCRecordSet из 1с++.
|
|||
6
Новый участник
20.10.14
✎
11:44
|
О, наконец-то появилась возможность применить 1С++
Спасибо! |
|||
7
DCKiller
20.10.14
✎
12:25
|
(6) Бгггг
|
|||
8
vcv
20.10.14
✎
12:37
|
Если база DBF, взять размер файла вычесть размер заголовка и поделить на размер записи. Быстрее просто не придумаешь :)
|
|||
9
Ненавижу 1С
гуру
20.10.14
✎
12:40
|
(8) не забыть про помеченные удаленными записи DBF
|
|||
10
mg-samara
20.10.14
✎
12:59
|
ТекущийЭлемент = Справочник.Контрагенты.ТекущийЭлемент;
Функция Счётчик = Счётчик() |
|||
11
Масянька
20.10.14
✎
13:04
|
Функция получения "свободных" кодов.
ТекКод = 1; Спр = СоздатьОбъект("Справочник.Номенклатура"); Спр.ПорядокКодов(); Спр.ВыбратьЭлементы(0); Пока Спр.ПолучитьЭлемент() = 1 Цикл СправКод = Число(Спр.Код); Пока ТекКод <> СправКод Цикл ТекКод = ТекКод + 1; КонецЦикла; КонецЦикла; В справочнике - сортировка по коду. От последнего кода отнять полученное функцией число. Как вариант :) |
|||
12
1dvd
20.10.14
✎
13:06
|
(11) девушка, Вы в Индии не бывали?
|
|||
13
mg-samara
20.10.14
✎
13:18
|
(12) Может она там и родилась?
|
|||
14
Масянька
20.10.14
✎
13:24
|
(12) А что?
(13) Нет. |
|||
15
1dvd
20.10.14
✎
13:25
|
(14) Код очень индусский
|
|||
16
Масянька
20.10.14
✎
13:26
|
(15) Каков вопрос, таков и ответ :)
|
|||
17
1dvd
20.10.14
✎
13:33
|
(16) раз уж используете цикл, то не проще ли просто посчитать количество простым счётчиком (а = а + 1;) ?
|
|||
18
Масянька
20.10.14
✎
13:35
|
(17) Нет. Мне были нужны именно "свободные" коды.
|
|||
19
1dvd
20.10.14
✎
13:45
|
(18) а, ну если Вам были нужны, то да. Пусть (0) тоже спервая считает пропуски, а потом отнимает их от самого большого кода.
|
|||
20
Simod
20.10.14
✎
14:09
|
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |ТекущийЭлемент = Справочник.Номенклатура.ТекущийЭлемент; |Функция Счётчик = Счётчик(); |Группировка ТекущийЭлемент без упорядочивания; |" ; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Сообщить(Запрос.Счётчик); |
|||
21
mg-samara
20.10.14
✎
15:31
|
(20) я уже тут (10) написал.
Но похоже тут никто не читает. :-) |
|||
22
МихаилМ
20.10.14
✎
15:34
|
все зависит от варианта хранения данных:
в кс быстрее запрос. в фс - перебор. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |