Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: 1С для программиста

  Все выпуски  

RusFAQ.ru: 1С для программиста


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / 1С для программиста

Выпуск № 59
от 22.10.2005, 13:39

Администратор:Калашников О.А.
В рассылке:Подписчиков: 140, Экспертов: 19
В номере:Вопросов: 1, Ответов: 4


Вопрос № 27838: Товарищи эксперты, у меня такой вопрос. Я хочу в общем журнале документов удалить все документы за 2002-2004 год и оставить только 2005. Можно ли как-нибудь это сделать, не из программы? На удаление из программы 3000 документов у меня уйдет не один ч...

Вопрос № 27.838
Товарищи эксперты, у меня такой вопрос. Я хочу в общем журнале документов удалить все документы за 2002-2004 год и оставить только 2005. Можно ли как-нибудь это сделать, не из программы? На удаление из программы 3000 документов у меня уйдет не один час. Куда записываются все документы? В один файл или в разные таблицы?
Отправлен: 17.10.2005, 13:38
Вопрос задал: Dusha (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ovr1970
Здравствуйте, Dusha!
Вообще то документы записывабтся в разные файлы, которые начинаются DH (Шапки документов) и DT (табличные части). Соответственно каждому типу документов два файла. Но все документы дублируются в файле 1SJourn (Журнал документов, содержит номера и общие атрибуты) и 1SDNLock (Номера для блокировки при записи с тем же номером) и 1SCRDoc - ссылки на документы. Последний файл может пересчитать сам 1С. Все остальные придется чистить самому, но остается открытым вопрос о движениях документов. Если выполнить проверку, то для всех движений будут опять созданы исходные документы (причем не заполненные, естественно). Если проверку не выполнять, то как узнавать о ошибках БД?
Поэтому мой совет: напиши програмное удаление документов и выполни его, даже если эта задача будет крутиться 10 дней. Просто нужно будет разбить ее на 10 частей и потихоньку запускать по одной части каждый выходной.
Ответ отправил: Ovr1970 (статус: 1-ый класс)
Отправлен: 17.10.2005, 13:53
Оценка за ответ: 4

Отвечает: FarGot
Здравствуйте, Dusha!
Сервис->Обработка документов, выбрать все документы, "обработка"-пометить на удаление. Примерно 2000 документов пометилось меньше чем за пять минут, ну еще столько же само удаление. Если уж настолько слабая машина что будет делать это часами - я бы перетащил базу на более мощьную, там бы убил все что нужно и назад. Еще вариант через import77.ert-export77.ert - наверное на любом диске ИТС есть.
Ответ отправил: FarGot (статус: 6-ой класс)
Отправлен: 17.10.2005, 18:02
Оценка за ответ: 5
Комментарий оценки:
Спасибо огромное! Самый дельный совет! 5+++ ставлю!

Отвечает: Anefedov
Здравствуйте, Dusha!

В разные.

Советую потерпеть час, чтобы потом день не мучаться. Все равно руками контроль целостности не сделаешь.

Если очень лень ждать, и пофигу на последствия - сделай просто.

Процедура УдалитьНах()
Док = СоздатьОбъект("Документ");
Док.ВыбратьДокументы("01.02.2002", "31.12.2004");
Пока ДОк.ПолучитьДокуумент() = 1 Цикл
Док.Удалить(1);
КонецЦикла;
КонецПроцедуры

Но лучше сделать так:
Процедура УдалитьПравильно()
Док = СоздатьОбъект("Документ");
Док.ВыбратьДокументы("01.02.2002", "31.12.2004");
Пока ДОк.ПолучитьДокуумент() = 1 Цикл
Док.Удалить(0);
КонецЦикла;
КонецПроцедуры
И после этого запустить обработку - удаление помеченных объектов

Только все равно потом от бухгалтера или директора люлей получать придется за то, что все остатки полетели.

Нужно делать свертку базы - вот единственный прогрессивный подход!

Ответ отправил: Anefedov (статус: 7-ой класс)
Отправлен: 19.10.2005, 11:41
Оценка за ответ: 5

Отвечает: Шахрайчук Владимир Анатольевич
Здравствуйте, Dusha!
Каждый документ лежит в двух файлах - шапка отдельно, табличная часть отдельно, и не факт, что первая и вторая строки есть соседние записи в dbf (они соседние, если использовать индекс). Так что в этом направлении движение неверно.

Вам нужно свернуть базу, то есть посмотреть остатки на конец 2004, завести их 01,
01,2005 (перенести остатки), и не только по проводкам, но и по регистрам.

Я у себя такое сделал. Это не так страшно, как кажется. Задал обработке перенести 15 дней, и оставил ее на ночь. За 24 ночи год свернулся. Я удалил более 45 тысяч документов, 900 элементов справочников и ничего.

Пример моей обработки ftp://82.207.94.32/CloseBase.ert

Приложение:

Ответ отправил: Шахрайчук Владимир Анатольевич (статус: 4-ый класс)
Отправлен: 19.10.2005, 21:15
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Rambler's Top100 Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.1cprogfaq
Архив рассылки
Отписаться
Вспомнить пароль

В избранное