Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Вопросы по прямым запросам к бух.таблицам (число прочтений - 3785 )
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Вопросы по прямым запросам к бух.таблицам
07. Декабря 2008 :: 11:34
Печать  
В основном я бы хотел услышать мнение товарищей Берездецкого и Ст##ана... (вы уж извините что не на латинице обращаюсь)...

Последние пару дней я убил на разбор запросов к таблицам бухгалтерии и смотря в оба класса я все время задавал себе множество вопросов.
Пы.сы. далее речь пойдет о ВТОстатки. Т.к. они обе реализованы в соответсвующих классах.

Меня интересует вот какой вопрос:
Почему если ОтборПоСчетам = 1 запрос идет через присоединение _1SACCSEL. В чем выгода данного метода? И там и там я видел похожий способ отбора.

Вопрос у меня возник вот из-за чего. Если к SQL в плане JOIN у меня вопросов нет, то вот SQLite джойнит таблицы крайне долго и я бы сказал нифига не выгодно это делать, т.к. убивает все удовольствие от прямых запросов.

Я попробовал написал универсальный сбор через обращение к таблице 1SBKKTL и 1SENTRY аналогично тому как собирает 1С. Т.е. я не проверял флаг отбора и не джойнил с отбором по 1SACCSEL.
Правда в конце я добавил внутреннее соединение с таблицей 1SACCS чтобы определять А,П или АП... (но это ко второму вопросу).
И в итоге в SQL базе выигрыш бесспорный и очень значительный (от 2-х до 8-и кратного), а в SQLite обнаруживается почти равенство, а то и порой превосходство 1C. Если использовать отборы и фильтрации по значениям то и там и там выигрывает прямой запрос. Но это только таблица остатков.

Возвращаясь ко второму вопросу...
И в том и в другом классе я не обнаружил проверку на активность или пассивность счета. Т.о. остатокДт, остатокКт не всегда верно отображают значения. Т.е. не то что цифра не верна, а то что положительное значение дебета в пассивном счете оставалось на дебете хотя в итоге должно сидеть на кредите но с минусом.
Я так понимаю эту проверку вы отдали на откуп программисту запроса к ВТ?

Пы.сы.2: я наверное буду задавать много вопросов глупых или не очень. Надеюсь вы мне поможете найти на них ответы.
А я пошел анализировать классы дальше Подмигивание
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопросы по прямым запросам к бух.таблицам
Ответ #1 - 08. Декабря 2008 :: 11:05
Печать  
vandalsvq писал(а) 07. Декабря 2008 :: 11:34:
Меня интересует вот какой вопрос:
Почему если ОтборПоСчетам = 1 запрос идет через присоединение _1SACCSEL. В чем выгода данного метода? И там и там я видел похожий способ отбора.

_1SACCSEL позволяет эффективно отбирать проводки заданных групп счетов - при задании элементов счетов эффективность съедается накладными расходами на добавление ещё одной таблицы. Если типовые запросы не используют таблицу проводок (к примеру, расчёт остатков на начало месяца), то отбор по счетам не нужен.

Если говорить о конкретных множителях ускорения - "от 2-х до 8-и", то "2 + 2 1С умеет складывать" © кажется, АЛьФ. Т.е. значительное ускорение можно получить только на счетах с большой аналитикой.

vandalsvq писал(а) 07. Декабря 2008 :: 11:34:
И в том и в другом классе я не обнаружил проверку на активность или пассивность счета.

Вероятно, методологически это неправильно. Багрепортов на этот предмет пока не поступало.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Вопросы по прямым запросам к бух.таблицам
Ответ #2 - 09. Декабря 2008 :: 06:42
Печать  
Ну про ускорители, я же это на глаз. Т.е. замер сколько времени работает отчет на БухИтогах и тот же на ВТ то у меня разница весьма значительна. Впрочем не об этом речь.

Я уже отписался в теме про AccountRecordset по поводу активности\пассивности счетов. Впрочем меня это опять таки не так сильно волнует. INNER JOIN _1SACCS я все равно делаю и поэтому проверку АП мне труда встроить не составляет.

Что касается на сколько это методологически правильно то тут вот какое мнение: с одной стороны ну не может быть у активного счета кредитового сальдо, а у пассивного соответственно дебетового, ровно как и нельзя хранить свернутое сальдо по АП-счету. С другой стороны раз так реализовано в ВТ то говорить о то что это не правильно я тоже не стану. И в свою очередь исправляю это при собственном запросе. Вот  Подмигивание

А можешь мне поподробнее рассказать об 1SACCSEL.... ну т.е. на пальцах объяснить выигрышь. Если конечно нет желания то я пойму не всегда у самого времени и сил много. Но все таки было бы неплохо, я бы от помощи не отказался.  Подмигивание
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопросы по прямым запросам к бух.таблицам
Ответ #3 - 09. Декабря 2008 :: 08:41
Печать  
Цитата:
А можешь мне поподробнее рассказать об 1SACCSEL.... ну т.е. на пальцах объяснить выигрышь.


Выигрыш достигается попаданием в индекс для отбора нужных проводок.

С другой стороны, когда быстрый отбор по счетам выключен, отбор по группе счетов делается соединением с таблицей плана счетов - дважды. В прямых запросах этого можно избежать, используя УложитьСписокОбъектов, а штатно 1С так и мучается..

