Как уменьшить базу в 1с 7
Требуется:
в кратчайшие сроки обрезать базу (оставить текущий год)
Испробовано:
все типовые и "не совсем" типовые методы (свертка, пометка на удаление прошлого периода), рокет-ланчеры (и прочие OLE) и т.д. Не испробованы прямые запросы к SQL на удаление, по причине невладения ничем кроме языка 1С.
Основная проблема:
очень долгая пометка на удаление документов прошлого периода (исходное условие задачи - простые юзеры - опера и бухи - не заносят новые остатки в "пустую" базу ручками, обеспечение "преемственности" периодов - если поправили что-то в обрезанном периоде - изменения должны отразиться в рабочем периоде)
Решение:
1). создаем документ в конфиге, который при проведении будет писать за собой проводки и движения по регистрам (если требуется - по заданному фильтру), рассчитанные на "сам себя": т.е. после проведения такого дока (проводится на дату обрезки) имеем в базе на дату этого дока "удвоенные" остатки по бух. счетам и регистрам остатков.
2). берем копию исходной базы, оставляя в ней все справочники (без DH, DT, RA, RG, 1Cxx). Так же остаются файлы УРБД, кроме 1CUPDTS (совсем забыл - фишка метода - УРБД! Если база нераспределенная - придется распределить))).
3). в "старой" базе проводим наш чудо-документ (у меня он называется "Архив"). Делаем выгрузку в периф. базу из "старой" таким образом, чтобы выгрузился ТОЛЬКО НАШ "АРХИВ" (просто убиваем перед проведением "Архива" 1SUPDTS.DBF и CDX)
4). путем несложных манипуляций с файлом обмена УРБД превращаем его из "исходящего" во "входящий" для центра (меняем заголовок, счетчики, "Acknowledgements". Структура файла обмена здесь: http://oksla.narod.ru/urib.htm , менять надо основное содержимое файла DAT во "входящем" файле для новой базы, который изначально берем из "входящего" файла любой периферийки из старой базы
5). Памятуя о том, что копия нашей "новой" базы - это "клон" "старой", грузим в "новую" базу сей подкорректированный уже "входящий" файл обмена. Вуаля - в итоге в новой базе имеем документ "Архив", со всеми проводками и движениями регистров, которые формируют остатки на дату "Х". Один минус - ссылки в проводках и движениях регистров на документы обрезаемого периода выглядят как (со ссылками на справочники, константы и перечисления все в порядке - в "новую" базу в п. 2) мы не взяли только документы и движения по ним)- нас сие не устраивает, поэтому см. пункт 6).
6). для документа "Архив" пишем обработку (она у меня - в самом документе на кнопке его формы висит), которая, перебрав все движения дока "Архив"(проводки и регистры), "проинициализирует" все ссылки (документы и, если надо, справочники) из движений (тупо "Записать()"). Эту операцию делаем ОПЯТЬ ЖЕ ПРЕДВАРИТЕЛЬНО УДАЛИВ 1SUPDTS - чтобы в выгрузке у нас оказалось ТОЛЬКО ТО, ЧТО НАМ НУЖНО!
7). смотрим и повторяем пунк 4). и 5). - с итоге имеем в "новой" базе "восстановленные" документы, на которые ссылается наш "Архив". Идея проста - при обмене УРБД, если базе подсовывают док (справочник), который в ней отсутствует (был удален, даже совсем)- 1С его ВОССТАНАВЛИВАЕТ. Минус - "восстановленные" доки будут проведенными - в "старой"-то базе они проведены! а в "новой" базе они нужны помеченные на удаление - просто как ссылки "остатков". Но теперь пометить эти доки на удаление занимает не 3-4-5. суток (я так и не дождался окончания "эксперимента"), как на "полной" базе, а от 2 минут до 1 часа (в зависимости от размеров аналитики остатков). Другое решение - при выполнении пункта 4). эти доки перед загрузкой "пометить" в "утробе", чтобы они с обменом УРБД "приехали" уже помеченными - это еще не реализовано за неимением времени - надо основательней поковырять структуру DAT-файла обмена.
8). документы за текущий период так же переносим в "новую" базу через обмен УРБД, проинициализировав (Записать()) документы за нужный период. Перепроведение доков текущего периода - не обязательно. Если в точке "обрезки" с остатками все впорядке - перепроводить не надо, т.к. доки в текущем периоде с Обменом приедут из старой базы СО ВСЕМИ СВОИМИ ДВИЖЕНИЯМИ, а "Архив" притащит как раз ССЫЛКИ НА ЭТИ ДВИЖЕНИЯ.
Через некоторое время после начала работы база 1С начинает активно увеличиваться в размерах и, в некоторых случаях, начинает занимать все доступное место на диске. Когда свободное место на диске заканчивается, в работе базы 1С начинают возникать самые разные ошибки, вплоть до невозможности войти в базу.
Проблема размера базы эффективно решается сверткой базы 1С. При этом все старые документы в базе 1С удаляются, а вместо них создаются документы «Ввод начальных остатков».
Этот способ безусловно эффективный, но достаточно трудоемкий и затратный по времени. Плюс в процессе свертки могут возникать различные ошибки и проблемы, которые без помощи специалистов по 1С решить будет сложно.
Существует несколько простых способов, которые помогут поддерживать базу 1С в разумных размерах, не прибегая к свертке базы:
- Настройка автоматического удаление помеченных на удаление объектов.
- Настройка и сокращение журнала регистрации базы 1С.
- Сжатие базы 1С в случаях, когда база 1С файловая.
Рассмотрим указанные способы подробнее:
1. Настройка автоматического удаления помеченных на удаление объектов
Со временем в базе 1С накапливаются помеченные на удаление объекты. Эти объекты физически занимают некоторую объема базы 1С.
Помеченные на удаление объекты можно периодически удалять вручную, но можно настроить так, чтобы этот процесс выполнялся автоматически.
Рассмотрим настройку автоматического удаления помеченных на удаление объектов на примере конфигурации 1С: Управление Торговлей:
1. Перейдите на закладку «НСИ и Администрирование» и выберите «Обслуживание»:
2. Откроется окно «Обслуживание». В окне выберите «Удаление помеченных объектов»:
3. Откроется окно «Удаление помеченных объектов». В окне установите флажок «Автоматически удалять помеченные объекты по расписанию»
4. Откроется окно «Расписание». В окне на закладке «Общие», укажите как часто нужно запускать удаление помеченных объектов. Каждый день или, например, каждые 7 дней (1 раз в неделю):
5. Затем в окне «Расписание» перейдите на закладку «Дневное» и укажите желаемое время, когда должно запускаться удаление помеченных объектов. Например, начало с 4:00 до 4:15, завершать после 6:00:
ВАЖНО! Если база 1С файловая, то автоматическое удаление помеченных объектов сможет запускаться только, когда база открыта у одного из пользователей. В этом случае расписание нужно устанавливать так, чтобы автоматическое удаление запускалось в рабочее время, например, в начале или в конце рабочего дня.
6. Когда расписание настроено. В окне «Расписание» нажмите «Ок», затем закройте окно «Удаление помеченных объектов»:
7. Готово. Автоматическое удаление помеченных на удаление объектов в базе 1С настроено.
2. Настройка и сокращение журнала регистрации базы 1С
В журнале регистрации базы 1С хранится информация о действиях, которые совершаются в базе 1С. В журнал записывается какие пользователи входили в 1С, какие объекты меняли и т.д.
Т.к. журнал ведется с самого начала работы базы 1С, то со временем, размер журнала по объему может превысить размер самой базы 1С. Поэтому рекомендуется периодически сокращать журнал регистрации, удаляя из него старые записи, которые уже точно не пригодятся.
В некоторых случаях, когда в базе 1С работает много пользователей, журнал регистрации может расти в размерах очень быстро. Чтобы этого избежать, можно настроить уровень детализации журнала регистрации, чтобы в него записывалось меньше событий и рост журнала замедлился.
Для того, чтобы настроить и сократить журнал регистрации 1С нужно выполнить следующие действия:
1. Запустите Вашу базу 1С в режиме «Конфигуратор»:
2. В конфигураторе перейдите на закладку «Администрирование» и выберите «Настройка журнала регистрации»
3. Откроется окно «Настройка журнала регистрации». В окне в поле «Регистрировать в журнале события» настраивается уровень детализации журнала:
Обычно в поле установлен флажок «Регистрировать ошибки, предупреждения, информацию, примечания», что означает максимальный уровень детализации журнала:
Если в Вашей базе 1С журнал регистрации увеличивается в размерах очень быстро, то можно уменьшить уровень детализации журнала установив флажок «Регистрировать ошибки, предупреждения, информацию» или «Регистрировать ошибки, предупреждения»:
Устанавливать флажок «Не регистрировать» или «Регистрировать ошибки» НЕ рекомендуется, т.к. в этом случае, при возникновении проблем с базой 1С, специалистам будет сложнее разобраться в причинах ошибки.
4. В окне «Настройка журнала регистрации» нажмите кнопку «Сократить»:
5. Откроется окно «Сократить журнал регистрации». В окне в поле «Удалить события до» укажите дату, до которой нужно удались старые записи журнала. Обычно указывают начало этого или прошлого месяца. Затем нажмите кнопку «ОК»:
6. Откроется окно с вопросом. В окне нажмите кнопку «Да»:
7. Начнется удаление старых записей журнала регистрации. Удаление может занять некоторое время. Когда удаление записей завершится, окна «Сократить журнал регистрации» закроется автоматически. Закройте окно «Настройка журнала регистрации»:
8. Готово. Журнал регистрации базы 1С настроен и сокращен.
3. Сжатие файловой базы 1С
База 1С может храниться на жестком диске компьютера в обычном виде и в сжатом виде. В сжатом виде база 1С занимает значительно меньше места. Сжатая база может занимать более чем в 2 раза меньше места.
Если база 1С серверная, то за сжатие базы 1С отвечает сервер (sql или другой). При правильной настройке сервера база 1С всегда находится в сжатом виде и дополнительных действия со стороны пользователя не требуется.
Если же база 1С файловая, то рекомендуется периодически вручную проводить сжатие базы. Так база 1С будет занимать меньше места и будет работать быстрее, за счет оптимизированного размещения всех компонентов базы.
ВАЖНО! Описанный способ сжатия базы 1С подходит только для случаев, когда база 1С файловая. Если база 1С серверная, то, чтобы настроить сжатие базы, нужно обратиться к системному администратору.
Для того, чтобы сжать файловую базу 1С, нужно выполнить следующие действия:
1. Закройте базу 1С на всех компьютерах, если она где-то открыта.
2. Запустите Вашу базу 1С в режиме «Конфигуратор»:
3. В конфигураторе перейдите на закладку «Администрирование» и нажмите кнопку «Тестирование и исправление»:
4. Откроется окно с вопросом. В окне нажмите кнопку «Продолжить»:
5. Откроется окно «Тестирование и исправление информационной базы». В окне в списке «Таблицы и режимы» установите только один флажок «Сжатие таблиц информационной базы» и нажмите кнопку «Выполнить»:
ВАЖНО! Следует убедиться, что установлен только флажок «Сжатие таблиц информационной базы». Все остальные флажки в списке «Таблицы и режимы» должны быть сняты. Неправильная их установка может привести к проблемам с базой 1С.
Если база 1С большая, то сжатие таблиц может выполняться довольно долго. При необходимости, Вы в окне можете установить флажок «Прервать выполнение проверки через» и указать, когда следует прекратить сжатие таблиц:
Если до установленного времени сжатие базы не успеет выполниться, оно автоматически завершится, и Вы сможете продолжить работу в 1С.
(1)Если сервер достаточно мощный то можете попробовать использовать сжатие таблиц. Вот статья описывающая подобный способ уменьшения размера бд.
3. проведите ТиС базы с опциями "сжатие таблиц информационной базы" и "реструктуризация таблиц информационной базы".(22) На инфостарте есть обработка которая умеет напрямую выполнять SQL-запросы на сервере БД. Пользовался лет 5 назад. В итоге получилось порезать базу 1.3 террабайт в 20 ГБ. Остались справочники, настройки. Перекинул туда остатки и начали учет. Походу дела решали проблемы с остатками так как резали задним числом.
Рекомендуется провести предварительную работу перед урезанием базы:
1. привести в норму остатки по всем блокам учета
2. провести работу со НСИ
3. переносить остатки с помощью обработок с предварительным просмотром загружаемых данных. отдать обработку ответственным лицам и пусть сами загружают и отвечают за данный участок.
Успешно завершено несколько проектов по такому принципу, как срез базы, так и переход на новые системы.
(1) Скажите пожалуйста как посмотреть реальные данные ? у вас база весит 905гб но реально данные 65гб, уменя база весит 300гб но я удалил все данные за три года база ноборот вырос как посмотреть реальные данные? (25)У меня получаетсчя 100гб реальные данные, теперь как мне уменьшить сам размер базу данных? 1. модель восстановления БД у вас какая? для автообрезки журнала транзакций можно поставить "простая"2. начальный размер файлов БД какой выставлен? выставьте для файла БД ваши 65 Гб, прирост по 200 Мб, для журнала можно поставить 50-100 Мб с приростом по 50 Мб.
3. проведите ТиС базы с опциями "сжатие таблиц информационной базы" и "реструктуризация таблиц информационной базы". (3) kotloff, Initial Size = 900000 Мб. Автоприрост на файл данных и лога стоит по 10%. Попробую уменьшить этот параметр может база уменьшиться. Естественно сделаю бэкап перед этим. Если не получиться попробую выгрузить в *.dt. Реструктуризацию уже сделал порезал где-то 30 Гб. (7) Bajo, вот эту хрень "Initial Size = 900000 Мб." надо уменьшить до размера 65 Гб. ессно, чтоб в этот момент никого в базе не было. Попытаться провести сжатие средствами самого сервера.
Есть еще варинт выгрузить средствами 1С базу в *.dt затем удалить на сервере СКЛ базу либо очистить и загрузить туда средствами самой же 1С, правда это процесс долгий довольно.
Если решитьесь на такой маневр, для надежности сделайте векап базы средствами СКЛ сервера, потому как были случаи что сама 1С по каким то причинам не могла залить базу. (14) SaschaL, все получилось. В свойствах базы есть параметр Initial Size. У меня стоял 900000 МБ. Изменил на 65 000 МБ. Managemen t Studio думал где-то 1.5 часа. Получается что при изменении его параметра файлы внутри БД которые не входят в эти 940000 МБ перемещаются на дисковое пространство 65 000 МБ. Вот так вот. Источник BOL.
(18) В свойствах БД SQL сервера вы можете указать любой начальный размер файла базы данных и файла журнала, но не меньше текущего занятого объема. Начальный размер, обычно, указывается выше чем реально занимаемый объем БД. Делается это для того, чтобы свести дисковые операции увеличения размера файлов к минимуму и тем самым повысить скорость работы SQL сервера.
Чтобы задать корректный начальный размер желательно знать темпы прироста данных и указывать начальный размер с некоторым запасом. Сильно большой файл делать конечно не стоит, но, в большинстве случаев, процентов 20-30 можно смело накинуть. Главное чтобы в свойствах файла параметры увеличения были не в %, а фиксированного объема, например 50-100Мб, тогда увеличение файла будет проходить и быстрее и с предсказуемым объемом, но все равно заставит SQL сервер выполнять лишнюю работу.
В общем сжатием тоже особо увлекаться не стоит, лучше в рэйд массив дисков добавить.
Когда рэйд массив собран на ссд дисках, то особо актуальным становится сжатие таблиц БД средствами SQL. Это позволяет уменьшить объем файлов данных без особого ущерба в скорости работы. Например у меня из БД в 40Гб получилась база в 8Гб, хотя эффект сжатия больше зависит от хранимой в БД информации и если БД забита картинками, то особого уменьшения размера ждать не стоит.
Если вы прочитали статью, на которую я давал ссылку выше, то уже знаете, что даже сжатая база данных через некоторое время сильно разрастается. Достаточно выполнить обновление конфигурации или запустить ТиИ и выполнить индексирование или реструктуризацию БД. Чтобы этого не происходило необходимо создать регламентное задание сжатия таблиц БД или триггер выполняющий ту же задачу.
Использование DBF/CDX-файлов построено таким образом, что при удалении объекта базы производится только пометка объекта как удаленного, физически же запись об этом объекте остается в базе. В принципе уменьшить размер базы можно производить в конфигураторе через выгрузку-загрузку данных, но выполнение данной процедуры может требовать значительных временных затрат. В тоже время встроенный язык программ "1С: Предприятия 7.7" содержит методы для работы с DBF файлами.
Обработка удаляет удаленные записи из файла DBF, Это позволяет Сжать базу, физически убрав удаленные записи.
Запускать обработку следует не из той базы которую сжимают, а из любой другой базы 1С 7.7
Перед использованием обработки сделать Архивную копию базы.
После выполнения обработки базу надо проиндексировать.
Внешняя обработка для 1С:Предприятие 7.7 для сжатия DBF-файлов:Специальные предложения
Если не хотите стандартными средствами 1С сжимать, попробуйте программу DBFNavigator. В ней есть опция сжатия DBF для очистки удаленных записей. Если количество удаленных записей сопоставимо с количеством живых записей - это значит что надо не ZAP делать, а наводить порядок в учете. Этой обработкой пользуюсь уже лет 20.
Эксперементировать с другими программами для того чтобы сжать файл 1С не было желания.
Эта обработка как раз и наводит порядок в базе после удаления ненужных элементов справочников или документов.
Просмотры 10710
Загрузки 24
Рейтинг 1
Создание 18.10.18 17:57
Обновление 18.10.18 17:57
№ Публикации 926047
Конфигурация Конфигурации 1cv7
Операционная система Windows
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Да
См. также
Универсальное удаление документов, проводок, остатков, движения. Удалятор V2011.1 Free. (bat файл) Промо
Бухгалтера постоянно просят создать им новую базу, но со справочниками и константами, которые у них уже есть… Мои действия раньше были такими: создаю пустую папку, копирую туда нужные файлы (*.ert,*.dll,*.spl и т.п.) . Через конфигуратор загружаю файл 1Cv7.md. Запускаю базу монопольно – индексирую… С помощью обработок синхронизирую с заполненной базой и загружаю справочники и константы. И всё. Полдня рабочего времени «УБИЛ». В итоге написал данный bat-файл. Который удаляет документы, проводки, остатки и движения в любой DBF базе 1С 7.7.
1 стартмани
20.09.2011 81258 190 1v7 54
Удаление элементов справочника в 1С 7.7
Эта обработка позволяет удалить созданные системой элементы справочников. Например, когда элементы создаются при тестировании и исправлении базы с наименованиями, включающими строку "ФС". Обработка тестировалась на базе конфигурации Бухгалтерский учет для Казахстана, редакции 7.70.257.
1 стартмани
26.03.2021 2855 2 softmaker 0
Поиск и исправление дублей штрихкодов для номенклатурных единиц измерения
Простая и удобная обработка предназначена для поиска и исправления задублированных (повторяющихся) номенклатурных штрихкодов справочника Единицы. Также она даёт возможность посмотреть номенклатурные остатки. Полезна в случаях, когда номенклатура сопоставляется по штрихкоду с другими внешними источниками, а именно с модулем "Обмент ГИСМТ".
1 стартмани
19.11.2020 3285 1 Kuzya_brаtsk 4
Удаление нулевых значений в промежуточных итогах регистров (файловая версия)
Обработка удаляет промежуточные нулевые итоги регистров. Для файловой версии!
1 стартмани
09.01.2019 7397 13 DanDy 2
Обработка "Партионное удаление объектов" для 1С:Предприятие-7.7 Промо
Обработка выполняет в цикле удаление объектов частями (партиями), установленного размера. Предназначена для тех случаев, когда число удаляемых объектов велико (десятки-сотни тысяч) и их затруднительно удалить за раз имеющимся средствами. Обработка также удобна для организации регламентных сервисов очистки базы от мусора по расписанию. Имеется возможность запустить обработку на исполнение в указанном интервале времени и закрыть сеанс 1С по истечению времени завершения.
1 стартмани
30.01.2012 31207 86 yuraos 5
Удаление документов в 1Cv7 в не монопольном режиме
Простая обработка удаляет помеченные на удаление документы в не монопольном режиме, без отключения других пользователей.
1 стартмани
19.05.2017 14054 11 BorisBelov 13
Удаление операций и проводок у помеченных на удаление документов прямыми запросами
Обработка предназначена для быстрого удаления операций и проводок у помеченных на удаление документов прямыми запросами в базах данных SQL на компоненте "Бухгалтерский учет". Будет полезна при свертке больших баз, когда для удаления стандартной операцией "Удаление помеченных объектов" не хватает оперативной памяти
1 стартмани
06.12.2016 14196 6 Belomor 0
Обработка для удаления из базы сотрудника, и всех его следов
Данная обработка находит все документы и подчиненные справочники, в которых задействован выбранный сотрудник, и позволяет удалить. Особенностью является то, что если искомый сотрудник находится в табличной части документа, то удаляется только его строка, после чего документ пересохраняется и при необходимости перепроводится.
1 стартмани
21.03.2016 11282 5 sergei198821 1
Обработка ObjectsCleaner ("Поиск ссылок и удаление объектов") для 1С:Предприятие-7.7 Промо
Обработка совмещает в себе возможности двух системных обработок: “Поиск ссылок на объекты” и “Удаление помеченных объектов”. Имеет улучшенные инструменты для редактирования списка объектов для поиска ссылок: выбор в поле выбора из формы списка, подбор в обработках “Консоль1CQA” и “ПодборUChoice”. Результат поиска ОТОБРАЖАЕТСЯ В ДИАЛОГЕ В ВИДЕ ДЕРЕВА ОБЪЕКТОВ, подчинённых друг другу по ссылкам. Обработка позволяет из контекстного меню при клике мышью выполнять с объектом различные действия. Есть различные режимы контроля возможности удаления объекта в зависимости от его статуса (помечен на удаление или нет, проведён или нет). Имеется «пакетный» режим исполнения: поиск ссылок + контроль + удаление. Для других модулей предоставляется сервис автоматического выполнения (без открытия окна, с передачей списка объектов через параметр формы).
Решение проблемы: Как уменьшить размер файла 1SBKTTL.DBF?
АДМИНИСТРИРОВАНИЕ 1С 8 → перейти в меню [СТАТЬИ И ИНСТРУКЦИИ]Ошибки появляются при проведении документов или пересчёте бухгалтерских итогов. Программа пытается произвести запись в файл dbf, а особенно сти файловой системы не позволяют ей это сделать. Если размер файла "подкрадывается" к двум гигабайтам - рекомендуется произвести "свёртку" базы данных с помощью обработки WRAP.ert. При выполнении это процедуры - остатки свернуться на начало отчётного периода (желательно на начало года). Предварительно обязательно сделайте архивную копию, так как эта процедура не обратимая. Если базу "резать" по каким-то причинам нельзя, то можно воспользоваться сторонним решением " Kernel3x". Применение этой компоненты решает эту проблему, однако используете Вы её на свой страх и риск!
Для профилактики и уменьшения размера файла 1SBKTTL.DBF, рекомендую периодически выполнять следующие операции:
1) Выгрузка - загрузка информационной базы данных1С. Запускаем 1С в режиме "Конфигуратор". Не забываем выделить нужную базу в списке. Заходим в Меню -> Администрирование -> Выгрузка данных. Выбираем путь к файлу, в который будет выгружена база. Нажимаем "ОК". Ждём.
2) После выгрузки-загрузки информационной базы - рекомендую выполнить полное тестирование и исправление. Запускаем 1С в режиме "Конфигуратор". Не забываем выделить нужную базу в списке. Заходим в Меню -> Администрирование -> Тестирование и исправление. Устанавливаем все признаки. Птичку ставим на "Тестирование и исправление". Нажимаем "Выполнить". Процедура длительная - ждём.
После выполнения всех операций заходим в каталог нашей базы данных и смотрим на размер файла 1SBKTTL.DBF. В нашем примере, он уменьшился более чем в два раза. Это позволит нам вести учёт еще некоторое время без принятия дополнительных мер. На скриншоте видно, что уменьшился не только 1SBKTTL.DBF, но и другие файлы DBF ( 1SENTRY.DBF, 1SACCSEL.DBF, DT50647.DBF, 1SCONST.DBF и прочие ).
Помните, что профилактические меры в любой среде обходятся намного экономичние и занимают меньше временных и материальных затрат, чем последующее исправление и восстановление. База данных 1С это постоянно растущий механизм, за которым нужно наблюдать, исправлять ошибки, производить регламентные задания. Если Вам нужен специалист по 1С, который выполнит эти и любые другие работы, можете обратиться через контактную форму.
Читайте также: