|
v7: Свертка базы варварскими методами | ☑ | ||
---|---|---|---|---|
0
Прохожий1С
28.07.23
✎
14:53
|
Здравствуйте! Пожалуйста, помогите кто может добрым советом!
Итак, суть: есть старая, кривая и раздувшаяся самописная база. Разрослась до предела дбфка оборотов. При попытке свернуть тестовую базу стандартной обработкой вылетает ошибка, т.к. записать операции с остатками на период просто некуда. Что в итоге сделали: разделили обработку на два этапа - вначале создали операции с остатками, потом физически удалили обороты и начали удалять проводки (именно этот метод, т.к. удалять или распроводить доки плохой вариант, они нужны проведенными). В процессе раз или два обороты переполнялись и выдавали ошибку. Опять их удаляли и продолжали чистить проводки. Когда удаление закончилось - в последний раз удалили обороты, пересчитали итоги и свернули таблицу. Обороты стали вменяемых размеров. Тестовая база на первый взгляд выглядит правдоподобно, бухгалтеров проверять пока не дергали. И вот собственно вопрос: а так вообще можно? В смысле, полный пересчет оборотов несколько раз подряд. Или база теперь однозначно побитая-нерабочая, и нет смысла проверять? (Если что, рабочую базу не трогали, бэкапов гора, но что-то - кроме перехода на 8-ку :( - делать в ближайшем времени все-таки придется) |
|||
1
Aleksey
28.07.23
✎
15:08
|
ну могу просто физически грохнуть табличку с движениями и итогами, потом тупо провел бы "операции с остатками". Хотя если у тебя операция это бух операция, то может не взлететь
|
|||
2
Djelf
28.07.23
✎
15:48
|
(0) Вариант нормальный, если у вас остатки по проводкам не нужны, а они могут быть нужны!
Нам остюда сверху, не видно что у вас там слева... Вот еще варианты для 1C 7.7: Для увеличения памяти 1С больше 2Gb: 4Gb Patch NTCore https://ntcore.com/?page_id=371 Для загрузки и выгрузки dt больше 2Gb: ConfigSpy от АЛьФ http://www.dorex.pro/?projects&configspy&download Для работы 1C с файлами dbf больше 2Gb: dbeng32 от Wirth https://cloud.mail.ru/public/3mVX/4trK45on8 З.Ы. Если таблица проводок переполнилась по количеству записей, это не поможет. |
|||
3
Прохожий1С
28.07.23
✎
15:57
|
(2) Огромное спасибо за материалы, ознакомлюсь!
У нас проблема вылезла именно в оборотах, поскольку огромное количество счетов и субконто, некоторые из которых даже не используются. Когда в первый раз вылезла ошибка, то удалили неиспользуемый счет (который сами же недавно и ввели не подумав :) ) - и сразу дбфка похудела. Оставить лопнувшую базу архивной на посмотреть, а у рабочей удалить лет восемь - было бы идеально. |
|||
4
Харлампий Дымба
28.07.23
✎
18:53
|
Ну во-первых это не варварский метод, а самый что ни на есть традиционный. Просто много народу резалл торговые базы, да в SQL, там подход может быть совсем иным.
Вот прям щас буду резать бухбазу за 13 лет, так как 1SENTRY стремится к 2 гигам (kernel37.dll) Во-вторых, не очень понятно что такое "обороты переполнялись". С каким файлов проблема: 1SACCSEL, 1SENTRY, 1SBKTTL? А в-третьих порядок такой - если мало опыта, то всё в копии, если много - то само собой тоже в копии: 1) Формируешь остатки на нужную дату. 2) "Операции - Управление бухгалтерскими итогоми - Установить расчет по" и ставишь квартал, предшествующий дате начала учета - то есть лохматый-лохматый год. 3) В конфигураторе "Администрирование - Выгрузить данные", "Администрирование - Загрузить данные". Любуешься на практически нулевые 1SBKTTL и 1SBKTTLC. Теперь удаление операций будет происходить на порядок быстрее, так как для древних периодов не надо будет нарастающим итогом пересчитывать все остатки в 1SBKTTL при удалении проводки 4) Удаляешь документы / или в твоём случае проводки в операциях в транзакции порциями по 100-1000 штук, сам посмотри оптимум для своей базы. До позиции первого твоего документа со сформированными остатками. 5) В конфигураторе "Администрирование - Выгрузить данные", "Администрирование - Загрузить данные". Любуешься на изрядно похудевшие 1SENTRY и 1SACCSEL 6) "Операции - Управление бухгалтерскими итогоми - Установить расчет по" возвращаешь период на текущий и делаешь полный пересчет итогов. А лучше опять через Выгрузить-Загрузить. Вроде всё. |
|||
5
Креатив
30.07.23
✎
21:49
|
(0)Если оставшихся документов не сильно много, то можно поступить следующим образом.
1. Сформировать остатки по всем регистрам и бухгалтерские. 2. Грохнуть файлы регистров. 3. Провести остатки. 4. Провести текущие документы. 5. Сделать ТИИ. |
|||
6
idw
31.07.23
✎
21:39
|
(0) 1. правим обработку свертки, чтобы она только создавала документы ввода остатков.
2. Копируем эту базу. 3. Удаляем в этой базе все документы и регистры. Будет база только со справочниками. ТИИ. 4. Из базы полученной в пункте 1. Переносим документы ввода остаток в базу в 3. |
|||
7
idw
31.07.23
✎
21:40
|
П.С. В пункте 1 запускаем эту обработку.
|
|||
8
Mihenius
31.07.23
✎
23:09
|
(3)
"огромное количество счетов и субконто, некоторые из которых даже не используются." в первую очередь убрать левые субконто во вторую очередь проанализировать, если часть субконто нужна, но не нужны остатки - поставить "только обороты" и третий сложный - искать не закрывающиеся движения по субконто их лечить можно - как минимум ставим оборотными (остатков не будет), как максимум пишем аналог закрытия месяца и закрываем их. По итогу можно еще пожить, проверено много раз. Ну и последний вариант режем/сворачиваем по живому, тут искать старинные обработки на "1с проклабе"/инфостарте - там были обрезки баз на 1с++ Вроде 1 моя даже была, могу поискать ) |
|||
9
Mihenius
31.07.23
✎
23:12
|
||||
10
Mihenius
31.07.23
✎
23:13
|
(9) и аналогичных было штук 10 точно, возможно на форуме https://www.1cpp.ru/forum/YaBB.pl кто подскажет
|
|||
11
Mihenius
31.07.23
✎
23:18
|
(10) https://infostart.ru/public/all/administrirovanie_bd/svertka_bazy/?class_platforms=1966
или ищи образ диска 1Спроклаба и там тоже какие-то варианты были |
|||
12
Смотрящий
31.07.23
✎
23:41
|
(5) Самый внятный и рабочий вариант
|
|||
13
1Снег
01.08.23
✎
09:00
|
Пользовался в свое время для свертки базы обработкой Rocket Launcher 7.7 https://infostart.ru/1c/tools/13846/
|
|||
14
АгентБезопасной Нацио
01.08.23
✎
10:28
|
в сиквельной базе почти аналогично (5) работала автообрезка базы (по ночам, в часы наименьшей нагрузки на базу)- делался пустой документ ввода остатков, выбранные остатки из RG записывались как обороты, привязывались к документу ввода остатков. Регистры чистились до момента обрезки исключая обороты дока ввода. Естественно, "до того" контролировались остатки по всем регистрам. (документ удалялись - единственное, что тогда, емнип, 1scrdoc не осилил, он пухлый болтался.)
|
|||
15
andrewalexk
02.08.23
✎
11:34
|
(2) :)
и как успехи у Пистелли с Patch NTCore? есть проблемы с 1с77 релиз 27? |
|||
16
Arbuz
04.08.23
✎
17:55
|
(15) Проблем нет. Работает годами.
|
|||
17
Djelf
05.08.23
✎
05:54
|
(15) Некоторая проблема есть. Пользователи иногда выкручивают отчеты за весь период, со всеми возможными группировками и вместо вылета на таких дурных отчетах радуются бесконечным и бессмысленным объемом информации.
Если таких будет много, никакой памяти у сервера не хватит ;) |
|||
18
Arbuz
07.08.23
✎
15:38
|
(17) Гы! Однажды, в стародавние времена, хозяева одного небольшого, но гордого бизнеса твёрдо решили видеть "всю картину сразу", в одном отчёте, во всех деталях и разрезах. Нет проблем: постановка тз - аванс - проработка - оплата - готово! Это была чудовищная таблица склеенная из 16 листов формата А3. Считалась и формировалась она частями, причём гораздо быстрее чем печаталась и клеилась. Солидно висела на стене и занимала пару квадратных метров её поверхности. Назвали это угробище гордо - Планово-Производственная Технологическая Калькуляция, с языка главтехнолога - пипитэка. Проходящие мимо сотрудники с ужасом в глазах спрашивали шёпотом: рога-бога-носорога, что это?! Пипитэка жишь, еть твою ёшь! - отвечали просвещённые. Заказчики весь следующий день увлечённо елозили по таблице, водили метровыми линейками, красили разноцветными маркерами, восхищённо цокали языками. И более никогда к этой теме не возвращались.
|
|||
19
АгентБезопасной Нацио
07.08.23
✎
15:59
|
(18) а можно ведь было бы и печатать сразу в цвете!
зы. ежели не секрет, что за бузинесс был такой? |
|||
20
Arbuz
08.08.23
✎
17:03
|
(19) Пищевое производство замороженных полуфабрикатов и некоторая рефрижераторная логистика
|
|||
21
Прохожий1С
16.08.23
✎
14:14
|
Итак, огромнейшее спасибо всем советовавшим и воодушевлявшим! Базу удачно покромсали по максимуму, проверили и поставили юзерам. Злосчастная дбфка похудела больше чем в два раза, живем!
|
|||
22
Valdis2007
16.08.23
✎
14:19
|
(21) теперь настаивай о преходе на 8.3
|
|||
23
zenon46
16.08.23
✎
16:31
|
(22) если их функционал устраивает, для чего ? переход ради перехода ?
|
|||
24
Valdis2007
17.08.23
✎
10:26
|
(23) нет хотябы , что-бы через пол года снова к тебе за сверткой не обращаться
|
|||
25
MWWRuza
17.08.23
✎
10:40
|
(24) За сверткой то они через пол года может и не обратятся, но это:
(0)самописная база говорит о том, что обратятся сразу... Там переход будет совсем не простой, и может растянуться более чем на пол года, и вылиться в очень не малую сумму... В зависимости от "экзотичности" самописки... Вплоть до того, что опять самописку писать, на новой платформе. Готовы ли клиенты к этому? Проще уйти от дбф на SQL, если там действительно такие объемы данных. |
|||
26
Прохожий1С
18.08.23
✎
16:35
|
(25) >вылиться в очень не малую сумму...
Хех, не будет немалой суммы - будет покупка самой простенькой стандартной конфы и переписывание её в поте лица фиксом на умеренной зп (т.е. мной) :\ Да, не особо в теме 8ки - буду осваивать на ходу, куда ж денусь. |
|||
27
Valdis2007
19.08.23
✎
08:11
|
(26) получается, что 7ка такой задел дала, что спустя 20 лет после выхода 8, можно спокойно зарабатывать на хлебушек с маслом, только на 7?
|
|||
28
Garykom
19.08.23
✎
08:36
|
(27) До сих пор есть потребность в аналоге ремейка 1С 77
Т.е. чтобы код старых конф исполнялся но на новом движке, с поддержкой последних Windows, Linux и даже мобильных ОС |
|||
29
andrewalexk
19.08.23
✎
09:45
|
(28) :) ну ты еще намекни нуралиеву на открытие кода 1с
|
|||
30
DimVad
21.08.23
✎
07:51
|
(27) // получается, что 7ка такой задел дала, что спустя 20 лет после выхода 8, можно спокойно зарабатывать на хлебушек с маслом, только на 7?
Ну вот я сейчас специально посмотрел вакансии на 7.7 по своему городу - их нет. Т.е. человек не может сказать "поднимите мне ЗП а то через дорогу вдвое больше предлагают" т.к. через дорогу ничего не предлагают. И рабочее место - это просто легаси, которое есть пока оно есть. Если что-то изменится (например бизнес кто-нибудь купит и скажет что будем ставить своё) - так и не будет рабочего места на 7.7 ... p.s. Я как УПП-шник в похожем положении. Вакансии на УПП реально "тают" год от года. Вот и думаю о запасных аэродромах... |
|||
31
АгентБезопасной Нацио
21.08.23
✎
13:36
|
(29) ну ему "намекали" прямым текстом. На что но ответил в духе "я не враг самому себе".
|
|||
32
АгентБезопасной Нацио
21.08.23
✎
13:38
|
(26) "осваивать на ходу" плохо тем, что будешь изобретать свои велосипеды... Я вот когда начинал осваивать, перенос делать - даже написал свою ЗаполнитьЗначенияСвойств() :-)
|
|||
33
Обработка
21.08.23
✎
14:55
|
Есть инструмент прям в скуле порезать базу, я им не однократно пользовался. Но уже и позабыл. Было очень быстро и удобно...
|
|||
34
tesei
21.08.23
✎
15:01
|
(0) пересчет итогов быстрее делать так:
1. удаляем файлы rg* 2. Открываем базу монопольно. 3. Устанавливаем ТА на начало времён. 4. Устанавливаем ТА на сегодня, документы не перепроводим! 5. ... 6. Profit! |
|||
35
Злопчинский
21.08.23
✎
15:22
|
(34) 5. ...ждем.... если база кривая - ждем очень долго...
|
|||
36
victuan1
22.08.23
✎
06:36
|
(32) Я такую функцию тоже написал, но для 1С 7.7 ;)
Процедура ЗаполнитьЗначенияСвойств(Конт, ТекОбъект, СписокРеквизитов="", ИсключаяРеквизиты="", ТЧДокПриемник=1, ТЧДокИсточник=1) Экспорт стр1 = ","+нрег(стрЗаменить(СписокРеквизитов," ",""))+","; стр2 = ","+нрег(стрЗаменить(ИсключаяРеквизиты," ",""))+","; Если ТипЗначения(ТекОбъект) = 11 Тогда //Справочник Для й = 1 По Метаданные.Справочник(ТекОбъект.Вид()).Реквизит() Цикл ИД = Метаданные.Справочник(ТекОбъект.Вид()).Реквизит(й).Идентификатор; Если ПустоеЗначение(СписокРеквизитов)=1 Тогда ИначеЕсли Найти(стр1, ","+нрег(ИД)+",") = 0 Тогда продолжить КонецЕсли; Если ПустоеЗначение(ИсключаяРеквизиты)=1 Тогда ИначеЕсли Найти(стр2, ","+нрег(ИД)+",") > 0 Тогда продолжить КонецЕсли; Если ТипЗначения(Конт) = 11 Тогда //Справочник Если Метаданные.Справочник(Конт.Вид()).Реквизит(ИД).Выбран()=1 Тогда Конт.УстановитьАтрибут(ИД, ТекОбъект.ПолучитьАтрибут(ИД)) КонецЕсли; ИначеЕсли (ТипЗначенияСтр(Конт) = "ТаблицаЗначений") или (ТипЗначенияСтр(Конт) = "ИндексированнаяТаблица") Тогда Если ВернутьНомерКолонкиТЗ(Конт,ИД) = 0 Тогда Иначе Конт.УстановитьЗначение(Конт.НомерСтроки, ИД, ТекОбъект.ПолучитьАтрибут(ИД)); КонецЕсли; ИначеЕсли ТЧДокПриемник = 0 Тогда Если Метаданные.Документ(Конт.Вид()).РеквизитШапки(ИД).Выбран()=1 Тогда Конт.УстановитьАтрибут(ИД, ТекОбъект.ПолучитьАтрибут(ИД)) КонецЕсли; Иначе Если Метаданные.Документ(Конт.Вид()).РеквизитТабличнойЧасти(ИД).Выбран()=1 Тогда Конт.УстановитьАтрибут(ИД, ТекОбъект.ПолучитьАтрибут(ИД)) КонецЕсли; КонецЕсли; КонецЦикла ИначеЕсли ТипЗначения(ТекОбъект) = 12 Тогда //Документ Если ТЧДокИсточник=0 Тогда КолРекв = Метаданные.Документ(ТекОбъект.Вид()).РеквизитШапки() Иначе КолРекв = Метаданные.Документ(ТекОбъект.Вид()).РеквизитТабличнойЧасти() КонецЕсли; Для й = 1 По КолРекв Цикл Если ТЧДокИсточник=0 Тогда ИД = Метаданные.Документ(ТекОбъект.Вид()).РеквизитШапки(й).Идентификатор; Иначе ИД = Метаданные.Документ(ТекОбъект.Вид()).РеквизитТабличнойЧасти(й).Идентификатор; КонецЕсли; Если ПустоеЗначение(СписокРеквизитов)=1 Тогда ИначеЕсли Найти(стр1, ","+нрег(ИД)+",") = 0 Тогда продолжить КонецЕсли; Если ПустоеЗначение(ИсключаяРеквизиты)=1 Тогда ИначеЕсли Найти(стр2, ","+нрег(ИД)+",") > 0 Тогда продолжить КонецЕсли; Если ТипЗначения(Конт) = 11 Тогда //Справочник Если Метаданные.Справочник(Конт.Вид()).Реквизит(ИД).Выбран()=1 Тогда Конт.УстановитьАтрибут(ИД, ТекОбъект.ПолучитьАтрибут(ИД)) КонецЕсли; ИначеЕсли ТЧДокПриемник = 0 Тогда Если Метаданные.Документ(Конт.Вид()).РеквизитШапки(ИД).Выбран()=1 Тогда Конт.УстановитьАтрибут(ИД, ТекОбъект.ПолучитьАтрибут(ИД)) КонецЕсли; Иначе Если Метаданные.Документ(Конт.Вид()).РеквизитТабличнойЧасти(ИД).Выбран()=1 Тогда Конт.УстановитьАтрибут(ИД, ТекОбъект.ПолучитьАтрибут(ИД)) КонецЕсли; КонецЕсли; КонецЦикла ИначеЕсли (ТипЗначенияСтр(ТекОбъект) = "ТаблицаЗначений") или (ТипЗначенияСтр(ТекОбъект) = "ИндексированнаяТаблица") Тогда //текущую строку таблицы ТекОбъект копируем в текущую строку др. таблицы Конт Для й = 1 По ТекОбъект.КоличествоКолонок() Цикл Если ТипЗначенияСтр(ТекОбъект) = "ИндексированнаяТаблица" Тогда ИД = ТекОбъект.ИмяКолонки(й); Иначе ИД = ТекОбъект.ПолучитьПараметрыКолонки(й); КонецЕсли; Если ПустоеЗначение(СписокРеквизитов)=1 Тогда ИначеЕсли Найти(стр1, ","+нрег(ИД)+",") = 0 Тогда продолжить КонецЕсли; Если ПустоеЗначение(ИсключаяРеквизиты)=1 Тогда ИначеЕсли Найти(стр2, ","+нрег(ИД)+",") > 0 Тогда продолжить КонецЕсли; Конт.УстановитьЗначение(Конт.НомерСтроки, ИД, ТекОбъект.ПолучитьЗначение(ТекОбъект.НомерСтроки, й)) КонецЦикла КонецЕсли; КонецПроцедуры |
|||
37
АгентБезопасной Нацио
22.08.23
✎
08:31
|
(36) Для клюшек я тоже делал. Но там это был удобный инструмент, а в снеговике - уже велосипед с квадратными колесами.
|
|||
38
АгентБезопасной Нацио
22.08.23
✎
08:33
|
(34) есть обработки, позволяющие выборочно пересчитывать итоги - с выбором периода, набора регистров и даже конкретных значений измерений.
а за предложение сноса регистров (или 1ссистемс при "деУРБДизации") обычно бьют канделябром по сусалам... |
|||
39
Aleksey
23.08.23
✎
11:03
|
(38) что не так? Тем более пересчет не позволяет "упаковывать регистры", т.е. удалять "нулевые" записи.
А так грохнул файлики и после пересчета, в качестве бонуса, "худые" файлики с регистрами |
|||
40
Злопчинский
23.08.23
✎
12:38
|
||||
41
АгентБезопасной Нацио
24.08.23
✎
08:28
|
(39) Как страдивари делал для лохов скрипки, а для нормальных пацанов барабаны, так и тут - у нормальных пацанов есть средства для удаления нулевых итогов, в т.ч. без монопольного режима, и т.д.
Если база более-менее приличных размеров, и работает 24/7 - то такие инструменты просто обязаны быть в наличии... |
|||
42
andrewalexk
24.08.23
✎
10:01
|
(41) :) ну про продвинутоеудаление.ert речи нет - там трудно накосячить но удаление нулевых итогов ... в чем цимес?
|
|||
43
MWWRuza
24.08.23
✎
12:33
|
(42) в чем цимес?
В размерах файлов ДБФ регистров. Больше ни в чем, как я это понимаю. Но, когда база огромная, это может быть немаловажно. |
|||
44
andrewalexk
24.08.23
✎
12:56
|
(43) :) sql не, не предлагать?
|
|||
45
MWWRuza
24.08.23
✎
15:48
|
Почему? Нормальный вариант, у кого есть такая возможность. Но тема изначально, с сообщения (0) про дбф, поэтому...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |