Имя: Пароль:
1C
1C 7.7
v7: Проблема 1sconst.dbf
,
0 Fuzzz13
 
25.01.12
08:16
Всем, доброго времени суток!

Ситуация...
Есть 1С ТиС ред. 8.7 (не типовая). Учет в ней ведется с 2004 года.

Пытаюсь удалить помеченные на удаления элементы (их всего несколько штук), в строке состояния перебираются данные, считается количество элементов, причем после трех - четырех часов ожидания, этот счетчик может уйти в минус (!!!) - такого еще я не видел нигде.

В итоге оставлял даже на трое суток эту операцию, но результата - НОЛЬ - процесс удаления не закончился. Хотя компьютер на самый тормозной: 4 ядра, 4 Гб. И в эти трое суток на компьютере больше ничего не делалось.

Пытался даже создать новый элемент справочника "Номенклатура" и его пометить на удаление. И при попытки удалить только этот один элемент через стандартную процедуру "Удаление помеченных объектов" - происходит тоже самое.

Начал разбираться. В итоге выяснил, что проблема с файлом 1sconst.dbf. Размер 935 Мб. Если его удалить физически из каталога ИБ, то все удаляется за несколько минут - но это не выход.

Что делал:
1. Тестирование и исправление ИБ;
2. Удалял все индексные файлы (*.cdx);
3. Проверял сам файл 1sconst.dbf при помощи программ для проверки DBF файлов - в итоге все нормально: открываются, просматриваются с начала и до конца, и после тестирования и исправления в 1С ничего не поменялось.
4. Также пытался удалить историю цен вначале за каждый год по очереди (2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011), а потом и вообще всю историю цен - результатов тоже НОЛЬ! К тому же размер файла 1sconst.dbf не изменился.
Какие еще есть варианты и куда копать?

Заранее спасибо.
1 1Сергей
 
25.01.12
08:21
Баян. В поиск. Патч от hogik
2 filh
 
25.01.12
08:22
(0) с следствии чего, стало подозрение на 1sconst.dbf?
почитать про структуру файла можно тут http://www.script-coding.com/v77tables.html#1.2.2.
3 filh
 
25.01.12
08:23
4 andrewks
 
25.01.12
08:30
надо было периодически подчищать базу. или использовать скуль
5 Ёпрст
 
25.01.12
08:36
(0) периодику не пробовал прибивать ?
оставь только последнее значение, остальное прибей - табличка твоя похудеет в разы.
6 vde69
 
25.01.12
08:40
(0)
>>>>Также пытался удалить историю цен вначале за каждый год по очереди (2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011), а потом и вообще всю историю цен - результатов тоже НОЛЬ! К тому же размер файла 1sconst.dbf не изменился.

при удалении записи физически из файла они не удаляются, строка остается с признаком "свободна", место возвратится после ТИИ или например операции "сжание"


по сабжу:
у тебя где-то зацикливание причем не явное, например в номенклатуре переодический реквизит "Ед" значением выступает справочник у которого есть переодический реквизит "ОсновнаяНоменклатура".

1с такие конфликты не умеет решать сама :)
7 Fuzzz13
 
26.01.12
06:15
to filh:
Структуру файла я знаю. Есть у кого скаченная (http://infostart.ru/public/15577/)?

to andrewks:
Ко мне просто клиент уже пришел с проблемой в 2011м году, а до этого момента он и не знал, что надо подчищать периодические реквизиты регулярно.

to Ёпрст4:
Каким именно образом? Я только пробовал прибить цены и по годам по отдельности и вообще все - все равно не похудела. Я так понимаю, после удаления значения цен (так это самая большая часть файла 1sconst.dbf) надо еще сжать сам файл.

to vde69:
Ну так фишка в том, что 1С даже не даёт удалить только что созданный элемент номенклатуры, который не участвует вообще ни в каких документах!!!!
Каким образом "лечить" это "не явное зацикливание"?
8 Jump
 
26.01.12
07:21
(0)Загрузить- выгрузить данные пробовал?
9 Fuzzz13
 
26.01.12
07:38
to Jump:
Это было одно из первых, что пробовал, но не помогло (((
10 Mikeware
 
26.01.12
07:49
(7) Что, отдельно поработать над этой табличкой - не судьба?
Пометить на удаление в 1сконст ненужное старье.
Взять фоксу или клиппер (точнее, утилиту из его комплекта), да сжать файл.
Или втупую перекопировать в аналогичный пустой файл данные без пометки на удаление (или вообще копировать только нужные).
Потом переиндексироваться, и вуаля...
вместо этого сутки сношашь мозг...
11 vde69
 
26.01.12
07:50
(7) ну в ветке как минимум 2 человека которые на 100% могут полечить твои проблеммы :)

я делаю за деньги :)
12 vde69
 
26.01.12
07:52
(10) кстати обрезать историю периодики впрямым запросом куда проще :)
13 Fuzzz13
 
26.01.12
07:55
to Mikeware:
> Пометить на удаление в 1сконст ненужное старье.
Пробовал

> Взять фоксу или клиппер (точнее, утилиту из его комплекта), да сжать файл.
Сейчас как раз пробую.

> Или втупую перекопировать в аналогичный пустой файл данные без пометки на удаление (или вообще копировать только нужные).
Эта мысль была, но решил ее на потом оставить.

> вместо этого сутки сношашь мозг...
Извиняй ))) Больше не буду!
14 vde69
 
26.01.12
07:57
(13) используй bdbfs.exe
15 Ёпрст
 
26.01.12
08:35
(13) че там пробовать - любой дбф редактор это умеет.
16 Fuzzz13
 
26.01.12
08:46
Сейчас еще раз взял оригинал, и в данный момент удаляю историю цен до 01.01.2010. (Это на несколько часов)
А потом тогда дальше буду пробовать сжимать файл при помощи сторонних утилит.
17 Ёпрст
 
26.01.12
09:00
>>>историю цен до 01.01.2010. (Это на несколько часов)

Твоя история удаляется за пару минут.
Как\чем\зачем ты её удаляешь часами ?
18 Fuzzz13
 
26.01.12
09:04
Там просто дохрена типов цен и товаров тысяч 30. А весь прайс раньше довольно часто обновлялся. И получается что у товара может быть значений одного типа цен около сотни.
Ну и в транзакицях по частям (по 2000 шт в одной части) это получается несколько часов на 4-ядрах и 4-х Гигах оперативной памяти.
19 Mikeware
 
26.01.12
09:08
(16) Это делается "снаружи", и за несколько минут...
20 Fuzzz13
 
26.01.12
09:39
Подскажи как.
21 Ёпрст
 
26.01.12
09:43
(20) тупо прямым запросом сделать delete ненужных записей по условию.
Оставить только последнее периодическое значение реквизита.
Хотя..и через объект периодический усё быстро удаляется.

А по поводу удаления помеченных объектов - если отключить ЖР на это время - удаляется всё в разы быстрее.

Хотя, прямым, всё же пошустрее будет
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.