Имя: Пароль:
1C
1C 7.7
v7: Выгрузить и потом удалить справочник
0 Double_Medved
 
07.05.13
10:09
Подскажите пожалуйста, конфигурация торговля и склад, там есть справочник "лог" в который записываются любые манипуляции пользователей, и он сильно разросся, вобщем задача стоит сначала выгрузить его (отдельно, для резерва) и потом весь удалить. Я никогда этого не делал, говорят есть специальные обработки... Не подскажите как это все делается?
1 Mikeware
 
07.05.13
10:10
(0) позови кого-нибудь из взрослых
2 welwel
 
07.05.13
10:12
(0) "задача стоит сначала выгрузить его (отдельно, для резерва)"
копии базы недостаточно?
3 Double_Medved
 
07.05.13
10:14
Ой ну ладно троллить, я конечно сам сделаю, просто хотел спросить совета у опытных людей
4 ЧеловекДуши
 
07.05.13
10:15
(0) Зачем тебе его удалять?
К примеру у нас есть справочник "НомерУпаковки", уже перевалило за несколько миллионов записей.
Да с ним невозможно работать через диалог, медленно все.
Но он отлично работает с запросами и альтернативными диалогами :)
5 ЧеловекДуши
 
07.05.13
10:15
(3) Ты уже пытаешься уничтожить то, что по сути не мешает...
Не вникнув смысл сего девайса :)
6 Double_Medved
 
07.05.13
10:16
(4) фактически в справочник лог нужен только программисту, пользователи не будут там копаться... И уже был опыт того что после удаления этого справочника база работала на порядок быстрее.
7 ЧеловекДуши
 
07.05.13
10:18
(6) Фактически он нужен тебе, как спасательный Круг, автор сего девайса сделал его исходя из того, что к нему вечно приходили и пытались доказать, что они пушистые, а виновен Программист.
Уничтожив этот справочник, ты по сути делаешь себе приговор.
8 Double_Medved
 
07.05.13
10:18
Ну логично я так понимаю что чем больше данных в базе тем медленнее она работает, и может если отсечь данные не нужные пользователям, то производительность повысится
9 ЧеловекДуши
 
07.05.13
10:19
(8) Медленно оно работает, если ты его смотришь из диалога.
Как правило, такие девайсы надо смотреть через отчет или еще как, но не через типовой диалог от 1С :)
10 ЧеловекДуши
 
07.05.13
10:19
+(8)База то у вас SQL ?
11 Double_Medved
 
07.05.13
10:20
(7) так я же сделаю резервную копию, пускай и просто всей базы, с резервными копиями меня уже жареный петух клевал - теперь всегда сначала все резервирую, даже при небольших манипуляциях
12 Double_Medved
 
07.05.13
10:20
(10), не база DBF-ная
13 ЧеловекДуши
 
07.05.13
10:22
(11) Ты подумай, сколько времени у тебя уйдет, для восстановления всей картины?

(12)Печально, такое только через прямые запросы неплохо уживается, хотя... :)

Если быть еще конкретней, наверняка там есть привязка к объектам, ну типо "Быстрого отбора по объекту".
Было бы лучше вообще такое чудо привязывать к документам, вернее формировать отчетик из документов.

Хотя я не вижу как у вас реализовано, но могу только догадываться.
14 Karavanych
 
07.05.13
10:23
(12) перечитай этот свой пост раз на 10 и приди к верному решению :))
подсказка, ответ из 3х букв... первая буква S##
15 Double_Medved
 
07.05.13
10:23
Вообще стоит задача какими-нибудь способами повысить производительность базы, сейчас она весит 4 гига, и самое обидное, что "тестирование и исправление" зависает и все, и пока единственная пришедшая идея - это прибить справочник лог. Тем более в него постоянно пишутся данные, и я думал, может ли  скорость записи зависеть от размера справочника?
16 ЧеловекДуши
 
07.05.13
10:24
(15) Уничтожение справочника не приведет к повышению производительности.

Погугли по поводу ВК "1sqlite"
17 Double_Medved
 
07.05.13
10:25
(14) если бы клиент хотел раскошелится.. Но вообщем предлагали уже SQL, вообщем не хотят...
18 Karavanych
 
