|
Нужны идеи по свертке базы. КА, РИБ 12ть баз, ЦБ 254 Гб SQL. | ☑ | ||
---|---|---|---|---|
0
citrus
09.06.14
✎
09:36
|
Всем доброго утра.
Появилась задача от старого хорошего клиента по свертке базы КА. Как видно из заголовка, в РИБ обмене 12ть баз, среди которых половина супермаркеты, половина оптовые базы. В день в базе появляется ~ 2500 документов. Желательно свернуть на начало года, или на край на конец первого квартала. История базы начинается с 2010 года. Видим 2 варианта. 1) Свернуть базу на 31.12.2013 и удалить старые документы. 2) Свернуть на 31.21.2013 и перенести документы ввода остатков и документы за 2014 год в чистую базу обработкой ВыгрузкаЗагрузкаДанныхXML.epf Хотелось бы услышать мнение тех, кто подобные задачи решал. Какой из этих вариантов более жизненный? Может предложите другой вариант? Спасибо! |
|||
1
Tarlich
09.06.14
✎
10:21
|
может поможет http://infostart.ru/public/261742/
|
|||
2
ptiz
09.06.14
✎
10:30
|
(0) Сначала замерь время свертки базы такого объема.
Типовыми средствами будет непозволительно долго. Нетиповыми - за день свернешь. |
|||
3
citrus
09.06.14
✎
10:41
|
(2) Сверка - формирование документов "корректировка записей" регистров проходит за 20 минут. И это нормально.
В каждом документе по 5000 строк и таких документов 170 шт. При этом выгрузка одного такого документа в XML занимает минут 30 и вес у него получается 20 гб. Думаю такой способ переноса вообще не вариант. Что скажете? |
|||
4
ptiz
09.06.14
✎
10:50
|
(3) А ты теперь удалить старые документы попробуй.
|
|||
5
ptiz
09.06.14
✎
10:50
|
Хотя бы движения.
|
|||
6
citrus
09.06.14
✎
11:00
|
(4)(5) это история на долгие года. поэтому этот вариант даже не рассматриваю.
может предложите вариант удаления через SQL? Где то видел скрипт, который может удалить все документы до определенной даты, и записи в регистрах. Может кто владеет языком SQL запросов? |
|||
7
ptiz
09.06.14
✎
11:10
|
(6) Почистить регистры - дело нехитрое.
Главный вопрос после свертке РИБ - сможешь ты потом корректно создать новые переферийки из свернутой базы? |
|||
8
citrus
09.06.14
✎
11:17
|
(7) после такой очистки нужно обязательно делать ТИИ иначе в базе останется куча кривых ссылок.
А есть скрипт очистки регистров и документов? |
|||
9
ptiz
09.06.14
✎
11:23
|
(8) Откуда кривые ссылки возьмутся?
(в аську стучись) |
|||
10
МихаилМ
09.06.14
✎
11:23
|
если все базы - sql c совпадающей внутренней структурой таблиц
напишите tsq скрипт, который создаст документы остатков удалит движения , удалит документы и возможно удалить не используемую номенклатуру. |
|||
11
Hmster
09.06.14
✎
11:30
|
ЦБ и перефирийки можно ведь отдельно свернуть.
В обмене тоже все просто. Можно передать вначале просто документы, потом по каждому документу - свои движения, причем передавать можно только ссылки а не тянуть все объекты. |
|||
12
Hmster
09.06.14
✎
11:31
|
движения удалять можно обработиной прямо в процессе работы если сделать транзакцию - в документе удаляем - в коректировке добавляем - пауза
|
|||
13
Hmster
09.06.14
✎
11:31
|
перефирийки у тебя тоже на СКЛ?
|
|||
14
citrus
09.06.14
✎
11:33
|
(10) языком SQL не владею, поэтому тут и интересуюсь.
Мне бы образец скрипта, а дальше я бы сам его по смыслу допилил. |
|||
15
citrus
09.06.14
✎
11:35
|
(13)конечно же все периферийки в SQL.
я планировал свернуть только ЦБ, а потом постепенно разворачивать новые периферийки и заменять ими старые. |
|||
16
citrus
09.06.14
✎
11:36
|
(11)
"В обмене тоже все просто. Можно передать вначале просто документы, потом по каждому документу - свои движения, причем передавать можно только ссылки а не тянуть все объекты." вы это про что? про то как свернуть все периферейки? я думал их заменить. |
|||
17
Hmster
09.06.14
✎
11:40
|
(15) а сам обмен из центра нормально в филиалы идет? с точки зрения документов и движений?
я к чему - делаешь документы ввода остатков с движениями - движения - неактивные. Передаешь только документы вначале без движений - потом передаешь движения каждого документа по очереди. потом можно в скл удалить все движения и включить активность, причем в каждой базе и эти изменения в 1С лучше не регистрировать |
|||
18
Hmster
09.06.14
✎
11:41
|
(16) с заменой перефириек могут возникнуть проблемы
|
|||
19
citrus
09.06.14
✎
11:47
|
(17) сейчас обмен идет без проблема. качаем 2 раза в день через ftp.
Меня вопрос замены периферийных баз вообще не напрягает, т.к. иногда базы валятся и их восстановление процедура отлаженная. Не охото сейчас на это тратить время. Сейчас задача основная как свернуть ЦБ? С переносом в новую или с удалением в старой. |
|||
20
Hmster
09.06.14
✎
11:59
|
(19) если с созданием перефириек вопросов нет - быстрее будет создать новую, тут ведь вопрос в скорости и количестве данных.
если будешь создавать - у тебя один проход. если будешь передавать изменения - то вначале сохраняются данные - потом читаются. Если у тебя есть возможность быстро создать образ новой перефирийки - то лучше так и делай |
|||
21
kerm
09.06.14
✎
12:01
|
У меня была немного похожая задача. УТ 10.3 в терминале в 8 городах. Примерно 1800 заказов в день. Начало базы с 2008 года. Для свертки я применил новую периферийную базу. При ее создании перенес все кроме документов и их движений. Подключил документы с движениями. В старой базе создал документы свертки на конец прошлого года без проведения. Перенес документы свертки и документы этого года с движениями. Провел документы свертки в новой базе. В старую ответ не выгружал. Стали работать с новой базой. Через пару недель после тестирования сделал ее главной. Пользователей с правами перенес обработкой взятой с интернета.
|
|||
22
citrus
09.06.14
✎
12:19
|
(21) Интересная идея.
Только подскажите как создать новую РИБ базу без переноса документов и движений? При нажатии в планах обмена на кнопку "Создать начальный образ" все происходит в автомате, и база создается и документы в нее заливаются. |
|||
23
citrus
09.06.14
✎
12:20
|
(20) вы все про периферийки да про периферийки :) а как ЦБ свернуть не предлагаете :)
|
|||
24
y22-k
09.06.14
✎
12:44
|
(0) на ИС есть готовая обработка по свертке баз средствами Sql
я сам два раза ей сворачивал базы по 80 ГБ достаточно шустро и почти без косяков |
|||
25
mikeA
09.06.14
✎
13:10
|
(0) сначала замерь размер таблиц. скорее всего, основной объём занимают штук десять, причём некоторые из них можно просто прибить на начало года
|
|||
26
koreav
09.06.14
✎
13:16
|
(25) +1 Есть результаты анализа размеров таблиц и индексов?
Для 2500 док/день 254Гб многовато получается. |
|||
27
kerm
09.06.14
✎
13:48
|
(22) Берешь полный план обмена в конфигураторе. Или копируешь его со своим названием, чтобы не повредить текущие обмены с другими периферийными базами. И в закладке прочее в составе этого обмена убираешь галки на документах и регистрах. Можно иначе используя процедуру
Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента, СозданиеНачальногоОбраза) Если СозданиеНачальногоОбраза Тогда Если НЕ обОтправлятьОбъектВУзел(ЭлементДанных) Тогда ОтправкаЭлемента=ОтправкаЭлементаДанных.Игнорировать; Отказ=истина; КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
28
kerm
09.06.14
✎
13:50
|
(27) Процедура в модуле обмена.
|
|||
29
kerm
09.06.14
✎
13:57
|
функция обОтправлятьОбъектВУзел(ЭлементДанных) для образца, но она не идеальна только как пример.
Функция обОтправлятьОбъектВУзел(Ссылка1) Если Метаданные.РегистрыСведений.Содержит(Метаданные.НайтиПоТипу(ТипЗнч(Ссылка1))) тогда Попытка Если Ссылка1.Отбор.Регистратор.Значение.Дата>=Дата("20120101") тогда Возврат Истина; Иначе Возврат Ложь; КонецЕсли; Исключение Попытка Если Ссылка1.Отбор.Документ.Значение.Дата>=Дата("20120101") тогда Возврат Истина; Иначе Возврат Ложь; КонецЕсли; Исключение Возврат Истина; КонецПопытки КонецПопытки; ИначеЕсли Метаданные.РегистрыНакопления.Содержит(Метаданные.НайтиПоТипу(ТипЗнч(Ссылка1))) тогда Если Ссылка1.Отбор.Регистратор.Значение.Дата>=Дата("20120101") тогда Возврат Истина; Иначе Возврат Ложь; КонецЕсли; ИначеЕсли Метаданные.Справочники.Содержит(Метаданные.НайтиПоТипу(ТипЗнч(Ссылка1))) тогда Если ТипЗнч(Ссылка1)=Тип("СправочникОбъект.ДоговорыКонтрагентов") и Ссылка1.Дата<Дата("20120101") и не Ссылка1.Дата=Дата("00010101") тогда Возврат Ложь; Иначе Возврат Истина; КонецЕсли; ИначеЕсли не Метаданные.Документы.Содержит(Метаданные.НайтиПоТипу(ТипЗнч(Ссылка1))) Тогда Возврат Истина; ИначеЕсли Метаданные.Документы.Содержит(Метаданные.НайтиПоТипу(ТипЗнч(Ссылка1))) и Ссылка1.Дата>=Дата("20120101") Тогда Возврат Истина; Иначе возврат Ложь; КонецЕсли; КонецФункции |
|||
30
kerm
09.06.14
✎
14:02
|
Если будешь так сворачивать могу одну обработку для отметки выгрузки документов с его движениями выслать на почту.
|
|||
31
kerm
09.06.14
✎
14:11
|
(23) Периферийную базу центральной легко сделать. У неё в свою очередь тоже свои периферийные базы могут быть. Плюс тут в том, что тестировать обрезанную базу можно не прерывая работу с центральной. В последний момент догружаешь текущие изменения и делаешь центральной. Или что-нибудь догрузить можно пока связь не оборвал.
|
|||
32
acsent
09.06.14
✎
14:31
|
Примерно алгоритм такой:
1. Создаем документы корректировки с неактивными движениями. 2. отключаем итоги 3. удаляем движения через скуль 4. включаем корректировки и итоги И так на каждой базе Удаление документов конечно более сложная операция |
|||
33
acsent
09.06.14
✎
14:31
|
Плюсы - можно последовательно удалять разные регистры
|
|||
34
acsent
09.06.14
✎
14:32
|
У меня есть такая обработка - могу продать
|
|||
35
citrus
09.06.14
✎
14:49
|
(32) план действий понятен. как удалить скулем движения?
|
|||
36
citrus
09.06.14
✎
14:49
|
(30) буду презнателен. почта [email protected]
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |