Стояла задача урезать относительно небольших размеров (30 ГБ) базу, клиент-сервер + MS SQL. Типовая обработка в тестах делала это за неделю, да и не все гладко было. Написал обработку-генератор скрипта SQL, усекающую регистры и удаляющую ненужные документы. Урезал, пересчитал итоги, все в норме, полет нормальный. До тех пор, пока не возникла необходимость подправить одно предопределенное субконто (добавить признак Количественный). При реструктуризации таблица Хозрасчетный.Субконто полностью очищается. От релиза не зависит, проверял в т.ч. на последнем совместимом из 8.3.5.
Предположил также, что могут мешаться неприбитые по дате записи из таблицы субконто (зачищалась только основная таблица). Дочистил все записи, более не имеющие прародителей в основной таблице, типа:
delete fr om _AccRgED22127
where _RecorderRRef in (
sel ect distinct t._RecorderRRef
fr om _AccRgED22127 t
left outer join _AccRg22129 tt
on tt._RecorderRRef = t._RecorderRRef
wh ere tt._RecorderRRef is NULL)
смотрите , к каким таблицам обращается 1с8 пред очисткой .
и попытайтесь проанализировать, почему 1с8 решает очистить. как вариант сделайте копию таблицы. после реструктуризации и очистки пре заполните с учетом количественного субконто.
Типовая обработка в тестах делала это за неделю, да и не все гладко было.
Лучше всё-таки пользоваться типовой обработкой. Гладко в таких случаях не бывает НИКОГДА. В любом случае придётся проверять и что-то исправлять потом руками.
(1) irreal, скажите, какие Вы сделали умозаключения или что подвигло Вас на подобный шаг, а именно: урезать базу? Для меня остается полной загадкой этот шаг в принципе для 8-ой версии 1С.
(1) Задача "урезать" может быть решена переносом данных в новую базу.
Что-то мне подсказывает, что удалить надо большую часть данных.
Следовательно, Перенос актуальных данных может занять гораздо меньшее время.
При грамотно настроенном обмене можно сделать так, что будут некоторое время существовать обе базы.
А после окончательного переноса данных и ввода остатков на начало периода - первую базу можно будет просто отключить.
смотрите , к каким таблицам обращается 1с8 пред очисткой .
и попытайтесь проанализировать, почему 1с8 решает очистить. как вариант сделайте копию таблицы. после реструктуризации и очистки пре заполните с учетом количественного субконто.
Решение было то, же что и в начале: просто в скрипте очистки бесхозных записей субконто перепутал таблицу налогового к проводкам хозрасчетного - они вязались, но понятно, что движения одних регистраторов есть и по БУ и по НУ. После исправления скрипта все прокатило. Вознаграждение - в ответ (2), потому что после него запустил профайлер, и увидел, что за скрипты гонит ТИИ, и увидел несоответствие).
Остальное - лицензия, ТИИ, типовщина, выгрузки - хорошо, но слишком долго.
(7) Придумайте сами ну, например, пару причин, зачем. Наверняка найдете)
(8) irreal, я понимаю вы написали скрипт котрый систит некоторые балицы и документы, потом у это удаляете? Причем средствами SQL.
Геройский поступок. А не проще было воспользоваться стандартной обработкой по сверке базы, создать правило по которому сворачивается тот или иной документи вперед. Просто при усечении средствами SQL можно не учесть связанных движений и можно нарушить целостность данных в системе.
Как я писал, та самая стандартная обработка возится слишком долго, сколько мне дать не могут. Это еще одна из самых маленьких баз, есть еще базенка под 300 гигов. "Целостность базы" - очень лелеемое людьми из 1С понятие. Если целостность ограничивается "объект не найден", то это не проблема, к тому же в скрипте зачистки генерировалась таблица по поиску ссылок тех документов, что фигурируют в остатках, введенных той самой обработкой. Воздействие на данные - не фатальное действие, вот когда конфигуратор вылетит в середине обновления и скажет, что в предыдущем обновлении произошла ошибка, а потом "Нарушена целостность ИБ" и закроется - это да... ищи небитую _Config.)))
А так - ничего страшного - просто поленился зачистить таблицу субконто, а реструктуризация, как заправский хирург, оттяпала руку из-за пальца)
(12) Мысль не плохая. Только создание, корректно работающей много-поточной свертки потребует прилично времени.
В принципе вот статья как это можно сделать: http://catalog.lessons1c.ru/public/306865/
Но мне кажется, что лучше использовать уже проверенные механизмы.
Перенос данных, как вариант свертки, мне кажется самым простым и надежным при такой огромной базе.
Данные из базы 1 в базу 2 могут перетекать хоть месяц не мешая работе.
И всегда будет возможность вернуться к прежнему состоянию.
(13) У меня тоже есть статья про многопоточность Приемы обработки больших данных в 1С. На пути к big data... У нас есть готовые универсальные многопоточные механизмы для решения задач как свертки, так и обмена данными без изменения конфигурации.
(14) Статья просто супер! Это реально большой труд.
Давайте ссылку (в "Инструменты разработчика" вроде нет). Где ваша много-поточная свертка. Если это действительно работающая программа, то это действительно хорошая вещь.