|
|
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
Доброго дня всем! Имеется такая проблема: получение даты из ссылки на документ (через Ссылка.Дата) очень медленное. При этом другие "реквизиты" ссылки (например Номер, СуммаДокумента) получаются в несколько десятков раз быстрее. Можно ли от этого избавиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 10:00 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
У вас, наверное, ссылка.дата сначала извлекается, а за ней и остальные реквизиты? Так для любого реквизита нужно весь объект прочитать (а ссылка и объект - это не одно и то же). Он и читается из базы целиком. А у уже прочитанного другие реквизиты быстрее извлекаются. Как бороться? Не лениться в запросах не ограничиваться получением ссылки, а сразу запрашивать все нужные реквизиты, и обращаться потом не к данным объекта через ссылку, а к результату запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 10:22 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
ну да еще можно "профразработку" почитать там все это описано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 10:36 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
Понятно... Да, я знаю, что в запросах нужно брать все нужные реквизиты. Только этот документ у меня берется из строки с уникальным идентификатором, а не из запроса, поэтому наверное здесь ничего не придумать быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 10:43 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
AXAE, а выборка этих строк по-одной или как-то можно их распарсить перед запросом и передать уже в запрос номера списком ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 10:48 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
авторномера извиняюсь... идентификаторы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 10:49 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
Last1CmenAXAE, а выборка этих строк по-одной или как-то можно их распарсить перед запросом и передать уже в запрос номера списком ? Подробнее? У меня действительно есть список строк с уникальными идентификаторами... Каким образом их распарсить и в запрос передать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 10:50 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
AXAE, я так понял что речь о 8ке... с синтаксисом запроса я не помогу автордокумент у меня берется из строки с уникальным идентификатором следовательно есть возможность "выкусить" идентификатор конкретного документа а следовательно можно и сформировать список содержащий уже только идентификаторы а уже этот список можно передать в запрос в качестве условия (можно в принципе парсить внешней функцией в самом запросе но то уже как легче и проще)... а в самом запросе получить необходимые даныне (как-то номер, дата и т.д.) и уже их выводить туда куда вам необходимо правда это не касается того варианта если у вас есть не один или несколько документов для вывода т.к. как сами понимаете процедура выполнения запроса будет несколько медленнее чем одиночное получение ссылки... так что смысл будет когда количество получений объектов по ссылкам в цикле по временным характеристикам будет превышать время одноразового выполнения запроса (скажем более сотни таких объекто должно реально ускорить) для того чтобы вам ответили как именно распарсить строку с ИД необходимо предоставить сами примеры строк и то что должно быть из них выделено и сопоставлено в сравнении ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 11:21 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
если есть ссылка ... зачем запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 11:23 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
>>получение даты из ссылки на документ (через Ссылка.Дата) очень медленное. чота не верю... дата документы - частьссылки и представления, есть всегда, за ней не надо нырять в базу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 11:25 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
Господин ПЖ>>получение даты из ссылки на документ (через Ссылка.Дата) очень медленное. чота не верю... дата документы - частьссылки и представления, есть всегда, за ней не надо нырять в базу Вообще-то ссылка - это GUID в чистом виде. Или идентификатор типа+GUID. Но никакой даты в поле ссылки нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 11:51 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
pail Вообще-то ссылка - это GUID в чистом виде. на каком слое? БД? Да. рантайма 1С? Нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 11:54 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
я подозревал и подозреваю что ИД у автора - это не ИД в БД :) ... только как вот по такому ИД получить ИД.Дата я не подозреваю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 12:05 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
Господин ПЖpail Вообще-то ссылка - это GUID в чистом виде. на каком слое? БД? Да. рантайма 1С? Нет. Откуда такая уверенность? Ссылка в рантайме 1С - это номер типа и GUID, посмотрите ЗначениеВСтрокуВнутр(). Ссылка в БД, для простых типов - только GUID, для составных - номер типа, номер таблицы ссылочного типа и GUID. Номер типа позволяет отличить число, строку, дату, булево и Неопределно от ссылки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 12:09 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
Опечатка, Ссылка в рантайме 1С - это номер таблицы ссылочного типа и GUID, посмотрите ЗначениеВСтрокуВнутр(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 12:10 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
Last1CmenAXAE, я так понял что речь о 8ке... с синтаксисом запроса я не помогу автордокумент у меня берется из строки с уникальным идентификатором следовательно есть возможность "выкусить" идентификатор конкретного документа а следовательно можно и сформировать список содержащий уже только идентификаторы а уже этот список можно передать в запрос в качестве условия (можно в принципе парсить внешней функцией в самом запросе но то уже как легче и проще)... а в самом запросе получить необходимые даныне (как-то номер, дата и т.д.) и уже их выводить туда куда вам необходимо правда это не касается того варианта если у вас есть не один или несколько документов для вывода т.к. как сами понимаете процедура выполнения запроса будет несколько медленнее чем одиночное получение ссылки... так что смысл будет когда количество получений объектов по ссылкам в цикле по временным характеристикам будет превышать время одноразового выполнения запроса (скажем более сотни таких объекто должно реально ускорить) для того чтобы вам ответили как именно распарсить строку с ИД необходимо предоставить сами примеры строк и то что должно быть из них выделено и сопоставлено в сравнении По-моему, их никак не распарсить... GUID - это результат применения метода УникальныйИдентификатор() к ссылке. Например вот GUID - "2319dcf1-f4ee-438d-b16f-6a145d6b9422". Уникальные идентификаторы в запрос "восьмерки" не передать. Можно передавать только ссылки. На основе уникального идентификатора можно получить любую(!) ссылку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 12:12 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
ну да, наврал я. Формально в кеше даты документа может и не быть, если c ссылкой не было интерактива или приведение ее к строке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 12:19 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
AXAEПо-моему, их никак не распарсить... GUID - это результат применения метода УникальныйИдентификатор() к ссылке. Например вот GUID - "2319dcf1-f4ee-438d-b16f-6a145d6b9422". Уникальные идентификаторы в запрос "восьмерки" не передать. Можно передавать только ссылки. На основе уникального идентификатора можно получить любую(!) ссылку. Идея Last1Cmen - получить реквизиты сразу всех документов одним запросом, а не таскать каждый в цикле по ссылке. И это будет быстрее, если документов хотя бы 2, а если, например, не нужны табличные части, то будет быстрее даже при одном документе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 12:22 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
HoBTIDAXAEПо-моему, их никак не распарсить... GUID - это результат применения метода УникальныйИдентификатор() к ссылке. Например вот GUID - "2319dcf1-f4ee-438d-b16f-6a145d6b9422". Уникальные идентификаторы в запрос "восьмерки" не передать. Можно передавать только ссылки. На основе уникального идентификатора можно получить любую(!) ссылку. Идея Last1Cmen - получить реквизиты сразу всех документов одним запросом, а не таскать каждый в цикле по ссылке. И это будет быстрее, если документов хотя бы 2, а если, например, не нужны табличные части, то будет быстрее даже при одном документе. Идея понятна... Только на восьмерке ее не осуществить: на основании списка строк с GUID'ами не удастся получить список ссылок с реквизитами. Точнее удастся, но только если запрос формировать так, чтобы пробовать запросом одновременно вынимать ссылки на основании уникального идентификатора из всех ссылочных типов конфигурации - а это по-моему будет медленно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 12:27 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
авторно только если запрос формировать так, чтобы пробовать запросом одновременно вынимать ссылки на основании уникального идентификатора из всех ссылочных типов конфигурации - а это по-моему будет медленно ну понятно что любой вызов внешней функции в запросе будет медленнее чем просто фильтор по готовому списку... речь то о том насколько на практике :) т.е. предлагаю эти ИД передавать в запросе во внешнюю функцию а оттуда возвращать в запрос уже саму ссылку и по ней фильтровать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 12:34 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
AXAE...одновременно вынимать ссылки на основании уникального идентификатора из всех ссылочных типов конфигурации... Неправильно выразился. Правильнее будет сказать, что передавать в запрос все возможные ссылки на основании всех GUID с проверкой существования объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 12:34 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
Last1Cmen...возвращать в запрос уже саму ссылку и по ней фильтровать... Заметьте: не одну ссылку, а ссылки ВСЕХ ссылочных типов конфигурации, полученных на основании одно единственного GUID! А если этих GUID еще и целый список (у меня их десятки тысяч), то я думаю можно представить, как захлебнется 1С... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 12:39 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
AXAE, а это единоразовая процедура ? если нет и их пятизнаками насчитывается то ускорить энто дело можно выделив отдельные реквизиты на документы где и хранить сцылки на сами объекты (их запись контролировать при проведении чтоль) геморойно но если критично по скорости то прийдётся (это как я с иерархией недавно воевал :) если кто помнит) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 12:46 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
AXAELast1Cmen...возвращать в запрос уже саму ссылку и по ней фильтровать... Заметьте: не одну ссылку, а ссылки ВСЕХ ссылочных типов конфигурации, полученных на основании одно единственного GUID! А если этих GUID еще и целый список (у меня их десятки тысяч), то я думаю можно представить, как захлебнется 1С...А вы десятки тысяч один раз загружаете или каждый день? Если каждый день - то опишите всю задачу сначала. А если один раз - то по моему скорость вобще не важна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 12:51 |
|
||
|
Медленное получение даты документа
|
|||
|---|---|---|---|
|
#18+
Да вообще-то не каждый день... Это нерегулярная процедура. Это процедура проверки. Конфигурация Альфа-Авто использует таблицу соответствия для переноса информации в бухгалтерию. Таблица соответствия представляет собой .dbf файл, где есть поля ID_SOURCE, ID_RECEVE и MANAGER. В первых двух полях хранятся GUID объектов: Альфа-Авто и Бухгалтерии соответственно. В них хранятся GUID документов и справочников. Поле MANAGER предназначается для описания менеджера бухгалтерии (вроде бы так... я его при обработке таблицы мало использую) Мне необходимо проверить правильность этой таблицы. Мы ее своими кривыми ручками подпортили - залезли посмотреть, решили удалить несуществующие объекты. Удалили и не переиндексировали. При очередном переносе случился сбой и таблица была немного испорчена. Да бывают и штатные ситуации, когда два контрагента Альфы грузятся в одного в бухгалтерии - такое тоже надо разыскивать и пресекать. Пресекать - это здесь уже дело десятое... Главное - найти таких. Я вроде нашел решение своей проблемы: я перебираю последовательно все ссылочные типы конфигурации, создаю на основании GUID ссылку разных типов и проверяю на существовании такого объекта. Проверка осуществляется запросом к базе с параметром как раз этой сгенерированной ссылки. В этом запросе ведь можно сразу получать и реквизиты объекта, если он существует... А для того, чтобы это работало побыстрее, чем перебор всех ссылочных типов - предусмотрен, скажем так, "кэш попаданий". Там накапливаются количества верно угаданных типов ссылок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2009, 13:02 |
|
||
|
|

start [/forum/topic.php?fid=28&msg=36263948&tid=1523178]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
175ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 498ms |

| 0 / 0 |
