Всем, "обрезавшим" огромные базы 7.7 посвящается...

30.01.12

База данных - Свертка базы

Альтернативный метод "обрезки" ("свертки") базы 1С.77 на конкретную дату через УРБД
Исходные даные:
база 7-ки более 12GB с данными за 4 года. УРБД - центр+7 перифериек. Конфига самописная, когда-то на основе типовой "Бухгалтерии".
файл инициализации периферийной базы в архиве - почти 2GB. Не знаю как на 27-м релизе, но до 21-го господа 1С-ники так и не поменяли вшитый zip, поэтому выгрузить данные, которые в итоге в архиве будут весить более более 2GB, не представляется возможным - старый zip не понимает файлы более 2GB. (Поправка - представляется возможным:Плагин romix-a //infostart.ru/projects/1512/)
Как следствие размеров базы - практически невозможно работать: операторы ругаются, всякие манипуляции типа перепроведение / дальнейший обмен по УРБД и т.д. ОООЧЕНЬ трудоёмки (точнее "времяёмки")

Требуется:
в кратчайшие сроки обрезать базу (оставить текущий год)

Испробовано:
все типовые и "не совсем" типовые методы (свертка, пометка на удаление прошлого периода), рокет-ланчеры (и прочие 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). документы за текущий период так же переносим в "новую" базу через обмен УРБД, проинициализировав (Записать()) документы за нужный период. Перепроведение доков текущего периода - не обязательно. Если в точке "обрезки" с остатками все впорядке - перепроводить не надо, т.к. доки в текущем периоде с Обменом приедут из старой базы СО ВСЕМИ СВОИМИ ДВИЖЕНИЯМИ, а "Архив" притащит как раз ССЫЛКИ НА ЭТИ ДВИЖЕНИЯ.

Ну вот вкратце метод - РЕАЛЬНО ОПРОБОВАННЫЙ (база "порезана" в августе 2007-го, на сегодня полет нормальный).
P.S.
про "преемственность" - если меняем что-то в "старой" базе - перепроводим "Архив" и снова грузим его через УРБД в "новую".
Здесь есть АКТУАЛЬНАЯ проблема: при одновременном создании документов и справочников в обеих базах ID объектов "двоятся" и при обмене "затираются".
 
22.04.11 - чтобы не было этой проблемы проще всего "архивную" базу сделать "периферийной" по отношению к новому центру - тогда никаких "танцев с бубном" не требуется, и при надобности перепроводим архив и просто обменом гоним его в "новый" центр.
 
P.P.S.
кусок конфигурации с документом "Архив": //infostart.ru/projects/1538/
 
P.P.P.S.
На SQL все так же работает на ура - проверено 20.04.08- разрезал базу размером почти 20Гб с 7-мью периферийками, на все-про-все ушло 7 часов.
Еще момент: если режем центральную с периферийными - чтобы потом быстро выгрузить новые периф. базы, достаточно в таблице _1SDBSET значение "C" поля "DBSTATUS" сменить на "N",
чтобы осуществить первичную выгрузку в периферийные с ТЕМИ ЖЕ идентификаторами. Старые идентификаторы позволят подгрузить уже в новую базу обмены с перифериек, если,
например, нет возможностью заменить базы "разом" во всех подразделениях.

док "Архив"

док "Архив" после проведения - обработка "Инициализация объектов"

См. также

Учет с нуля на основе имеющейся файл-серверной базы данных 1С 7.7

Свертка базы Чистка данных Обмен между базами 1C Платформа 1С v7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 Абонемент ($m)

Приводится порядок действий для создания новой информационной базы на основе имеющейся файл-серверной "Торговля и Склад" ред.9.2, для учёта с нуля. В новую базу выполняется перенос справочников и остатков номенклатуры. Журналы документов, данные регистров, долги контрагентов, партии очищаются.

1 стартмани

14.01.2022    6106    6    etmarket    3    

3

Сравнение остатков в двух базах бухгалтерии 7.7 по данным файлов 1SBKTTL.DBF после свертки

Свертка базы Бухгалтерский учет 7.7 1С:Бухгалтерия 2.0 Россия Бухгалтерский учет Абонемент ($m)

Имеется база 7.7, которую хочется свернуть. Но в процессе свертки могут съехать остатки. Для проверки нужно сравнить остатки на дату свертки.

1 стартмани

20.06.2016    18378    2    pentanom    1    

2

Быстрое сворачивание 1С 77 ТиС (от 10 до 40 минут) независимо от размера ИБ.

Свертка базы Оперативный учет 7.7 1С:Торговля и склад 7.7 Управленческий учет Абонемент ($m)

Хотя большинство пользователей перешло на 1С 8ХХ, но есть еще очень много торговых организаций до сих пор эксплуатирующих 1С 77 ТиС. И пока еще не собираются переходить на новую платформу, а свертку делать надо. Есть много решений, я решил поделиться своим. Основное отличие: 1. Универсальность 2. Быстрота 3. Свертку можно делать на любую дату (не обязательно на начало года)

1 стартмани

15.11.2014    31679    121    Marik    27    

3

Простое удаление проводок из документов по выбранным счетам

Свертка базы Чистка данных Оперативный учет 7.7 Бухгалтерский учет 7.7 Расчет 7.7 Бухгалтерский учет Абонемент ($m)

Удаляет проводки(корреспонденцию) по выбранным счетам за выбранный период. Работает с забалансовыми счетами. Выбор условия соответствия вхождения счетов в корреспонденцию (и / или).

1 стартмани

06.01.2014    19764    11    1v7    8    

3

[Шишки для мартышки] Упаковка/ускорение нулевых итогов регистров для файлового варианта 7.7

Свертка базы Оперативный учет 7.7 1С:Торговля и склад 7.7 Россия Абонемент ($m)

По статье "Зачем в 1С нужно периодически пересчитывать итоги по регистрам?" http://infostart.ru/public/177171/ Обработка для 7.7, файловая, только для специалистов. Никаких гарантий и возмещений. Работает только в разделенном режиме (прямой запрос VFP). После выполнения - в обязательном порядке ТиИ (только упаковка), После ТиИ в обязательном порядке - принудительно переиндексировать. Родственная разработка для SQL: http://infostart.ru/public/177579/

8 стартмани

28.03.2013    72057    99    CheBurator    14    

15

Свертка ТиС 9.2 7.7 ole Действительно клевая и простая + Создание новой базы без документов с сохранением всех справочников

Свертка базы Чистка данных Оперативный учет 7.7 1С:Торговля и склад 7.7 Россия Абонемент ($m)

Берем 2 базы старую и новую, новая это точная копия старой, только с подчищенными файлами d*.dbf, r*.dbf Запускаем в старой обработку, ждем 15 минут и радуемся! Только не забудьте в новой провести ручками документы (операции - проведение документов) Сворачивает остатки по фирмам и складам в усредненной себестоимости(считает по принципу отчета остатки ТМЦ), делает вводы остатков в базе к которой коннектимся И сворачивает всю дебиторскую и кредиторскую задолженность по Фирмам без детализации кредДокумент. Обновление от 12.02.13 появилась возможность сворачивать дебиторку в разрезе кред документа+переносит долги по комиссионерам. Не знаю как вам, а на мой взгляд более простого и работоспособного я тут просто не нашел!!!

1 стартмани

02.01.2013    23499    179    zoeh    8    

10

Перенос номенклатуры, остатков и цен из 1С Рарус: Магазин. Ред. 2.5 в 1С Розница, редакция 1.0

Свертка базы Обмен между базами 1C Платформа 1С v7.7 Конфигурации 1cv7 Розничная и сетевая торговля (FMCG) Россия Абонемент ($m)

Обработка предназначена для переноса данных из Рарус 2.5 магазина на платформе 7.7 в Розницу ред. 1 на платформе 8.2. Перенос осуществляется с помощью OLE. Переносимые данные: Номенклатура(ед., штрих-коды), Документ ввода остатков и цены номенклатуры (после закрытия торгового периода).

1 стартмани

08.10.2012    22289    48    pervanax    5    

1

Свертка ТиС 9.2

Свертка базы Оперативный учет 7.7 1С:Торговля и склад 7.7 Россия Управленческий учет Абонемент ($m)

Свертка данных на определенную дату, без изменения в конфигурации.

1 стартмани

03.09.2012    20288    153    Tarlich    6    

16
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
100. knight 09.01.14 07:16 Сейчас в теме
Разобрался. Я базу резал заранее на копии. Из копии выгружал док архив(чтоб не удваивать реальные остаки в базе(проводится и распроводится он у нас часов 8)) и документы до 1.09.13. Они уже не редактировались. В базе люди продолжали работать(набивать доки и тд). А на новый год я планировал прогрузить документы с 1.09.13 по 31.12.13. Вроде идея хорошая была меньше заморочек на праздники заранее прогрузить остатки и большую часть доков. В итоге архив затерся, у них там оказывается сквозная нумерация внутренняя для распределенки не зависящая от типа документа. И первый же новый док в базе затер мой архив. Хорошо бэкапил все этапы. Поковырял файлы выгрузки поигрался с id починил. Большое спасибо за обработку очень полезная вещь.
101. Dolly_EV 269 09.01.14 07:44 Сейчас в теме
(100) Большое пожалуйста )) Но "проводится и распроводится он у нас часов 8" как-то настораживает... Скорее всего "сильно не закрытые" регистры?
102. knight 09.01.14 08:07 Сейчас в теме
Есть такое используем контроль отрицательных остаков по упр аналитике, те остатки общие по всем фирмам, а в регистре партии наличие то по фирме остатки.
103. Dolly_EV 269 09.01.14 08:59 Сейчас в теме
(102) ну это же как-то периодически надо закрывать
104. knight 10.01.14 13:46 Сейчас в теме
А если сейчас закрыть эти минусы файл регистра партии наличие ведь не уменьшится уже? просто нарастать станет медленнее?
105. Dolly_EV 269 11.01.14 14:03 Сейчас в теме
(104) почему не уменьшится? в новую урезанную базу переплывут только незакрытые остатки, соответственно - уменьшится, и если кривости закрыть ДО Архива - при проведении/распроведении архива обрабатываются ТОЛЬКО незакрытые по каким-либо измерениям остатки, соответственно скорость тоже увеличится
106. knight 01.02.14 13:42 Сейчас в теме
Пробовал провести документ Архив в бухгалтерии 7.7 . Возникла следующая проблема там нет справочника фирмы, в стандартной бухгалтерии одна фирма на бухгалтерию. А тут все на фирмы завязано (цикл по фирмам идет..) Как можно обойти этот момент?
107. Dolly_EV 269 02.02.14 09:24 Сейчас в теме
(106) Очевидно, убрать цикл по фирмам, оставив все, что в теле цикла
Закомментировать следующие строки:
                Операция.ФирмаУчета=СпрФ.ТекущийЭлемент();
                .................
                тзПров.НоваяКолонка("СпрФ");//,"Справочник.Фирмы");
                ................
		СпрФ=СоздатьОбъект("Справочник.Фирмы");
		СпрФ.ВыбратьЭлементы();
		Пока СпрФ.ПолучитьЭлемент()=1 Цикл
			Сообщить(Строка(СпрФ));
                ................
				БИ.ИспользоватьРазделительУчета(СпрФ.ТекущийЭлемент());
                ................
							тзПров.СпрФ 	= СпрФ.ТекущийЭлемент();
                ................
		КонецЦикла;//по ФИРМАМ