Это было на пальцах?
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Вопросы по прямым запросам к бух.таблицам
Ответ #4 - 09. Декабря 2008 :: 10:41
Печать  
berezdetsky писал(а) 09. Декабря 2008 :: 08:41:
Цитата:
А можешь мне поподробнее рассказать об 1SACCSEL.... ну т.е. на пальцах объяснить выигрышь.


Выигрыш достигается попаданием в индекс для отбора нужных проводок.

С другой стороны, когда быстрый отбор по счетам выключен, отбор по группе счетов делается соединением с таблицей плана счетов - дважды. В прямых запросах этого можно избежать, используя УложитьСписокОбъектов, а штатно 1С так и мучается..

Это было на пальцах?


Во... теперь на пальцах спасибо.  Подмигивание

А я для себя так и сделал сначала укладываю счета в список а затем только с ним и работаю. Т.е. делаю проверку на попадание в список, и проверку на соответствие плана счетов. В принципе на досуге как время выделится попробую написать аналогично с проверкой и работой через 1SACCSEL.

Кстати хотел спросить ты не мог бы показать реализацию ВТОстаткиИОбороты которая одно время было засветилась на форуме но потом ты ее удалил. Если нет то нет я опять таки без вопросов  Круглые глаза

Кстати все думал как 1С собирает счета по группе. Ну т.е. в справочнике есть поле родитель где храниться ID родителя. В 1ACCS такого поля вроде бы нет. Наверное через проверку левой части кода?
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопросы по прямым запросам к бух.таблицам
Ответ #5 - 09. Декабря 2008 :: 11:03
Печать  
vandalsvq писал(а) 09. Декабря 2008 :: 10:41:
Кстати хотел спросить ты не мог бы показать реализацию ВТОстаткиИОбороты которая одно время было засветилась на форуме но потом ты ее удалил. Если нет то нет я опять таки без вопросов  Круглые глаза

Для DBF от этого пользы не будет - она основана на сочетании замысловатого UPDATE с недокументированным поведением SQL Server 2000 и выкладывалась только с целью тестирования этого механизма. Никакой оптимизации на том этапе не было. Интереса, однако, эта разработка не вызвала (ни одного результата я не получил), и была удалена.

vandalsvq писал(а) 09. Декабря 2008 :: 10:41:
Кстати все думал как 1С собирает счета по группе. Ну т.е. в справочнике есть поле родитель где храниться ID родителя. В 1ACCS такого поля вроде бы нет. Наверное через проверку левой части кода?

Да, 1С соединяет таблицу _1SACCS саму с собой по левой части кода - там, где не может применить отбор по счетам.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Вопросы по прямым запросам к бух.таблицам
Ответ #6 - 09. Декабря 2008 :: 12:27
Печать  
Я планировал посмотреть чтобы нечто подобное на SQLite попробовать. Ну ладно. Буду думать самостоятельно Улыбка
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вопросы по прямым запросам к бух.таблицам
Ответ #7 - 10. Декабря 2008 :: 11:15
Печать  
vandalsvq писал(а) 07. Декабря 2008 :: 11:34:
И в том и в другом классе я не обнаружил проверку на активность или пассивность счета. Т.о. остатокДт, остатокКт не всегда верно отображают значения. Т.е. не то что цифра не верна, а то что положительное значение дебета в пассивном счете оставалось на дебете хотя в итоге должно сидеть на кредите но с минусом.

А вот если, к примеру, на АП счёте по одному субконто остаток дебетовый, а по другому - кредитовый. Запрос остатков - без разворота по субконто. Какой результат ты ожидаешь увидеть?
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Вопросы по прямым запросам к бух.таблицам
Ответ #8 - 10. Декабря 2008 :: 12:49
Печать  
berezdetsky писал(а) 10. Декабря 2008 :: 11:15:
vandalsvq писал(а) 07. Декабря 2008 :: 11:34:
И в том и в другом классе я не обнаружил проверку на активность или пассивность счета. Т.о. остатокДт, остатокКт не всегда верно отображают значения. Т.е. не то что цифра не верна, а то что положительное значение дебета в пассивном счете оставалось на дебете хотя в итоге должно сидеть на кредите но с минусом.

А вот если, к примеру, на АП счёте по одному субконто остаток дебетовый, а по другому - кредитовый. Запрос остатков - без разворота по субконто. Какой результат ты ожидаешь увидеть?


Ха... ну почти поймал.
С точки зрения оптимизации запроса и ускорения сбора то остаток будем собирать по таблице с отбором WHERE bkktl_.KIND = 4(5,6). И тогда соответственно остаток будет либо Дт либо Кт. Но это с точки зрения оптимизации и того как работает в таком случае 1С (без разворота по субконто).
А ежели по правильному по бухгалтерскому то должно быть в Дт и Кт соответствующие суммы ну и свернутые просто в СуммаОстаток.
Вот только я никоим образом не претендую на необходимость переписки ВТ т.к. знаю что и 1С этим грешит.
Я просто что хочу сказать, что было дело работал к аудиторской конторе и аудитор за такой свернутый учет (там был один "служебный" счет АП без субконто) вкатала организации замечание. Ибо методологически это неверно. Ну а что бедняжка бухгалтер может поделать если сама 1С так себя ведет? Улыбка
В общем я же говорю... тут просто смотря как на это смотреть. И это слишком "узкое" место и слишком "маленькое" чтобы заострять внимание
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать