|
|
|
Слетает отбор по документам
|
|||
|---|---|---|---|
|
#18+
Доброго всем дня, вечера или ночи и т.д. 1С 7.7 своя 27 релиз SQL. База крутится на SQL сервер 2005, размер базы 30 гигов. УРБД Есть документ выписка в таб. части этого документа есть субконто 2 для определенных счетов это договор основания. Стояла задача быстро выбрать по договору основания все выписки. Для этого был сделан отбор по этому полю с типом Справочник.Договора. И все было хорошо, пока по бизнес процессу при сведении реализации бухи перепроводили все выписки за месяц, но начался процесс оптимизации который привел к сокращению «не нужной» операции. В результате часть выписок начала выпадать из отбора, проблему решает перепроведение «не послушной» выписки. Была сделана попытка перевести алгоритм на прямой запрос. В этом случае в отбор попадали все выписки, но время которое на это тратилось превышало в разы типовой алгоритм, что привело к неприемлемости данного варианта. В результате была написана обработка, которая выбирала выписки прямым запросом и типовым алгоритм находил не попадающие выписки и пересохранял их. Причем пересохранение по Записать() не давало нужных результатов. Была обнаружена закономерность, что при изменении таб. части и сохранении, выписка возвращалась в отбор (перепроводить выписки нельзя). Пути решения понятны: нужно попробовать выполнить типовой отбор профайлером и посмотреть как выполняется запрос, после этого с оптимизировать свой или оставить обработку проверки на ночь, она будет автоматом все выравнивать. Но это борьба с последствиями, а мне нужно понять причину и попытаться исправить её. Мои предположения: Видимо при первичной записи выписки не записывается какое-то поле, либо оно слетает в момент обмена данными по УРБД или по каким-то другим причинам. Суть вопроса: Что это за поле? И если кто-то сталкивался, то как можно решить проблему? Для справки: Типовой отбор по выписки строился по следующей конструкции: SELECT ВыпискаСтроки.IDDOC [ТекущийДокумент $Документ.Выписка] _1SJOURN AS Журнал INNER JOIN $Справочник.Договора as Договора ON Договора.ID = IDДоговора INNER JOIN _1SCRDOC AS Отбор ON Отбор.CHILDID = Журнал.IDDOC AND Отбор. MDID = $ГрафаОтбора.ВыпискаДФА ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 01:28 |
|
||
|
Слетает отбор по документам
|
|||
|---|---|---|---|
|
#18+
Не понял. Сейчас то второе субконто есть или нет? И что конкренто изменили что перестал работать отбор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 03:49 |
|
||
|
Слетает отбор по документам
|
|||
|---|---|---|---|
|
#18+
В зависимости от того какой тип выписки, это субконто либо есть либо нет. Алгоритм аналогичен типовой бух справки. Изначально поле не типизировано, в зависимости от выбранного счета поле типизируется, то же самое и здесь. Для моих нужд все поля заполнены. Конкретно перестали перепроводить документы выписок в конце месяца. Изначально выписки формируются автоматически при загрузке даннх из банк-клиента. Я разобрал профайлором запрос примерно он выглядит вот так: SELECT Журнал.IDDOC [ТекущийДокумент $Документ.Выписка], Журнал.DATE_TIME_IDDOC,Отбор.CHILD_DATE_TIME_IDDOC FROM _1SJOURN Журнал(NOLOCK INDEX=ACDATETIME) INNER JOIN _1SCRDOC Отбор (NOLOCK INDEX=Parent) ON Отбор.CHILD_DATE_TIME_IDDOC = Журнал.DATE_TIME_IDDOC AND Отбор. MDID = 45455 AND Отбор.ParentVal = 'B1 13Z DHZRN2 ' AND Отбор.CHILD_DATE_TIME_IDDOC>='20100801' and Отбор.CHILD_DATE_TIME_IDDOC<='20100831 863990001 0 ' Исходя из этого можно сделать вывод, что единственное что может повлиять на выбор документов эт о их время. Возможно при автоматическом создании выписки коряво устанавливается время документа, но я пока е совсем дошел как происходит преоразование CHILD_DATE_TIME_IDDOC в нормальную дату и время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 05:26 |
|
||
|
Слетает отбор по документам
|
|||
|---|---|---|---|
|
#18+
Если субконто не заполняется то его нужно обнулить. Записывайте туда или 0 или пустое значение справочника - после этого поробуйте сделать отбор средствами 1с -должно попасть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 09:30 |
|
||
|
Слетает отбор по документам
|
|||
|---|---|---|---|
|
#18+
Как я говорил значения самих отборов тут не причем, проблема в отличии времени в таблице [_1SJOURN] и [_1SCRDOC] Вот пример документа не попадает в отбор. выделено время: [_1SJOURN] 1719059 186 12SUYRN2 6415 53 20101013 75IMA8 12SUYRN2 а это мой отбор он содержит первичное время создания, хотя документ уже был проведен и имеет другое время. Думаю что проблема в функции Провести() и Записать() интерактивное проведение и запись отличаются от ссылочного. [_1SCRDOC] 11163525 45455 B1 13Z BWKOMS 20101013 CB604W 12SUYRN2 12SUYRN2 1 Буду думать как побороть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 10:41 |
|
||
|
Слетает отбор по документам
|
|||
|---|---|---|---|
|
#18+
У меня при тии частенько время операции меняет. (Пишет время операции изменено) Может в этом дело? А вы отбираете по времени - не по дате? Тоесть в разрезе с 1200 до 1800? А в процедуре загрузки выписок - как время выставляете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2010, 13:52 |
|
||
|
Слетает отбор по документам
|
|||
|---|---|---|---|
|
#18+
Спасибо, за ответы. Нашли причину, мои хлопцы разработали систему присвоения уникальности времени выпискам, выписки разного вида присваивается время всегда увеличенное на 1 сек, в рамках всех ИБ. Для ускорения процесса, был использован свой алгоритм изменения времени, но они забыли обновлять время отборов, что и привело к таким последтсвиям. |BEGIN TRANSACTION TIME | |UPDATE _1SJOURN | SET DATE_TIME_IDDOC = '"+ИДДокВремя+"' |WHERE (IDDOC = :ТекДок) | |UPDATE _1SOPER | SET DATE_TIME_DOCID = '"+ИДДокВремя+"' |WHERE (DOCID = :ТекДок) | //это сделать забыли |UPDATE _1SCRDOC | SET CHILD_DATE_TIME_IDDOC = '"+ИДДокВремя+"' |WHERE (CHILDID = :ТекДок) | |COMMIT TRANSACTION TIME ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2010, 07:20 |
|
||
|
Слетает отбор по документам
|
|||
|---|---|---|---|
|
#18+
i_Frog, Лихо! Я думаю, скоро 1С 7.7 так разберут по косточкам, что будут писать собственное проведение документов хранимыми процедурами... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2010, 11:01 |
|
||
|
Слетает отбор по документам
|
|||
|---|---|---|---|
|
#18+
VladimirKr, Им видно чрезвычайно скорость важна. Автор - у вас большее 200 пользователей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2010, 11:06 |
|
||
|
Слетает отбор по документам
|
|||
|---|---|---|---|
|
#18+
В бухгалтерской базе работает около 40 человек. Вообще у нас 4 бухгалтерских базы, одна из них посажена на отдельный инстанс SQL с ограниченным объемом памяти и лежит она на других винтах, в ней сводится реализация. Одна основная рабочая и 2 еще на всякий случай, если вдруг что-то умрет или потребуется срочно для каких либо больших операций+15 региональных баз по всей стране. Но проблема в том что количество ресурсоёмких запросов увеличивается с каждым годом. Мы лизинговая компания и учет приходится вести за всю жизнь договора лизинга максимальное время 7 лет. А так как изначально весь учет был построен на счетах и часть архитектуры было заложено коряво мы занимаемся оптимизацией путем перестроения запросов на прямые, выноса часто используемых данных в другую информационную систему и т.д. У нас есть так называемый "портал" написан на асп, база SQL к нему есть веб интерфейс со всех регионов часть функционала вынесено туда и и каждая региональная база 1С не может работать без доступа к порталу, это даёт нам неограниченные возможности разработки. Перенося часть функционала в базу портала мы используем 1С как клиента, причем никто фактически и не видит что происходит подмена места хранения данных, но существенно снижает время обменов при этом изменения сделанный к примеру в Питере, мгновенно видно в базе Владивостока. В дальнейшем планируется перевести весь управленческий учет на портал, а в 1С оставить только одну бухгалтерскую часть, при этом сократить количеств пользователей 1С до бухгалтеров. Но пока это только далёкие планы и до этого нам еще всем пахать и пахать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2010, 09:45 |
|
||
|
Слетает отбор по документам
|
|||
|---|---|---|---|
|
#18+
i_Frog, на курсах рассказывают что 50 бухгалтерских пользователей - максимум. Проблема - сами бухгалтерские регистры. Как пример 1 бухгалтерский регистр заменяется 8 обычными - и эти 8 работают в 2-3 раза быстрее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2010, 12:12 |
|
||
|
|

start [/forum/topic.php?fid=28&msg=36898422&tid=1521898]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
164ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 458ms |

| 0 / 0 |
