|
v7: Бухгалтерия 7.7 переполнилась дбф 1SENTRY.DBF | ☑ | ||
---|---|---|---|---|
0
vin1c
06.04.21
✎
09:33
|
Раньше такое бывало, сворачивал базу и все окей.
Этот раз сложнее, открываю журнал многих документов нет там, базу переиндексировал перед этим, смотрю проводки: проводки есть но они не прицеплены к документам. Смотрю таблицы дбф вьювером: 1SENTRY.DBF,1SCRDOC.DBF,1SJOURN.DBF все на месте (сравнивал с рабочей базой). Новый документ не дает создать. Что могло повредиться? Пробовал выгружать в sql базу, выгрузились только те проводки которые соединены с документами. |
|||
1
Garykom
гуру
06.04.21
✎
09:38
|
(0) индексы перескочили?
|
|||
2
Garykom
гуру
06.04.21
✎
09:39
|
(1)+ какой номер идет после 9999 если размер поля 4 ? 0000, затем 0001!
|
|||
3
Ёпрст
06.04.21
✎
10:56
|
(0) размер таблички 1SENTRY.DBF какой хоть, для начала ?
|
|||
4
vin1c
06.04.21
✎
11:45
|
Размер 1160 кв.
Где посмотреть номер 9999? |
|||
5
vin1c
06.04.21
✎
11:46
|
в CDX?
|
|||
6
VladZ
06.04.21
✎
12:12
|
(0) Переходите на восьмерку.
|
|||
7
ShAV
06.04.21
✎
12:19
|
(6) а если клиент напрочь отказывается от v8?
|
|||
8
Ёпрст
06.04.21
✎
12:28
|
(4) это еще далеко до предела. Ставьте заплатку от hogik
|
|||
9
Ёпрст
06.04.21
✎
12:29
|
И если нет доков, то тут проблема не в проводках, а в 1сджоурнал
|
|||
10
Ёпрст
06.04.21
✎
12:30
|
Для начала, удалить все cdx и зайти монопольно. Проверить наличие доков
|
|||
11
vin1c
06.04.21
✎
13:35
|
Разве переиндексация не это делает?
|
|||
12
vin1c
06.04.21
✎
13:40
|
(2) Я заметил одну не хорошую фишку в 1SENTRY.DBF 21год не в конце дбф в просмотрищике показывает а во второй части таблицы
|
|||
13
vin1c
06.04.21
✎
14:07
|
(10) Помогло!!! Я искал сложности. А не ужели переиндексация по новой не создает индексы.
|
|||
14
vin1c
06.04.21
✎
14:07
|
Могу даже денег кинуть за помощь на карту
|
|||
15
vin1c
06.04.21
✎
14:15
|
(8) что за заплатка? размер дбф больше 2хгб может быть?
|
|||
16
Ёпрст
06.04.21
✎
14:21
|
||||
17
Ёпрст
06.04.21
✎
14:21
|
Больше 2-х не может, после 1 гб идёт ошибка по чтению в не монопольном режиме.
|
|||
18
mikecool
06.04.21
✎
14:26
|
(13) в свою эпоху 77 в любой непонятной ситуации всегда делал (10) 99% непонятных проблем уходила )
|
|||
19
VladZ
06.04.21
✎
18:51
|
(7) Значит клиенту нужно сделать предложение, от которого невозможно отказаться.
|
|||
20
tgu82
06.04.21
✎
20:02
|
(19) И что это может быть за предложение? )
|
|||
21
Злопчинский
06.04.21
✎
22:48
|
а еще естькакие-то приблуды, которые файло позволяют до 4 Гб держать (вроде вирт?)
|
|||
22
Ёпрст
06.04.21
✎
23:10
|
(21) там свой формат базы будет
|
|||
23
victuan1
07.04.21
✎
05:05
|
(22) Да, вот у меня есть одна нестандартная база - по размеру нескольких dbf подходит к 2 Гигам (RA***.dbf и RG****.dbf). Перевести ее на "вирт" или писать свою процедуру свертки базы?
Это не ТИС и не Бух, а 1С Предприниматель 7.7 переписанная, она на регистрах. Но что-то штатную обработку свертки для нее я не нашел. Да и сворачивать не особо ее хочется, т.к. расчет она не быстро и возможно скоро станет не нужна (мегабайт через 500-1000) и ее выкинут на помойку. Также у меня по ней ежеквартально используется обработка, которая использует данные за весь период существования базы, а после свертки придется еще и эту обработку переделывать - геморойно очень. |
|||
24
victuan1
07.04.21
✎
05:07
|
(23) Эта база по сути "однопользовательская", я ее использую монопольно, чтобы обойти ошибку 1 гига по чтению, поэтому Kernel3x не использую.
|
|||
25
Ёпрст
07.04.21
✎
10:53
|
(23) просто, для начала, кастрируй числовые ресурсы в регистре. 15.2 переведи в 8.2, например, или еще меньше, тупо найдя макс число в нем+ порядок на запас
|
|||
26
Ёпрст
07.04.21
✎
10:55
|
Все это делать ручками, тип поля любым дбф редактором, мд-ник на пустышке, или перенести таблички регистра куда то, на пустых табличках реструктуризация и готовые подсунуть потом
|
|||
27
tgu82
07.04.21
✎
15:55
|
(26) Хотел убрать измерение на фиг ненужное из регистра партий но в резульатте уменьшил его разрядность до 4.2 и на этом успокоился пока что. теперь буду по использующимся ресурсам уменьшать напрямую через редактор дбф
|
|||
28
victuan1
08.04.21
✎
17:05
|
(26) А почему штатно через конфигуратор нельзя изменить размеры ресурсов и пусть лопатит?
|
|||
29
Ёпрст
08.04.21
✎
17:24
|
(28) если есть много, даже не так, если есть оооооочень много свободного времени, делай штатно. Только учти, что на больших (с точки зрения дбф) файлов, штатной реструктуризации ты можешь и не дождаться.
|
|||
30
Djelf
08.04.21
✎
17:24
|
(28) У себя можно. У заказчика долго. Хотя... если заказчик платит почасовую оплату то нужно так делать и у заказчика ;)
|
|||
31
victuan1
08.04.21
✎
17:28
|
(30) Это моя вспомогательная база для моих нужд расчета налогов. Ей пользуюсь раз в квартал, два месяца подряд четыре раза в год эта база стоит в простое %)
|
|||
32
Ёпрст
08.04.21
✎
17:31
|
(31) это не важно, ты просто можешь не дождаться реструктуризации, совсем
|
|||
33
Djelf
08.04.21
✎
17:39
|
Запустить вечерком и проверить утром. А если за часов 10 не смогло, то только как Ёпрст советует.
|
|||
34
hogik
09.04.21
✎
00:25
|
Рекомендую посмотреть: https://infostart.ru/1c/articles/77617/
«Ошибка "CodeBase Error #: -310" в DBFной версии 1С:Предприятие 7.7» Ошибка возникает при непосредственном удалении записи (в терминах 1С) в таблице с количеством записей более 16777215 штук. |
|||
35
victuan1
09.04.21
✎
06:58
|
(34) Спасибо, вроде такой ошибки не возникало у меня, но я проверю таблицы на кол-во записей.
|
|||
36
victuan1
09.04.21
✎
07:49
|
(34) Проверил - в самых больших таблицах такое кол-во записей:
1) 9 782 325 2) 7 829 369 3) 5 452 264 4) 2 679 319 |
|||
37
victuan1
09.04.21
✎
07:50
|
(25) А какой утилитой найти макс. число. С ДБФ-вьюерами нет опыта. В утилите "Advantage Data Architect" не нашел как?
|
|||
38
Djelf
09.04.21
✎
08:07
|
(37) Прямым запросом
|
|||
39
victuan1
09.04.21
✎
08:10
|
Нашел чем.
В принципе думаю, можно 15.2 смело уменьшать до 11.2 |
|||
40
victuan1
09.04.21
✎
08:11
|
это 99 999 999.99
|
|||
41
Андрей_Андреич
naïve
09.04.21
✎
08:13
|
(40) Не надеешься добить до ста миллионов?
|
|||
42
victuan1
09.04.21
✎
08:53
|
(41) Это ведь сумма одной сделки. Нет, не надеюсь.
|
|||
43
Ёпрст
09.04.21
✎
09:03
|
(39) минимум, на порядок (лучше на 2) делать больше.
Еслии пользуешься чёрим запросом, то при вычислении функции можешь нарваться на переполнения разряда. |
|||
44
Ёпрст
09.04.21
✎
09:03
|
Ибо она результат выполнения приводит к точности ииразрчду первого операнда в выражении.
|
|||
45
victuan1
09.04.21
✎
09:07
|
(43) Это на порядок больше.
|
|||
46
Ёпрст
09.04.21
✎
09:11
|
(45) запас, если много больших чисел складывать будешь
|
|||
47
Ёпрст
09.04.21
✎
09:14
|
Хотя, можешь и по максимуму обрезать. А если втотчете или еще где, увидишь девятки, ну, отчетиперепишешь на прямой и там каст
|
|||
48
victuan1
09.04.21
✎
09:15
|
(47) Пока статистику собираю... по макс. числам в этих дбф, может для разных колонок сделаю разные ограничения. Там еже для Кол-во есть типа 15.3
|
|||
49
Ёпрст
09.04.21
✎
09:17
|
(48) количество да, если не используется дробное, то сделать целым.
|
|||
50
victuan1
09.04.21
✎
09:18
|
(49) Используется дробное (кг)
|
|||
51
victuan1
09.04.21
✎
09:18
|
А вот как узнать, до какой части дроби есть значения в дбф? до десятой, сотой или тысячной?
|
|||
52
Djelf
09.04.21
✎
09:19
|
(43) Это у фокса так? У 1sqlite не режется, даже если явно типизировать как Число.2.0
|
|||
53
Ёпрст
09.04.21
✎
09:19
|
Если примерно типовая, то регистры можно много чего порезать, помимо числовых ресурсов..и не используемыеиреквизиты/измерения..и измерения, которые можно получить из других(договор-клиентос) и.т.п
|
|||
54
victuan1
09.04.21
✎
09:21
|
(26) А как делать?
1) 1cv7.md и 1cv7.dd переношу в другую пустую папку, и в ней конфигуратором обрезаю длину реквизитов. 2) синхронно обрезаю дбф-ки редактором в рабочей базе 3) Тупо копирую 1cv7.md и 1cv7.dd из пустой базы в рабочую с заменой сущ. файлов. 4) грохаю cdx в рабочей базе 5) Запускаю монопольно для переиндексации 6) Профит. |
|||
55
Ёпрст
09.04.21
✎
09:21
|
(52) это в чорном запросе, в фоксе не помню, проверить не сложно. Хотя мкуль, на сколько помню, тоже результат функции приводит к точности первоно операнда
|
|||
56
Ёпрст
09.04.21
✎
09:22
|
(54) да. На пустышке быстрее всего
|
|||
57
victuan1
09.04.21
✎
09:22
|
(53) Да, почти типовая. Можно и строковые реквизиты поскоращать по идее.
|
|||
58
Ёпрст
09.04.21
✎
09:24
|
Для начала, просто скопируй табличку регистра, дбф редактором измени структуру, и не забудь сжать файлик. И оценишь сразу размер.
|
|||
59
Ёпрст
09.04.21
✎
09:27
|
Ну и в регистрах, очистить еще "нулевые" итоги, там, где все ресурсы по нулям. Тоже похудеет прилично
|
|||
60
victuan1
09.04.21
✎
09:43
|
(59) Так, это запросом надо. Тут я не справлюсь.
|
|||
61
Ёпрст
09.04.21
✎
09:54
|
(60) там примитивный запрос, даже Чебур справился
https://infostart.ru/public/180018/ |
|||
62
Ёпрст
09.04.21
✎
09:56
|
Процедура Сформировать()
Соединение = "Provider=VFPOLEDB.1;Data Source=" + КаталогИБ() + ";Exclusive=Yes;Mode=ReadWrite;Collating Sequence=MACHINE"; ДБ = СоздатьОбъект("OLEDBData"); Рез = ДБ.Соединение(Соединение); Запрос = ДБ.СоздатьКоманду(); Запрос.Выполнить("EXECSCRIPT('SET ANSI OFF')"); Запрос.Выполнить("EXECSCRIPT('SET REFRESH TO 0,-1')"); Запрос.Выполнить("Exec('SET TABLEVALIDATE TO 0')");// Отключили блокировки Запрос = ДБ.СоздатьКоманду(); Имя = ИмяРегистра.ПолучитьЗначение(ИмяРегистра.ТекущаяСт рока()); стр =" |DELETE |FROM $РегистрИтоги."+Имя+" |WHERE "; т=""; Для к= 1 По Метаданные.Регистр(Имя).Ресурс() Цикл ИмяРесурса = Метаданные.Регистр(Имя).Ресурс(к); т=т+" |$РегистрИтоги."+Имя+"."+ИмяРесурса+" =0 and |"; КонецЦикла; т=т+"1=1"; стр=стр+т; Запрос.ВыполнитьИнструкцию(стр); КонецПроцедуры |
|||
63
Djelf
09.04.21
✎
10:22
|
(51) Для 1sqlite, размерность поля Количество 12.3, printf`ом печатаем число в строку с точностью 3, отрезаем последний символ и проверяем на '0'.
Ха! 13 кривых документов нашел, коробки дробные были, но делились не на цело.
|
|||
64
tgu82
09.04.21
✎
13:05
|
Епрст! А почему в словаре размерность 16.2 а в дбф-файле 15.2?
|
|||
65
Ёпрст
09.04.21
✎
15:35
|
(64) Подменяли мд в базе. Пересоздай словарик, будет как в мд
|
|||
66
Гость из Мариуполя
гуру
09.04.21
✎
18:16
|
(12) >>Я заметил одну не хорошую фишку в 1SENTRY.DBF 21год не в конце дбф в просмотрищике показывает а во второй части таблицы
Ты просто не в теме :) Наоборот, это супер классная фишка, из серии - гринпис, зеленые и берегите природу, мать вашу. называется - повторное использование использованных..кхм.. ресурсов... (чуть не написал непотребное). 1с-ка не пишет тупо новые строки в конец файла, а использует повторно помеченные на удаление (в ФАЙЛЕ dbf! помеченные, а не в 1С) записи. Таким образом, файл не распухает, если, конечно, в файле есть помеченные на удаление записи. Так что твой 2021 год мог оказаться в любом месте файла. А ты говоришь - нехорошая фишка. Эта нехорошая фишка еще со времен досовского фокспро. Правда, некоторые считают, что это не есть хорошо и иногда физически невозможно восстановить данные, поскольку помеченная на удаление запись в файле была использована повторно для новой записи. Ну тут - или файл пухнет и все новые строки пишутся в конец файла или - гринпси и зеленая технология :) - то бишь мусор (помеченные на удаление записи)_ используем повторно. |
|||
67
victuan1
11.04.21
✎
09:02
|
(25) Ужал таким образом самую большую таблицу. Была 1 722 Мб, стала 1 494 Мб.
На 3 месяца отсрочил неизбежное... Маловато будет) |
|||
68
victuan1
11.04.21
✎
10:24
|
На год-полтора должно хватить, если размер самого большого файла не будет расти больше 80 МБ в квартал.
|
|||
69
victuan1
11.04.21
✎
10:27
|
А потом можно будет еще выкроить, если совсем из таблиц удалить колонку СуммаНП (придется переписать код, где она встречается).
Сейчас ее я уменьшил до размера "Число.2.0" (в таблице dbf), меньше не могу, т.к в 1С это отображается как "Число.1.0", и меньше единицы (т.е. Число.0.0) сделать 1с-ка не дает. |
|||
70
victuan1
11.04.21
✎
10:29
|
(62) еще не пробовал.
|
|||
71
Злопчинский
11.04.21
✎
11:27
|
"Содержание операции" урезал?
|
|||
72
victuan1
11.04.21
✎
13:12
|
(71) Это не мне... У меня регистры.
|
|||
73
victuan1
11.04.21
✎
13:50
|
(65) Нифига, это багофича платформы 1С 7.7, в 1С показывает на 1 меньше размерность именно для регистров.
А размерность реквизитов в справочниках и документах норм. совпадает с дбф. Косяк этот только с регистрами. ХЗ зачем так сделали разработчики. По этой причине нельзя в Регистре сделать размерность Число.1.0 (в посте (69) описывал). |
|||
74
victuan1
11.04.21
✎
15:45
|
(62) Запустил удаление нулевых записей - особо ничего не дало:
Регистр Амортизация содержит нулевых записей: 0, что составляет 0% от всех записей в таблице Регистр Расходы содержит нулевых записей: 5178, что составляет 0.1% от всех записей в таблице Регистр Касса содержит нулевых записей: 0, что составляет 0% от всех записей в таблице Регистр Банк содержит нулевых записей: 0, что составляет 0% от всех записей в таблице Регистр РасчетыСПоставщиками содержит нулевых записей: 4864, что составляет 1.3% от всех записей в таблице Регистр РасчетыСПокупателями содержит нулевых записей: 3433, что составляет 0.5% от всех записей в таблице Регистр КнигаПокупок содержит нулевых записей: 1320, что составляет 14.8% от всех записей в таблице Регистр КнигаПродаж содержит нулевых записей: 1222, что составляет 1% от всех записей в таблице Регистр РасчетыПоОплатеТруда содержит нулевых записей: 2, что составляет 0% от всех записей в таблице Регистр ОстаткиТМЦ содержит нулевых записей: 27, что составляет 0% от всех записей в таблице Регистр РасчетыСБюджетом содержит нулевых записей: 99, что составляет 4.1% от всех записей в таблице Регистр Подотчетники содержит нулевых записей: 14, что составляет 0.1% от всех записей в таблице Регистр Удержано содержит нулевых записей: 0, что составляет 0% от всех записей в таблице БД содержит нулевых записей: 16159, что составляет 0.2% от всех записей в БД Время работы модуля: 227.56 сек. |
|||
75
victuan1
11.04.21
✎
15:56
|
(74) Вот этой обработкой https://infostart.ru/public/976426/
Т.к. код из (62) выдал мне ошибку: Запрос.ВыполнитьИнструкцию(стр); {X:\BASE1C\TEMP\_ОБРАБОТКИ\тест.ERT(30)}: Meta name parser error: поле таблицы не найдено "$РегистрИтоги.РасчетыСПоставщиками.Задолженность" Ресурса (измерения, реквизита) с именем "Задолженность" нет в этом регистре. Непонятно откуда его взял мета нэйм парсер... |
|||
76
victuan1
11.04.21
✎
15:57
|
(75) Ясно, он по синониму взял, идентификатор ресурса = "Сумма".
И что с этим делать? |
|||
77
victuan1
11.04.21
✎
16:00
|
(76) Убрал синонимы в конфигураторе. Теперь другая ошибка:
Запрос.ВыполнитьИнструкцию(стр); {X:\BASE1C\TEMP\_ОБРАБОТКИ\тест.ERT(30)}: FAILED! ICommandText::Execute(): Cannot open file x:\base1c\temp\1sbmdb_2011\rg1085.dbf. |
|||
78
victuan1
11.04.21
✎
18:35
|
(77) Ясно, не монопольно нужно.
|
|||
79
victuan1
11.04.21
✎
18:45
|
Короче, удалением нулевых записей в самом большем регистре я выиграл 1 Мб ;))
|
|||
80
Злопчинский
11.04.21
✎
18:46
|
(79) значит нормально по закрытым реистрам
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |