Количество записей в справочнике

Форум 1С: Одинэс.Ру

Найти!

Количество записей в справочнике

Струнин
15.06.2009 - 12:26
База DBF
Просто рассуждаю. Раньше до 1с, количество записей в файле DBF (вроде не во всех типах но), можно было прочитать из заголовка файла. в 1с есть функция КоличествоЗаписей(). Так вот подумал, можно ли как-нибудь зная имя файла в котором хранится какой-либо справочник (например Номенклатура), открыть на чтение, да и прочитать число записей. Возникает вопрос как узнать имя файла. Можно достать из DD. Поиском названия справочника строчки перебрать и найти название, затем открыть и взять количество. Понятно, что количество может различаться от того, которое видно в пользовательском режиме и все же было бы полезно для некоторых манипуляций...
Но будет ли это быстее перебора элементов справочника?
А можно как-нибудь по другому узнать название не шерстя DD?
И вобще есть ли способы сразу количество элементов справочника узнать?
:)
К списку тем 1 > К списку форумов

Интересные темы

odines.ru
25.10.2020 - 14:26
Смотри также:
помогите с поиском в справочнике
Ввод начальных остатков
Исправление в декабре НДС октября

Re: Количество записей в справочнике

USSR
18 - 15.06.2009 - 18:50
(16)Да все так, что так бурно реагировать?))) "Давайте жить дружно"

Re: Количество записей в справочнике

USSR
19 - 15.06.2009 - 18:52
(17)Что ты знаешь? Что запрос под DBF работает быстрее? Результаты в студию!!

Re: Количество записей в справочнике

USSR
20 - 15.06.2009 - 18:56
(17)я не исследовал специально, но читал давно тесты NS и зная что такое CODEBASE не вижу под DBF (!) возможностей запроса обогнать выборку

Re: Количество записей в справочнике

Струнин
21 - 16.06.2009 - 02:20
Извините, разница 4 часа, ребенка в сад и т.д. :)
VZ спасибо, я это и имел ввиду, штатным способом, предполагал ЗначениеВСтрокуВнутр, но спросить постеснялся :))), а проверять не стал.
Просто мысль иногда проскакивает, как элементы быстро посчитать...

Re: Количество записей в справочнике

Шухер
22 - 16.06.2009 - 04:42
Чет задача сформулирована, фик поймешь
>>открыть на чтение, да и прочитать число записей
Из заголовка файла прочитать и узнать кол-во записей ?
В DBF 4-7 байты, из спецификации DBF можно узнать, не спрашивая.
2. Каких записей считать надо ? Включая удаленые / помеченные на удаление
Ниче не понял, что для чего и зачем считать.
Из заголовка   и не узнаешь всего.
Запрос писать надо, я дык предпочитаю звать Фокспро на помощь, там быстро и красиво все получается. Эх ... вжик ... готово :)
count for not deleted() to i
? i
или
? reccount() // вжик и готово :)
или
select count(*) i ;
from rgХХ    //не очень также вжик, но тоже очень даже вжик, я бып сказал.
В сравнении с перебором в 1С - этот и вжик-то не заметишь  :)

Интересные темы

odines.ru
25.10.2020 - 14:26
Смотри также:
Почему не выполняется "КомандаСистемы"?
3 D графика в 1С
цены в форме элемента номенклатуры

Re: Количество записей в справочнике

USSR
23 - 16.06.2009 - 04:52
Устами Шухера глаголит истина. Вся эта затея с DD - хрень полная

Re: Количество записей в справочнике

Шухер
24 - 16.06.2009 - 05:34
+22 забыл, если из заголовка доставать, дык там все наоборот, не как у русских слева на право. Евреи, наверное, придумали компьютер. Младший байт первый пойдет  4-5-6-7.
И эта, то что 7 по спецификации DBF, это будет Восемь!, если карандашом тыкать в символы  //для Вованов напоминалка :)

Re: Количество записей в справочнике

Струнин
25 - 16.06.2009 - 07:22
Нашёл вот на вба:
Option Compare Database
Option Explicit
 
Public Function DBFRecCount(dbfFileName As String) As Long
'Error-handler inserted on 25.09.2004 at 15:32 by Dedushev M.N.
'
On Error GoTo DBFRecCount_Error
Dim FHandle As Integer, DBFHead As String
FHandle = FreeFile
Open dbfFileName For Binary As FHandle
DBFHead = Input(8, FHandle)
Input #FHandle, DBFRecCount
Input #FHandle, DBFRecCount
DBFRecCount = Asc(Mid$(DBFHead, 5, 1))
DBFRecCount = (Asc(Mid$(DBFHead, 6, 1)) * 256#) + DBFRecCount
DBFRecCount = (Asc(Mid$(DBFHead, 7, 1)) * 256# * 256#) + DBFRecCount
DBFRecCount = (Asc(Mid$(DBFHead, 8, 1)) * 256# * 256# * 256#) + DBFRecCount
Close FHandle
DBFRecCount_Exit:
Exit Function
DBFRecCount_Error:
MsgBox "Непредвиденная разработчиком ошибка - " & Err.Number _
& vbCrLf & vbCrLf & Error$, vbExclamation, "OUTTER - DBFRecCou"
Resume DBFRecCount_Exit
End Function
http://am.rusimport.ru/MsAccess/topic.aspx?ID=419
 
если из неё сделать dll и немонопольно, то работает...
 
типа
функция КолЗап(ВидСпр)
Спр = СоздатьОбъект("Справочник." + ВидСпр);
СтрФ = СокрЛП(ЗначениеВСтрокуВнутр(Спр));
 
СтрФ = Сред(СтрФ,2,СтрДлина(СтрФ)-2);
сзВнутр = СоздатьОбъект("СписокЗначений");
сзВнутр = глРазложить(СтрФ);
НомерФайла = СокрЛП(сзВнутр.ПолучитьЗначение(4));
НомерФайла = Сред(НомерФайла,2,СтрДлина(НомерФайла)-2);
ИмяФайла = КаталогИБ() + "SC" + НомерФайла + ".DBF";    
Если ФС.СуществуетФайл(ИмяФайла)=0 Тогда
Возврат;
КонецЕсли;
после
создать объект длл
КолЗап = ф(ИмяФала)
 

 

Re: Количество записей в справочнике

Шухер
26 - 16.06.2009 - 07:47
*покраснев уходит*
У-у! у VBA длиньшэ :\

Re: Количество записей в справочнике

Струнин
27 - 16.06.2009 - 08:31
все равно, не то... монопольно не работает :)
К списку тем 1 > К списку форумов
Тема закрыта и находится в архиве.
Но Вы можете начать новую тему.
« Как подключить весы CAS к 1С? Свёртка базы и УРБД. Подскажите. »
© 2009 Форум 1С: Одинэс.Ру