07.05.13
10:25
(15) могу дать вредный совет, открой файлик DD, посмотри какие таблицы dbf отвечают за этот справочник, скопируй их в резерв, удали из текущей базы эти таблицы :)))
19 ЧеловекДуши
 
07.05.13
10:25
(17) 1sqlite - Прямые запросы для DBF
20 Double_Medved
 
07.05.13
10:25
(16) а что вообще можно реально сделать для повышения производительности? ну хоть что-то?
21 ЧеловекДуши
 
07.05.13
10:26
+(20) Или если лень и побоку, то вот выход в (18)
22 Double_Medved
 
07.05.13
10:26
(19) а, ну это тогда ведь полбазы переписывать?
23 ЧеловекДуши
 
07.05.13
10:26
+(20) Не забудь потом зайти в БД монопольно, что бы таблички сформировать опять.
24 arsik
 
гуру
07.05.13
10:27
(15) Ну для начала можно сделать отдельную базу для логов. И скидывать периодически логи туда, удаляя старые записи.
вторым пунктом, вместо тестирования и исправления сделать выгрузку базы и загрузку.
25 ЧеловекДуши
 
07.05.13
10:27
(22) А ты что подразумевал под оптимизацией?
Так и есть, не пол БД, а самые узкие места.
Как правило, это 1-3 мего отчета.
26 Karavanych
 
07.05.13
10:27
(20) да ничего, база для 77 уже реально большая, такие надо на Скуль вешать, ну а лог...ну выгрузи попробуй... не сложно же... поищи на инфостарте какие-нить универсальные обработки по переносу справочников... да и все... ей выгрузи, очисти справочник, потом если че загрузишь.
27 ЧеловекДуши
 
07.05.13
10:28
(24) И как это ему поможет? Логи нужны только ему самому в час Х... А пользователи даже не в курсе, что да как там пишется :)
28 arsik
 
гуру
07.05.13
10:29
(18) Возможно у него в справочнике логов хранятся строки неопределенной длины, а они хранятся в отдельном файле, и это не поможет.
29 ЧеловекДуши
 
07.05.13
10:30
(28) Тоже верно, но для DBF БД это не критично :)
30 arsik
 
гуру
07.05.13
10:30
(27) что бы не хранить их в основной базе.
31 ЧеловекДуши
 
07.05.13
10:30
(30) И как он будет их быстро писать, когда у него должна быть связь с другой БД, по ОЛЕ?
32 ЧеловекДуши
 
07.05.13
10:31
+(31) Я про Проведение документов
33 arsik
 
гуру
07.05.13
10:32
(31) не обязательно. Можно раз в неделю скидывать логи в другую базу и удалять скинутые
34 ЧеловекДуши
 
07.05.13
10:33
(33) А читать их потом как? :)
35 Mikeware
 
07.05.13
10:33
(31) Ну, в мускуль писать, например.
и читать оттудова при необходимости.
Ну, или пусть робот ночью перекидывает...
вариантов масса....
36 Cthulhu
 
07.05.13
10:34
ну, чтобы не совсем, но в лоб... и ЕСЛИ в этом справочнике нет периодики. Я бы сделал так.
1.1) копию конфигурации;
1.2) удалить из неё (в конфигураторе) все объекты кроме этого справочника;
1.3) удалить (если оно там есть) из кода модулей этого справочника все упоминания об удаленных в п.1.2 объектах.
1.4) сделать ТиИ-Упаковку базы.
Итого останется только одна таблица данных справочника SCxxx.DBF(+ индекс .CDX). Причем имя этих файлов будут совпадать с сответствующими именами файлов этого справочника в орининальной базе.
Далее. В копии.
2.1) Переименовать эти файлы, добавив осмысленные постфиксы о временном интервале, за который составлен лог (SCxxx-ГГММДД-ГГММДД).
2.2) Запустить конфигуратор. Сохранить конфигурацию - создадутся пустые файлы SCxxx.DBF(+CDX) этого справочника. скопировать эти "пустышки" про запас на будущее (см.ниже).
Теперь можно.
3.1) Смело периодически при надобности переименовывать в ИСХодной(РАБочей) базе распухшие файлы этого справочника указанным в п.2.1 способом и перебрасывать их в каталог изуродованной базы-копии, а из полученные в этой изуродованной базе-копии "пустышки" (см.п.2.2) копировать в ИСХодную(РАБочую) базу данных.
3.2) В каталоге изуродованной базы-копии - подсовывать нужные для анализа файлы SCxxx-ГГММДД-ГГММДД.DBF(+CDX) с исходными именами SCxxx-ГГММДД-ГГММДД.DBF(+CDX) и штатно смотреть и крутить-вертеть логи.
37 arsik
 
