Вынесение регистра версий из базы

02.10.14

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

В базе Розница в течении двух лет использовалось типовое версионирование. Постепенно версии стали занимать очень много места. Последней каплей терпения стала невозможность проведения реструктуризации при переходе с 8.1 на 8.3. Решено было вынести регистр версий в отдельную базу.

Скачать файлы

Наименование Файл Версия Размер
Обработка и конфигурация
.zip 12,17Kb
19
.zip 12,17Kb 19 Скачать

По замерам в SQL-сервере при общем объеме базы 286 Гб размер таблицы регистра версий стал 129, т.е. 45%.

Сначала я хотел перенести в отдельную SQL-базу через «чистый SQL», но потом решил, что написание примитивного кода переноса будет быстрее и сопровождать легче.

В итоге за 2 часа рабочего времени написал структуру базы и обработку, которая переносит регистр из рабочей базы в отдельную. Обработка и база в формате 8.2

 

Конфигурация базы версий

В конфигурации всего несколько справочников:

  • Типы – типы данных, синхронизируются по полному имени метаданных.
  • Узлы обмена – узел обмена, из которого пришла версия, синхронизируется по коду.
  • Авторы – авторы версий, синхронизируются по наименованию.

Регистр версий имеет структуру:

Я добавил только ресурс «Дата добавления», чтобы отслеживать, когда версия была перенесена в базу версий.

Объект – это значение типа «Уникальный идентификатор», является ссылкой на объект в исходной базе.

От замысла хранить версии из нескольких баз в одной базе версий отказался – отдельные базы проще в обслуживании.

 

Заполненный данными регистр версий в базе версий выглядит так:

Заполненный список типов выглядит так:

Заполненный список авторов выглядит так:

 

Обработка для переноса

Обработка имеет  простую форму:

Используется обычно по расписанию для запуска из регламентного задания:

О = САП.ДатьВнешнююОбработку("Перекачка версий в базу версий");

О.ВыбСервер = "server";
О.ВыбБаза = "VersRT";
О.ВыбПользователь = "robot";
О.ВыбПароль = "1111111111111";

О.Работа();

Перенесенные версии удаляются из базы данных.

Использование в отчетах рабочей базы

Версии использовались только в отчете по показу версий объекта. Вместо обращения к рабочей базе нужно переписать код для обращения к базе версий по COM-соединению. Остальное не меняется. Это просто.

сжатие базы

См. также

Оптимизированная свертка Бухгалтерии 3.0

Свертка базы Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Платные (руб)

Расширение позволяет за 1-2 дня свернуть базу с десятками миллионов документов. Использует оптимизированный алгоритм определения документов, на которые нет ссылок, для последующего удаления 16 фоновыми заданиями. Не помечает документы на удаление.

38400 руб.

08.02.2024    447    7    0    

2

Многофункциональная выгрузка из 1С:УТ 11/ УТ 10 в 1С:БП2, БП3 (соответствия товаров, контрагентов, складов, статей ДДС)+Свёртка по НДС

Обмен между базами 1C Оптовая торговля Свертка базы Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Хотите точно знать, что вы выгружаете? Хотите сворачивать товары по НДС или фильтровать товары по доп. реквизиту? Вы волшебник, которому необходимо превращать одних контрагентов в других? Хотите при выгрузке превратить группу товаров в один? Или просто нужен удобный OLE обмен между 1C:Управление торговлей (ред. 11 или 10) и 1С:Бухгалтерия предприятия (ред. 2 или 3). Тогда эта обработка для вас!

10900 руб.

19.04.2013    168281    349    395    

327

Обрезание базы 1С

Свертка базы 8.3.8 Конфигурации 1cv8 Россия Управленческий учет Платные (руб)

Механизм обрезания базы 1С. Описан процесс переноса среза остатков в копию базы. Представлено прикладное решение - обработка по переносу данных. Реализован способ обмена между базами без длительного отключения рабочей базы.

7200 руб.

27.03.2023    4108    11    2    

13

Свертка остатков по 41 счету в корреспонденции с 91 счетом

Свертка базы Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Абонемент ($m)

Обработка обращается к остаткам по счету 41.1 на дату, что выбрал пользователь, пробегается по ним и заполняет документ "Операция, введенная вручную".

1 стартмани

