Переключение на Главную Страницу Страницы: 1 2 3 [4]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Свертка файловой ПУБ с использованием 1sqlite (число прочтений - 11504 )
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Свертка файловой ПУБ с использованием 1sqlite
Ответ #45 - 16. Января 2012 :: 07:37
Печать  
Eprst писал(а) 16. Января 2012 :: 06:14:
Всё работает, проверяй свой синтаксис, особенно типизацию, типа [d]
Нашел я причину: крашится перестает, если из условий убрать id2str.
Походу, решение есть: получить отдельно значение id2str, а потом подставлять его параметром.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Свертка файловой ПУБ с использованием 1sqlite
Ответ #46 - 16. Января 2012 :: 07:46
Печать  
Dmitry The Wing писал(а) 16. Января 2012 :: 07:37:
Eprst писал(а) 16. Января 2012 :: 06:14:
Всё работает, проверяй свой синтаксис, особенно типизацию, типа [d]
Нашел я причину: крашится перестает, если из условий убрать id2str.
Походу, решение есть: получить отдельно значение id2str, а потом подставлять его параметром.


Проверил, ничего не падает и всё так же работает и с функцией
id2str

ЗЫ: у тебя версия 1sqlite какая хоть ?
ЗЫЫ: у меня 1.0.2.4, если что

  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Свертка файловой ПУБ с использованием 1sqlite
Ответ #47 - 16. Января 2012 :: 08:13
Печать  
Eprst писал(а) 16. Января 2012 :: 07:46:
Проверил, ничего не падает и всё так же работает и с функцией
id2str

ЗЫ: у тебя версия 1sqlite какая хоть ?
ЗЫЫ: у меня 1.0.2.4, если что
Версия та же. Замена функции на значение не помогла. В общем, оно падает только при полном условии на (дата и время или дата). Если я убираю одну из скобок, то падать перестает.... буду экспериментировать ... сначлаа попробую скобками поиграться...

Проблема выяснена методом научного тыка: В этом запросе все работает в двух случаях:
  • Запрос без инсерта
  • Запрос без OR в условиях джойнов
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Свертка файловой ПУБ с использованием 1sqlite
Ответ #48 - 16. Января 2012 :: 09:08
Печать  
У меня работает во всех перечисленных способах.

Единственное, OR в условиях джойнов - это полный ПЭ ( запрос долго, но выполняется).
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Свертка файловой 1С: общий вопрос
Ответ #49 - 17. Января 2012 :: 04:42
Печать  
По свертке: переношу записи журнала, шапки, строки, движения, операции, проводки, блобы.
А надо ли переносить записи из таблицы 1SCRDOC?
Или 1С сама заполнит при проверке?
Без проверки и пересчета же все равно не обойтись...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Свертка файловой ПУБ с использованием 1sqlite
Ответ #50 - 17. Января 2012 :: 06:12
Печать  
Если будешь делать ТиИ, то не нужно - оно само слепит эту табличку.
А так, если грамотно слепишь перенос, то в ТиИ нет необходимости.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Свертка файловой ПУБ с использованием 1sqlite
Ответ #51 - 18. Января 2012 :: 02:58
Печать  
1sqlite не справилась с тем запросом... запрос должен был вернуть примерно 5 тысяч строк. За сутки он так и не выполнился...
Пришлось сильно упростить логику (разбить на 2 запроса) и оно стало быстро шуршать:
  • Сначала получаю только реквизиты новых документов
  • Затем проверяю что эти реквизиты ссылаются именно на старые документы.