гуру
07.05.13
10:35
(34) Обработку написать, которая будет по фильтру подгружать из другой базы в таблицу значений.
На самом деле тривиальная задача.
38 arsik
 
гуру
07.05.13
10:40
База для логов должна содержать 1 справочник, в котором по сути 4 реквизита.
1) Дата
2) ТипОбъекта
3) Юзер
4) Строка - в нее будет писаться сам объект созданого справочника (значение в строку)

Первые 3 - это основные фильтры по которым быстро можно отобрать
39 Cthulhu
 
07.05.13
10:41
(36) нередко и успешно использован на практике для отрезания именно логовых справочников и справочников перечислительных/шаблонных/динамических, которые слабо связаны с другими данными базы данных и не имеют периодики (хотя и с периодикой - норм, нужно только ТиИ с удалением безссылочного добавить) - даже с добавлением служебных справочников и доп.функционала по анализу и сопоставлению по ОЛЕ данных с данными базы-оригинала, и с появлением нового прижившегося термина "архив справочников". в спец.каталог этой же базы концептуальненько ложились сделанные руцями копии обрезанных же млг-файлов (их вообще можно открывать прямо из монитора раб.базы).
40 Mikeware
 
07.05.13
10:42
(39) это похоже на чистку зубов засовыванием зубной щетки с удлинненной ручкой через задницу.
41 arsik
 
гуру
07.05.13
10:49
А можно вообще стандартным логом платформы воспользоваться и писать туда руками. Только периодически его объединять с архивным и чистить.
42 ЧеловекДуши
 
07.05.13
10:52
(36) Проще вообще, сделать копию БД в другой Каталог.
Удалить почти все DBF файлы, кромя:
- Справочника лога
- Справочника Пользователей
- еще какого справочника, относящегося к логу, но не содержащего много информации (мало ли мысль автора мне не видна)

И вуаля, у тебя твой 100% клон с чистым логом.

Потом удаляем вообще файл лога DBF.
И в рабочей базе нет больше лога, как нет и быстрой возможности оправдаться от надоедливых пользователей :)
43 ЧеловекДуши
 
07.05.13
10:53
(41) А вот это как раз самый паршивый вариант:
- Читается такое еще дольше
- Отбор делается не столь красиво, как кажется.
44 Mikeware
 
07.05.13
10:55
(43) ПоставщикДанныхЖурналРегистрации ?
45 ЧеловекДуши
 
07.05.13
10:58
(44) Это ты про 1С++?
Не все же знают про возможности 1С++ :)
46 arsik
 
гуру
07.05.13
11:01
(43) Как будто вы читаете это постоянно. Нужно такое изредка, а для этого не критична скорость чтения. Ну будет не 2 секунды отчет делаться а 2 минуты и чего, раз в неделю можно и 2 минуты подождать.
47 Mikeware
 
07.05.13
11:01
(45) есть стопиццот способов.
судя по вопросу в (0) - самый лучший способ для ТС - заплатить денег программисту.
48 Cthulhu
 
07.05.13
11:07
(42): а, да, точно, ещё справочник пользователей наверняка.
но - нет, не проще. перековырять - лучше, в том числе доп.функционал упомянутый прикрутить (аналих с использованием по ОЛЕ данных исходной ИБ). единственно что - удаление объектов (п.1.2) лучше делать на дейс-но пустой базе (только с мд-шником) иначе умается реорганизацию делать по сто раз на дню - а результат-МД уже "загрузить" в архив-ИБ.
А нет - и не надо. надо - так появится: или из архива простым подсовыванием файла получить и возможность появится; или в архив-базе все "быстрое" доработать на использование (при надобе!) объектов исх.ИБ.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой