Удаление записей из таблиц 1С прямым SQL запросом #594165


#0 by KarpovDeniska
#0 by KarpovDeniska
#1 by Чайник Рассела
гениально. Бекап сделал?
#2 by Господин ПЖ
и чо?
#3 by KarpovDeniska
))))))))))  Извиняюсь не дописал, случайно отправил  )), собственно текст запроса выше. У меня вопрос: при выполнении этого запроса когда период не большой, запрос как бы выполняется , но данные не меняются,т.е как было 100 регистраторов так и остаётся. когда делаю период около года, тогда запрос начинает отрабатывать нормально и всё чистит, в чём проблема может быть??
#4 by aleks-id
а ты рисковый...
#5 by KarpovDeniska
агась, база 600 гигов  )))
#6 by also
drop table пиши сразу, не ошибешься
#7 by Попытка1С
Зачем тебе 1с тут... открывай квери и вперед..
#8 by KarpovDeniska
это не решает проблему, в qa результат тот же
#9 by rs_trade
запрос как бы выполняется, это как?
#10 by KarpovDeniska
т.е Выполняется, нормально отрабатывает, в исключение не попадает, только очень быстро, такое ощущение, как будто для пустой таблицы отрабатывает, хотя за это период выборку делаю, всё ок
#11 by Ненавижу 1С
интересно, если это РН, то как быть с итогами?
#12 by Ёпрст
И где там  в запросе ограничение на период? там только на дату
#13 by Ёпрст
пересчитает потом. вот другие зависимые таблички надо бы тоже чистить еще
#14 by KarpovDeniska
Бли, с начала года по эту дату 100 доков например, потом прибавляю к дате 6 месяцев, получается 10000 доков, вот когда 10000 начинает чистить, когда меньше фиг ( это утрированно)
#15 by KarpovDeniska
я итоги отключил, а какие ещё зависимые???
#16 by ОчкарикСлава
ну регистры, наприемр "Списанные товары" для РТУ  и т.д.
#17 by Sammo
К слову - будет сильно разбухать файл лога (при модели фул). Для сокращенияМожно делать - select во временную табличку по условию. Дропаешь старую, переименовываешь временную в старое наименование. + проверь конец периода. P.S. Имхо - лучше использовать штатные механизмы.
#18 by ОчкарикСлава
А чем штатная обработка не катит?
#19 by KarpovDeniska
Штатными 14 дней чистилось всё, и мы забили
#20 by Sammo
Зависит от очищаемой таблицы. Здесь нет контроля ссылочной целостности. Например, грхнешь счет, а наклданые оставишь - появятся битые ссылки.
#21 by KarpovDeniska
мож кто нить знает как побыстрому очистить РН кроме как с отбором по регистратору?
#22 by zelebobi4
Гм.Например чистишь таблицу документов заказ покупателя. А на основании заказа  вводидтся  реализация товаров.  (В ут типовой такое есть) То если удалить заказ, в док-те реализация будет ссылка на несуществующую запись. Собственно в этом есть минус - надо все связи проработать.
#23 by ptiz
Вместо Формат(КонецПериода,"ДЛФ=DT") я бы для уверенности сделал так "CONVERT(datetime, '" + Формат(Дата, "ДФ='yyyy-MM-dd HH:mm:ss'") + "' , 120)"
#24 by KarpovDeniska
да и фиг сними , перетяну из копии если что по уиду
#25 by zelebobi4
Тебе вообще весь надо грохнуть?
#26 by KarpovDeniska
так пробовал, выдаёт ошибку что то типа неподдерживаемый system type
#27 by ОчкарикСлава
может лучше перетянуть в пустую базу то что надо оставить?
#28 by KarpovDeniska
уже думал, непонятно как перетягивать непериодические регистры, которые тоже неслабых размеров
#29 by KarpovDeniska
ну да, или проще нав все доки грохнуть, тогда и РН потруться
#30 by Lama12
А лицензию 1С нарушать кто учил?
#31 by ptiz
Сделай в квари аналайзере SELECT вместо DELETE и посмотри, какие записи возвращает.
#32 by ptiz
у меня так работает
#33 by Sammo
Ага. И обработка удаления табличных частей у документов тоже сделана?
#34 by Ёпрст
воткни OUTPUT DELETED.* ..увидишь записи, которые удалил.. А так, вот готовая поделка, к примеру:
#35 by ptiz
Про журналы не забудь, а то весело будет.
#36 by rs_trade
вместо delete подставь select * и посмотри результат
#37 by zmaximka
Отважные вы люди как я погляжу
#38 by rs_trade
а в чем отвага? при наличии определенных знаний работа напрямую со скулем не представляет никакой сложности и опасности. если для вас скуль это нечто темное и неизведанное, тогда конечно.
#39 by KarpovDeniska
то что нужно ))
#40 by acsent
так удалять нужно шапку документ, табличные части, движения с пересчетом итогов, журналы, криткрии отбора. а ты только шапку
#41 by KarpovDeniska
неее, удаляю все то что ты написал )
#42 by KarpovDeniska
подскажите кто знает, а на скуле временную таблицу можно вообще переименовать? если нет, то как реальную таблицу можно заменить временной, что то нигде не могу найти как это делается
#43 by KarpovDeniska
шо, никто не знает чтоль?? тогда ещё один вопрос: если я сделаю "SELECT * INTO _MyTable FROM _MyTable AS T WHERE T.PERIOD >= '01012012' Таблица перезатрётся, если такая уже есть в базе??? или будет ошибка на неуникальность имени???
#44 by s03
вот здесь есть выкладки по массовой загрузке или удалению в SQL
#45 by s03
заменить сами таблицы - никак, а вот залить данные из одной в другую - смотри пост выше. А если кратко, то в старой TRUNCATE, и затем INSERT INTO стараяТаблица WITH (TABLOCK) SELECT * FROM новаяТаблица
#46 by Господин ПЖ
зависит от ограничений накладываемых на таблицу
#47 by rs_trade
а зачем переименовывать временную таблицу?
#48 by Sammo
Дропаешь старую drop table 'имя таблицы' И переименовываешь временную exec sp_rename 'старое имя', 'новое имя' Но сие работает, если временная таблицу у тебя физически таблица, а не с #
#49 by Sammo
Например, отбираешь с отбором во временную без #. Дропаешь старую, переименовываешь временную.
#50 by Кириллка
Если _MyTable уже есть, то ругнется - 100%.
#51 by vde69
кто мешает удалять штатными методами? запускаешь 31 сеансов и в них начинаешь штатно удалять в разных периодах.... в первом сеансе все документы первого числа каждого месяца, во втором второе число... если база не кривая, никаких блокировок не будет :)
#52 by vde69
да и лог поставь в симпл на время удаления.... транзакции сделай не очень большие, я-бы сделал по 1 дню
#53 by vde69
кстати можно 31 регламентных задания, запустить, думаю это будет самое быстрое и правильное, у регламентного задания есть параметр, это будет номером дня в месяце... надо будет попробовать :)
#54 by Sammo
+ Кстати, только за счет перевода операции на сервер скорость возрастает раза в 2 (один и тот же алгоритм работы)
#55 by KarpovDeniska
запускали в 10 сеансах на 64 разрядном серваке, 14 дней, окончания не дождались
#56 by KarpovDeniska
ой,
#57 by Sammo
С отключенным пересчетом итогов и ОбменДанными.Загрузка = истина?
#58 by KarpovDeniska
да
#59 by vde69
конечно не в обиду, но все-же удивляюсь как в 24 года доверили базу в 600 гигов. лично у меня нет опыта работы с такими базами... 30 - это нормально, а тут 600 :)
#60 by KarpovDeniska
))) у меня тож нет, а у них вариантов не много, пользователи кричат целыми днями на it отдел, что 1С тупит, документы 30 мин проводится. у них рарус год на аутсорсе работал, и чёт толку ни хрена, тольк косяки
#61 by KarpovDeniska
подскажите, на что упереться можно в таблице табчасти, какое нить поле типа периода, чтобы можно было тоже все убить раньше какой нить даты.
#62 by vde69
сделай фоновое задание и пусть полгода удаляет.... а вообще что-то у тебя не правильно там, за 14 дней в 10 потоков можно черта лысого удалить, что-то у тебя СОВСЕМ не так!!! удаление идет быстрее записи, на среднем оборудовании запись ляма записей в регистр сведений идет примерно 40 минут (штатной обработкой) сколько у тебя строк в этом регистре?
#63 by rs_trade
связь только по шапке.
#65 by KarpovDeniska
т.е я кидаю доки во врем таблицу, потом говорю " удалить табчасть где табчасть.ссылка в (выбрать ссылка из времдоков); а так как сначала удаляются доки, а потом таб части, то получается, что если документы удалятся, а на таб частях упадёт на ошибке, или на таймауте, то табчасти уже придётся удалять только все?
#66 by KarpovDeniska
не путай регистр сведений и накопления
#67 by vde69
o_O есть такое слово Транзакция....
#68 by KarpovDeniska
сведений чистится за 3 минуты, накопления в день 150 тысяч регистраторов где то
#69 by KarpovDeniska
уже сообразил
#70 by vde69
ничем не отличается если расчет итогов отключен
#71 by KarpovDeniska
в регистре 2300000 регистраторов
#72 by rs_trade
удаляй сначала ТЧ. если доки уже удалил, удаляй тч для которых нет шапок документов. соединяй таблицу тч с основной таблицей и по нулл грохай.
#73 by vde69
150тыс документов - это детские обьемы, максимум минут 30... обнови статистику, отключи итоги
#74 by KarpovDeniska
итоги отключены
#75 by vde69
это ДЕТСКИЕ обьемы, даже 7.7 нормально тянет... интересно от куда у тебя 600 гиг???
#76 by vde69
сейчас выясним что база 20 гигов а все остальное скульный лог, и в конторе нет ни одного спеца по скулю, по этому ни кто ни когда регламенты не делал :)
#77 by KarpovDeniska
т.е если в документе 1000000 строк то это вообще не важно???
#78 by KarpovDeniska
и в регистре на 1 док милион записей тоже все равно?
#79 by vde69
с точки зрения базы почти не важно, если индексировали правильно... единственое - это то что транзакция будет слишком большая (памяти много) а вообще за такой документ убить нужно....
#80 by rs_trade
в документе может быть максимум 100000 строк. это на заметку.
#81 by KarpovDeniska
2 таб части, в одной контрагенты, в другой номенклатура, контрагентов 500 номенклатуры 5000, движения делаются так: на каждого контрагента выбирается вся номенклатура, итого 2500000 записей
#82 by vde69
мда.... такого я еще не видел... тому кто это сделал руки оторвать нафиг... теперь я понимаю от куда размеры базы :) переделывай все... 1. документ на 1 контрагента (в шапку) 2. нафига регистр накоплений? это класический регистр сведений... 3. индексы в порядок приводить...
#83 by KarpovDeniska
ну да, документ мне тоже изначально понравился,про индексы х.з, слышал админы пытались переиндексацию запустить, она часов 20 идёт, столько времени соответственно никто не даёт
#84 by KarpovDeniska
т.е год с базой точно не делалось никаких регламентов
#85 by rs_trade
а что за движения? надо смотреть можно ли перепроектировать, что бы не было кросс-джойна.
#86 by vde69
обнови SQL статистику, скорость возрастет раз в 200
#87 by KarpovDeniska
а это как и чего?
#89 by KarpovDeniska
спасибо, а насколько долгая эта процедура?
#90 by vde69
на 100 гигах минут 20, но пользователи могут работать в это время
#91 by KarpovDeniska
я думал разбить на 2 регистра просто, в один контрагентов , в другой номенклатуру,ну или  как на одного контра 1 док, но меня съедят, это им 500 доков придётся делать, они же не привыкли
#92 by rs_trade
да не надо 500 доков делать. в движениях что пишется?
#93 by vde69
500 документов должны делатся из одной обработки
#94 by KarpovDeniska
как вариант, контрагент , номенклатура
#95 by rs_trade
в ресурсах что хранится?
#96 by KarpovDeniska
булево
#97 by rs_trade
типа принадлежность номенклатуры контрагенту?
#98 by KarpovDeniska
запрет
#99 by pumbaEO
И это храниться в регистре накопления?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С