Имя: Пароль:
1C
1С v8
Нужны идеи по свертке базы. КА, РИБ 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]
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.