С такими упрощениями запросы успешно выполнились менее, чем за секунду.
Т.е. теперь у меня две временные таблицы. Первая для ссылок из реквизитов новых, которая чистится перед каждым новым реквизитом, а вторая - для итоговых документов, утовлетворяющих требованиям "старости".
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Свертка файловой ПУБ с использованием 1sqlite
Ответ #52 - 18. Января 2012 :: 05:10
Печать  
Я всё равно не понимаю, зачем тебе всё это. И как ты это будешь использовать для переноса.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Свертка файловой ПУБ с использованием 1sqlite - общий принцип.
Ответ #53 - 19. Января 2012 :: 03:14
Печать  
Eprst писал(а) 18. Января 2012 :: 05:10:
Я всё равно не понимаю, зачем тебе всё это. И как ты это будешь использовать для переноса.
Закончу, выложу, но в двух словах порядок следующий:
  • Копируется папка базы.
  • В копии очищаются все dbf.
  • В оригинале формируются двойные бух.итоги (сначала все в ноль на 23:59:50, а потом восстановление на 23:59:59). - около 45 сек.
  • По тому же принципу формируются остатки. - около двух часов.
  • Копирование всех справочников методом INSERT INTO '" + ПутьКБазе2 + идСправ + "' SELECT * FROM '" + КаталогИБ() + идСправ + "'
    Также копируются и блобы для всех реквизитов - все вместе у меня заняло меньше 15 сек.
  • Копирование непериодических констант по списку (почти 2 минуты для 114 констант - не попадаю в индекс)
  • Периодика:
    • Фиксация периодических констант методом "Константа." + ИмяКонстанты + ".Установить(ЗначениеИзСтрокиВнутр(""" + ЗначениеДаты + """), Константа." + ИмяКонстанты + ".Получить(ЗначениеИзСтрокиВнутр(""" + ЗначениеДаты + """)));"
    • Аналогичная фиксация периодики, у которой ИзменяетсяДокументами = 0.
    • Формирование документов фиксации периодики с ИзменяетсяДокументами = 1.
    (11,5 часов)
  • Копирование значений периодических констант и ручной периодики для нового периода по условию date >= :ДатаСвертки~~ AND docid = $ПустойИД (операция занимает чуть больше 10 сек.)
  • Выявление старых документов, ссылки на которые имеются в переносимом периоде - 2 часа. (у меня получилось около 50 тысяч доков - с ними потом еще разобраться надо, т.к. ссылки то есть, но многие из них нафик никому не надо...)
  • Перенос старых документов - только записи журнала с последующим обнулением флага closed - 2 минуты.
  • Перенос новых документов со всеми реквизитами, проводками, движениями и периодикой - 24 минуты.
  • Тестирование и исправление ИБ - выполнялось ночью, потому не знаю длительность, но максимально могло занять только 12 часов...
Для выполнения выделенного и требовался тот жуткий зарпос, который так и не получилось выполнить...
Последний пункт еще не выполнялся, потому время не назову, но думаю, что весь процесс должен уложиться в сутки или чуть дольше.
« Последняя редакция: 24. Января 2012 :: 09:29 - Dmitry The Wing »  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Свертка файловой ПУБ с использованием 1sqlite
Ответ #54 - 20. Января 2012 :: 05:42
Печать  
Имхо, в разы быстрее вырезать в базе лишнее, чем заниматься переносом нужного.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Свертка файловой ПУБ с использованием 1sqlite
Ответ #55 - 20. Января 2012 :: 06:06
Печать  
Eprst писал(а) 20. Января 2012 :: 05:42:
Имхо, в разы быстрее вырезать в базе лишнее, чем заниматься переносом нужного.
Эта фраза не верна, когда лишнего в базе больше, чем переносимого... мой предшественник не смог свернуть предыдущие пару лет + только в переносимом периоде я запретитл использовать документы с количеством строк > 9999, а это огроменные проблемы с индексами ...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Свертка файловой ПУБ с использованием 1sqlite
Ответ #56 - 20. Января 2012 :: 06:37
Печать  
Не верю..
Базу в 20гигов на дбф свернул за 2 часа всю.
с отрезанием лишнего прямым запросом.
В том числе, с оставлением всей нужной аналитики, а не просто, кастрацией всего и вся.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Свертка файловой ПУБ с использованием 1sqlite
Ответ #57 - 20. Января 2012 :: 06:45
Печать  
Eprst писал(а) 20. Января 2012 :: 06:37:
Не верю..
Базу в 20гигов на дбф свернул за 2 часа всю.
с отрезанием лишнего прямым запросом.
В том числе, с оставлением всей нужной аналитики, а не просто, кастрацией всего и вся.
Объем базы - не показатель (пояснять?) ... и если вспомнить, что у меня 11 часов длится только фиксация периодики ... а от этого уж никак нельзя отказаться хоть при переносе, хоть при свертке ...
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 3 [4] 
ОтправитьПечать