Показать
108. FelixCat11 19.05.15 17:39 Сейчас в теме
Доброго времени суток! А как связаться с автором статьи? Есть вопросы..не могу разобраться(
109. gimalaj 17 19.05.15 22:23 Сейчас в теме
110. Dolly_EV 269 20.05.15 08:53 Сейчас в теме
(108) FelixCat11, icq/qip 78782625 или здесь
111. aka_igor 03.10.16 16:12 Сейчас в теме
Не понятно только одно как сделать с файла выгрузки файл загрузки.
Где можно подробно об этом почитать?
112. user914421 07.11.18 20:38 Сейчас в теме
Dolly_EV, благодарю за прекрасную идею по переносу. Все работает. Просто гениально.
113. S_VA 22.12.23 05:37 Сейчас в теме
Привет!
Вылетает 1С при нажатии ОК или Записать
Конфигурация Торговля и Склад 9.2
114. Dolly_EV 269 29.12.23 05:47 Сейчас в теме
(113)
Очень мало исходных данных))
И как это относится к теме?
115. S_VA 29.12.23 05:58 Сейчас в теме
Если в документе Архив БД отметить необходимые галочки (оперативный учет) и нажать кнопку записать или ок
1С вылетает с критической ошибкой "Завершена работа 1С 7.7...."
116. Dolly_EV 269 05.01.24 06:20 Сейчас в теме
(115)
Мало информации. Могу предположить, что движок 77 стоит как-нибудь не по фен-шую?
117. S_VA 10.01.24 10:28 Сейчас в теме
После 3 часов расчета выдает ошибку
РасчРег[й].ВыбратьИтоги();
{Документ.Архив.Модуль Документа(399)}: Значение не представляет агрегатный объект (ВыбратьИтоги)
118. Dolly_EV 269 17.01.24 21:54 Сейчас в теме
(117)
Какой-то битый регистр. Присутствует в Конфе, но не используется, и с настройками итогов что-то не так.
Насколько помню "ВыбратьИтоги" не запрещено даже для оборотного регистра.
Не могу сейчас посмотреть модуль
Как вариант - "ВыбратьИтоги" поместить в попытка/исключение
119. Dolly_EV 269 17.01.24 21:56 Сейчас в теме
Перед проблемной строкой добавить Сообщить(РасчРег...)
120. Dolly_EV 269 17.01.24 21:59 Сейчас в теме
3 часа расчета - как-то плохо совсем. Есть сильно не закрытые регистры (Я так понимаю ТиС?)
Оставьте свое сообщение