v7: Обрезка базы в старом периоде в sql-базе (1с 7.7.) #764899


#0 by barsik123
Есть задачка обрезать данные до выбранной даты в 1c 7.7 sql базе. Для выполнения этой задачки можно использовать следующий код: Проверял код, задачу свою он выполняет. Но мне нужно,чтобы не все документы удалялись, поэтому я подправил этот код таким образом:   EXEC ('Delete from '+@TableName+' with (tablock) where '+@ColName+' IN (Select IDDOC FROM ##ID)') END FETCH NEXT FROM MyCur INTO @TableName, @ColName END При выполнении исправленного кода, нужные таблицы пропускаются,т.е. не выполняется для этих функция EXEC,но в итоге документы связанные с этими таблицами все-равно удаляются. Подскажите где ошибка, как правильно задать ограничение.
#1 by vip03
1sjourn iddocdef<>34412
#2 by barsik123
Спасибо, попробую. Что-то я не совсем понимаю смысл кода, по приведенной мной ссылке в топике. Я так понимаю,что документы удаляются из базы, когда путем перебора добираемся до таблицы 1sjourn, тогда зачем вся эта чехарда с удалением других таблиц, если доки и так удаляются, при удалении 1sjourn?
#3 by Mikeware
Это граната для обезьян.
#4 by vip03
в 77 документ хранится в трех таблицах. 1sjourn - дата, время, общие реквизиты и т.д. dh - шапка документа dt - табличная часть т.е. ты сами документы не удаляешь, но ссылки на них из журнала удалил. вот ты их и не видишь.
#5 by Провинциальный 1сник
После ТиИ они удаляться полностью как потерянные
#6 by Mikeware
или восстановятся?
#7 by Провинциальный 1сник
Это вам не восьмерка
#8 by Mikeware
я просто штатным ТиИ в клюшках не пользовался почти никогда (ну, кроме первых пары лет).
#9 by ДенисЧ
Восстановятся. Но кривыми.
#10 by Mikeware
а почему "кривыми"? в смысле, без общих реквизитов, чтоль?
#11 by zenik
Проще перенести не удаляемые доки в период, который не удаляется
#12 by Провинциальный 1сник
В dt и dh нет информации о дате документа. Она есть только в журнале. Так что - не восстановятся. Проверял.
#13 by Mikeware
она может быть в регистрах, и в ссылках.
#14 by ДенисЧ
Бездатыми и безномерными. И да, без общих реквизитов с установленным отбором
#15 by ДенисЧ
Восстановятся. Просто ты их не видишь.
#16 by Mikeware
бездатость® документов исправляется рысканьем по регистрам (если в таковых установлена "быстрая обработка движений"), и "ссылкам документов"
#17 by ДенисЧ
Но ТИИ этого же не делает. А вручную - да, в части случаев это сделать можно
#18 by Провинциальный 1сник
Нет. Вот сейчас проверил, сделал ТиИ. Выдает кучу сообщений типа таких: --- Проверка таблиц документов. Документ ПлатежноеПоручение(DH12070. Запись 9). Нет в журнале документов. Удалено ---
#19 by Mikeware
+ну и часть общих реквизитов с отбором тоже из регистров возможно вытянуть. впрочем, скажи чо доброе по
#20 by Mikeware
там флажки вроде были - как почиупать с потерянными  объектами, удалять или восстанавливать.
#21 by Провинциальный 1сник
Это касается только ссылок на удаленные объекты. Безжурнальный документ удаляется в любом случае.
#22 by Mikeware
лень проверять, если честно.... но вроде у меня восстанавливались... "это было так давно, что почти неправда"©
#23 by barsik123
Как то не так все получается. Запускаю скрипт, в течении выполнения скрипта захожу в базу 1с вижу,что документов нет,исключаемые документы остались. Наблюдаю как растет журнал регистрации,но т.к. диск у меня ограничен по размеру, прерываю обработку, сжимаю журнал регистрации, захожу в базу и ... все удаляемые документы на месте. как они вернулись то?
#24 by Mikeware
позовите программиста.™ пока он идет к вам - почитайте что-нибудь про транзкакции
#25 by Провинциальный 1сник
Под словами "журнал регистрации" вы очевидно понимаете журнал транзакций?
#26 by barsik123
Да, журнал транзакций. И что я там вычитаю? Моя задача удалить документы, они восстанавливаются, я так понимаю что вы тоже не очень хорошо в этом вопросе разбираетесь,так бы сразу что-нибудь посоветовали бы, а не отправляли к программисту.
#27 by Провинциальный 1сник
"Наблюдаю как растет журнал регистрации,но т.к. диск у меня ограничен по размеру, прерываю обработку" При изменении данных в пределах одной транзакции журнал транзакции растет, ибо в него копируются ВСЕ изменения, производимые в базе. И так пока транзакция не закончится подтверждением или откатом. Далее возможны варианты. В случае модели восстановления full данные в журнале останутся до бэкапа журнала с очисткой. В модели simple данные в журнале удалятся. В обоих вариантах файл журнала сам уменьшаться не будет, нужен шринк (если нужен). Ищите дополнительное дисковое пространство или переписывайте алгоритм, разделяя его на несколько транзакций.
#28 by Mikeware
там вы вычитаете как минимум причину того, что происходит. сапоги должен тачать сапожник. поэтому вам и советуют позвать программиста.
#29 by Провинциальный 1сник
Напомнило классический баянчик "Надо сделать сложную операцию на позвоночнике моему другу (ему 16 лет). К врачам идти - дорого. Книжку по хирургии мы уже купили. У кого есть опыт - поделитесь!"
#30 by barsik123
Извините, возможно за глупые вопросы, просто ранее не приходилось разбираться с базами на sql, вот теперь возникла такая задача. У меня в базе используется простая модель данных. Я предполагал, что сжатие базы привет просто к удалению журнала, а произошло,что сжатие приводит к восстановлению данных за последнюю транзацию. такой журнал большой мне по-любому не нужен, поэтому журнал нужно удалять. Ну я как бы и зашел к программистам. Вы же тоже при непонятных ситуациях либо разбираетесь сами, либо заходите на форум, думаю вряд ли сразу приглашаете профи в этой области.
#31 by Провинциальный 1сник
"Я предполагал, что сжатие базы привет просто к удалению журнала, а произошло,что сжатие приводит к восстановлению данных за последнюю транзацию. " Ни то ни другое. Откат произошел потому, что вы прервали транзакцию, не дав ей завершиться. Сжатие тут вообще ни при чем и ни на что не влияет, кроме свободного места на диске!
#32 by Mihenius
Давно же это было ) Для ТИС 1) Нужно сделать подготовку, чтобы не было битых ссылок 2) Само удаление Я вроде под dbf переделывал правда. Под sql Надо править ) ПС: Если Опер учет, то есть еще 2 варианта 1) Спец. доком "Свертка регистра" - делаем срез регистров на дату, что раньше удаляем 2) Правим "косяки" штатной свертки - самый лучший вариант Для бухии аналогично можно доработать косячную штатную и будет в несколько раз быстрее.
#33 by Mikeware
+ "скальпеля нет, но есть острый нож"
#34 by barsik123
Все спасибо понял.буду искать диск отдельно для лога. На серваке стоят скази-диски, на этом диске всего 150 гб, сама база 20 Гб, а журанл разрастается до 100 и больше.Поставлю один большой, на него только лог перекину. С бдф базами, там все просто, все ограничивается знаниями 1с. Ни раз делал, все получалось, а здесь штатными средствами 1с все делается очень долго, а люди с базой работают круглосуточно и без выходных, так что нужно все делать быстро. В базе такой бардак,что классическая свертка бесполезна, проще руками или с помощью обработок занести правильные остатки, поэтому и решил,что удалю данные через sql, а потом занесем остатки.
#35 by Mihenius
Дык, там суть та же. Я брал за основу свертку скуль базы, переделал на дбф Проблему битых ссылок SQL не решить
#36 by Mikeware
вообще-то, журнал транзакций можно назначить и на другой диск. или вообще сделать их несколько, онграничив размер первого (который на диске с базой)
#37 by Злопчинский
это зависит что делать - как галка стоит очищать или восстанавливать
#38 by barsik123
Продолжаю развлекаться  в фоновом режиме своей работы со сверткой базы. Есть пара вопросов. 1. Выше я писал,что размер диска небольшой и журнал транзакций разрастается до размеров диска. Думал,что нужно поставить отдельный диск для журнала, но решил проблему без доп. диска, просто разбил одну большую транзакцию удаления всех таблиц на транзакцию при удалении каждой таблицы: BEGIN TRANSACTION EXEC ('Delete from '+@TableName+' with (tablock) where '+@ColName+' IN (Select IDDOC FROM ##ID)') COMMIT TRANSACTION В итоге журанл транзакций уже так не разрастался. Вот думаю, может ли такой финт привести  к каким-то негативным последствиям? 2. После выполнения скрипта по удалению таблиц обнаружилось,что удаляется полностью один из справочников базы. Каким чудом это происходит пока не понятно. Я даже для теста отключил удаление системных таблиц, типа _1SCONST и других. Но это не помогло.Может есть у кого мысли, как при выполнении скрипта из ссылки, указанной в топике, может удаляться справочник.
#39 by пипец
если периодические реквизиты сделаны документами , не ? ЗЫ что за справочник то ?
#40 by Mikeware
некрофил?
#41 by ADirks
1. Если балуешься с базой-песочницей, то не ставь recovery model 'Full'. Поставь 'Simple'. И нафига там транзакции вообще? 2. а это никто за тебя разбираться не станет
#42 by Ёпрст
мот он на-ходу режет ? :) вместе с пользователями в базе, вот и лепит транзакцию в коде
#43 by Mikeware
на это способны не только лишь все...
#44 by ADirks
сначала он режет, потом его режут... жизнь не стоит на месте!
#45 by Mikeware
...потом _ему_ режут...
#46 by ДенисЧ
Кстати, идея с обрезкой на лету мне нравится... Надо будет помедитировать...
#47 by Mikeware
давай скину на мыло :-)
#48 by Mikeware
+ там реально ничего сложного.
#49 by ДенисЧ
Ты надеешься, что я сам не справлюсь, если мне понадобится? )))
#50 by Mikeware
а как насчет принципа разумной лени? :-)
#51 by ДенисЧ
У меня другой принцип - безумная лень... Это когда ленишься, но иногда такое накатывает...
#52 by Mikeware
ленишься, ленишся... потом как накатит - пипец как ленишься... а потом отпустит - и опять просто ленишься?
#53 by ДенисЧ
Откуда ты знаешь? Ты за мной следишь????
#54 by Mikeware
через зеркало...
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

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