Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 1C: Предприятие, SAP, ERP и учётные системы > Где, в какой таблице 1С хранит Перечисления v 7.7


Автор: Server 23.10.2006, 20:15
Доброго времени суток подскажите пожалуйста в каких таблицах 1С ( V 7.7 Sql) хранит перечисления или может в каких файлах?

Заранее благодарен

Автор: Naghual 24.10.2006, 13:40
Через саму 1С и получи!
Какие проблемы?

Автор: Server 25.10.2006, 19:24
Есть 20 000 клиентов нужно отобрать только тех которые делали покупки 2006,2005,2004,2003
Я когда запускаю 20 000 клиентов в запрос по регистру тут 1С и тухнит по полной программе на часов 15.
Куда годится 15 часов ждать отчёт.
Так вот я хочу написать отчет за пределами 1С в Query Analyzer
изучил 1cv7.dds там описано в каких таблица хранятся клиенты, регистры а для расчета мне нужно ещё отбирать клиентов по условию в котором учавствует перечисление, так вот я не нашёл описания в 1cv7.dds файле где хранится перечисление.
Если 1С нужно 30 минут для формирования отчета то Sql запрос работает секунд 10-15

Автор: Zero 29.10.2006, 20:06
Хех... Значения перечислений вооще находятся в дереве методанных.
Цитата(Server @  25.10.2006,  20:24 Найти цитируемый пост)
изучил 1cv7.dds там описано в каких таблица хранятся клиенты, регистры

Да клиенты и регистры это однозначно - однотипыне и однородные понятия... smile 
Цитата(Server @  25.10.2006,  20:24 Найти цитируемый пост)
Если 1С нужно 30 минут для формирования отчета то Sql запрос работает секунд 10-15

Цитата(Server @  25.10.2006,  20:24 Найти цитируемый пост)
Есть 20 000 клиентов

За 15 секунд просмотреть и обработать 20000 записей... Что то я в этом сомневаюсь.

Автор: stron 29.10.2006, 21:50
Цитата(Zero @  29.10.2006,  21:06 Найти цитируемый пост)
За 15 секунд просмотреть и обработать 20000 записей... Что то я в этом сомневаюсь. 

А легко, Ms SQL Server сделает это даже быстрее

Автор: Date 30.10.2006, 05:49
Цитата(Server @  25.10.2006,  19:24 Найти цитируемый пост)
Так вот я хочу написать отчет за пределами 1С в Query Analyzer


ты думаешь что написанная программа будет быстрее работать... по любому придется SQL применять... так зачем напригаться и что-то думать когда все моно в 1С сделать...


Цитата(stron @  29.10.2006,  21:50 Найти цитируемый пост)
    
За 15 секунд просмотреть и обработать 20000 записей... Что то я в этом сомневаюсь.  

А легко, Ms SQL Server сделает это даже быстрее


подверждаю... это факт...

Автор: Pelmen 30.10.2006, 13:25
их нет в таблицах, самый простой вариант - уточнить необходимое значение перечисления, точнее его идентификатор
другой вариант - 1cpp.ru

Автор: Server 1.11.2006, 21:25
Я нашёл где хранятся перечисление в md файле
Создал в базе таблицу с идами и названиями перечислений подставляю эту таблицу в join
Написаный код на Sql работает быстрее чем аналогичный запрос на 1С.
Вы меня не переубедите в этом у меня есть часы по которым я и сравниваю время выполнения. smile 

Автор: Pelmen 3.11.2006, 17:43
Server, тут никто спорить и не будет ... это так
по ссылке сходи - много полезного найдешь

Автор: Zero 3.11.2006, 23:27
Цитата(Pelmen @  3.11.2006,  18:43 Найти цитируемый пост)
Server, тут никто спорить и не будет ... это так

Pelmen, какаяже такая обработка может быть на 1С выполняемая 20 мин, и чтобы на SQL за 15 сек. сделалась?????

Автор: Server 8.11.2006, 11:58
Этот запрос отбирает остатки 30 минут и больше
Код

"    
    |Период С д1 по Д2;
    |Склад = Регистр.Остатки.Склад.КатегорияЦены;
    |ТМЦ = Регистр.Остатки.ТМЦ;
    |Кво = Регистр.Остатки.Кво;  
    |Сум = Регистр.Остатки.Сумма;
    |Функция КвоКонОст = КонОст(Кво);    
    |Функция СумКонОст = КонОст(Сум);
    |Группировка ТМЦ;
    |Группировка Склад без групп все ВошедшиеВЗапрос;
    |"


Этот запрос отбирает остатки за 15 секунд
Использую 1С++

    
Код

текст = "select TMS.PARENTID [Родитель $Справочник.ТМЦ], TMS.id [Товар $Справочник.ТМЦ],KatSen.id [КатегорияЦен $Справочник.КатегорииЦен], Sum(Остатки_.КвоОстаток) as КвоОстаток, Sum(Остатки_.СуммаОстаток) as СуммаОстаток
    |from $РегистрОстатки.Остатки(:ДатаПо~,
    |inner join $Справочник.ТМЦ as ТМЦ_ on ТМЦ_.id = ТМЦ
    |inner join $Справочник.Склады as Ск on Ск.id = Склад,
    |,
                |(ТМЦ, Склад),
    |(Кво, Сумма)
    |) as Остатки_
    |left outer join $Справочник.ТМЦ as TMS on Остатки_.ТМЦ = TMS.id
    |left outer join $Справочник.Склады As sklad on sklad.id = Остатки_.Склад
    |left outer join $Справочник.КатегорииЦен As KatSen on KatSen.id = $Справочник.Склады.КатегорияЦены 
    |group by TMS.PARENTID, TMS.id, KatSen.id
    |/*order by TMS.DESCR, KatSen.DESCR*/
    |";

Автор: valex13 28.12.2006, 11:05
Значение перечислений в базе данных не храняьтся. Сделай так. Открой Profiler, укажи в нем базу данных 1С. Затем в нем нажми паузу. Потом открой 1С и сделай запись в нужной таблицы с ЗАРАНЕЕ известным сначением твоего перечисление, перед этим не запудь в Profiler включить режим слежения. После чего из анализа запросов узнаешь имя таблицы. Это как правило SC***. В конфигураторе открой свой справочник и посчитай сверху в низ свое поле по порядку. Затем открой в SQL таблицу и после служебных полей отсчитай тоже количестко полей. Перечисление храняться в char(9). 

Цитата

Этот запрос отбирает остатки за 15 секунд
Использую 1С++


Если сделать этот запрос в виде хранимой процедуры на SQL и запустить потом процедуру, то будет еще быстрей!

Автор: pythonwin 10.2.2007, 15:13
Цитата(valex13 @  28.12.2006,  14:05 Найти цитируемый пост)
Значение перечислений в базе данных не храняьтся. Сделай так. Открой Profiler, укажи в нем базу данных 1С. Затем в нем нажми паузу. Потом открой 1С и сделай запись в нужной таблицы с ЗАРАНЕЕ известным сначением твоего перечисление, перед этим не запудь в Profiler включить режим слежения. После чего из анализа запросов узнаешь имя таблицы. Это как правило SC***. В конфигураторе открой свой справочник и посчитай сверху в низ свое поле по порядку. Затем открой в SQL таблицу и после служебных полей отсчитай тоже количестко полей. Перечисление храняться в char(9). 

valex13, а для 1С 8.0 это тоже работает?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)