вчера в 17:00    81    0    config    0    

1

Свертка ЗУП 3.1 и ЗКГУ 3.1

Свертка базы Платформа 1С v8.3 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Абонемент ($m)

Вопрос, который мучает всех: в связи с развитием возможностей программ 1С размеры/объем очень быстро растут (уже объем пустой базы более 1 Гб) и не секрет, что чем "тяжелее" база, тем она медленнее работает. Для БП-3.0 разработчики 1С сделали вшитый типовой механизм свертки базы, суть которого вывести остатки по счетам на дату свертки и удалить все документы/движения до этой даты. А вот для ЗУП пока ничего подобного нет, а база растет быстрее, чем на дрожжах. Я долго анализировал и искал возможные решения для свертки ЗУП, поиск в интернете дал кучу различных вариантов. А когда начинаешь их рассматривать, в основном – только "перенос" среднего заработка, а остальное – "доделай сам". Только фирмы-франчайзи предлагают что-то более серьезное, но за хорошую плату.

5 стартмани

28.02.2024    869    23    ivnik    16    

15

Свертка выбранных остатков

Свертка базы Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Абонемент ($m)

Обработка позволяет свернуть выбранные остатки по счету на выбранный счет.

1 стартмани

13.02.2024    203    3    medm    0    

3

Свертка ЗУП 3

Свертка базы Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Абонемент ($m)

Свертка ЗУП 3.1 по трем регистрам с возможностью чистки базы от документов движения и чистки сотрудников от уволенных.

5 стартмани

16.01.2024    1100    31    AlexHelmer    1    

6

Свертка движений регистраторов (управляемые формы)

Свертка базы Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Инструмент оптимизации вашей базы 1С - свертка движений регистраторов с повторяющимися записями.

1 стартмани

09.01.2024    350    4    Rafael-87    0    

2
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ojiojiowka 02.10.14 11:03 Сейчас в теме
А не пробовали таблицу вынести в отдельную файловую группу?
2. fixin 4252 02.10.14 12:12 Сейчас в теме
(1) вынесение не решит мою проблему. Эта таблица по прежнему будет частью базы и будет пересчитываться при каждой реструктуризации, переиндексации и т.п.
3. AnnB 02.10.14 12:41 Сейчас в теме
Мы очищаем регистр версий, храним только версии текущего года. По суди история изменений закрытого периода нам не нужна.
4. fixin 4252 02.10.14 12:59 Сейчас в теме
(3) тоже вариант. но у нас сложности с закрытием перидов, неизвестно, что когда может понадобиться.
5. kapustinag 02.10.14 14:22 Сейчас в теме
(3) AnnB, У нас версии объектов очень редко смотрят, но уж если смотрят, то историю за несколько лет поднимают. То есть 99.99% объема регистра лежит и никогда не будет востребовано, но ради 0.01% приходится это все где-то хранить.

Вариант с отдельной базой - хороший. Есть еще другой вариант - хранить версии на файловом ресурсе. Отчет "История изменений объектов" может быть легко доработан и для этого случая. Структуру вложенных каталогов надо сделать, чтобы проводник Windows нормально с ней работал.
6. fixin 4252 02.10.14 16:11 Сейчас в теме
(5) я сперва тоже подумал хранить в файлах, но потом передумал. Все-таки это 3 млн файлов. Неэффективно. В базе компактнее хранится. В базу версий кидаю сразу упакованным со степенью сжатия 9.
7. anig99 2841 03.10.14 13:02 Сейчас в теме
У меня такая же база на работе несколько лет уже есть. Только я попроще сделал - храню сразу ссылки на объекты, не создавая лишнего в новой базе. Кроме того добавил перенумерацию и сворачивание версий. А для работы с версиями написан отчет сom... Всё никак руки не доходят причесать и выложить...
8. fixin 4252 03.10.14 13:55 Сейчас в теме
(7) вот и я исходил из того, что версии занимают слишком много места. Удалять жалко. Вот и перенес их в отдельную базу.
9. fish249 03.10.14 15:25 Сейчас в теме
А к внешней базе через COM делаешь соединение, или используешь внешние источники данных?
10. fixin 4252 03.10.14 16:11 Сейчас в теме
(9) по старинке через СОМ
Оставьте свое сообщение