![]() |
![]() |
![]() |
|
Работа с DBF - не создается файл индекса CDX | ☑ | ||
---|---|---|---|---|
0
Teria
01.08.19
✎
18:31
|
Добрый день. Используем Версию 1С 8.1. Самописная конфигурация. Для уменьшения объема базы часть данных хранится в файле dbf. При внесении данных каждый раз создается файл cdx так как при добавлении новых записей нужно обращаться к старым. Создается и удаляется. Полтора года это работало нормально. Сегодня вдруг, (иногда!) при внесении и просмотре данных стала возникать такая ошибка: "CODEBASE ERROR Error #: -20 creating file temporary working file". Это именно при создании cdx файла. Он создается, но только начало (3 КБ). А иногда срабатывает (та же операция) и создается нормальный файл (256 КБ). Ни от компьютера ни от пользователя базы ни от пользователя системы не зависит. Система если что Windows 7 и 10. База 1С файловая. Повторить эту ошибку на тестовом компьютере и тестовой базе не удалось. Но на основной базе - возникает сегодня постоянно. Создание новой базы в диалоге запуска (очистка КЭШ) тоже не помогла. Т.е. до удаления базы ошибка была и после удаления и создания заново так же осталась. А потом исчезла... и снова появилась. Подскажите, пожалуйста, хотя бы что за временный файл и где он создается, так как я слабый программист 1С ("любитель"). А DBF знаю еще меньше. Да, размер файла ДБФ 122 534 623 байт, количество записей: 15410. В каком направлении искать собаку?
|
|||
1
Builder
01.08.19
✎
18:35
|
"Для уменьшения объема базы часть данных хранится в файле dbf."
Отличный подход к проектированию базы данных. |
|||
2
mikecool
01.08.19
✎
18:35
|
попробовать подключить dbf как внешний источник данных, если поддерживается
|
|||
3
Garikk
01.08.19
✎
18:38
|
(1) 'dbf - проверено годами не тошто вашы всякие sqlite и прочие бесовские субд'
|
|||
4
Garykom
гуру
01.08.19
✎
18:54
|
(3) Проверено годами: "имя файла не может быть больше 8 символов" ))
|
|||
5
tipaya
01.08.19
✎
19:21
|
Если вдруг ни с того ни с сего. Может какие Windows обновления напридумывали. бывает всякое - похоже, поэтому и на тестовом ПК не выявляется.
|
|||
6
Teria
01.08.19
✎
20:23
|
Я предполагаю, что мой подход не оптимален. Но сейчас прошу подсказать не изменение подхода, а устранение конкретной ошибки, чтобы люди уже нормально работали на существующем варианте, а уж потом можно менять на более оптимальный. Что же все таки означает "Error #: -20 creating file temporary working file"?
|
|||
7
ДенисЧ
01.08.19
✎
20:26
|
место в темпе смотрел? Да и на диске тоже
|
|||
8
Гость из Мариуполя
гуру
01.08.19
✎
22:04
|
(6) >>Что же все таки означает "Error #: -20 creating file temporary working file"?
Та это не вопрос, что означает, гуглится легко: -20 Creating File This error could be caused by specifying an illegal file name, attempting to create a file which is open, having a full directory, or by having a disk problem. что в переводе на русский: -20 Создание Файла Эта ошибка может быть вызвана указанием недопустимого имени файла, попыткой создать открытый файл, наличием полного каталога или проблемой с диском. так что что означает - это не вопрос вопрос - почему:) у меня такое бывало иногда после очередных обновлений старого доброго каспера. |
|||
9
Teria
01.08.19
✎
22:14
|
То, что не удается файл создать - это вроде как понятно. Но какой файл он пытается создать и в какой папке? Разворачивает где-то сам ДБФ? А где?
|
|||
10
Asmody
01.08.19
✎
22:30
|
[создается файл cdx так как при добавлении новых записей нужно обращаться к старым] – это что за дичь такая? (Хотя о чем я при такой "архитектуре"?) CDX – это, вообще-то, файл составного индекса. По-идее, они живут вместе с таблицей если в ней есть индексы. Или вы каждый раз индексируете заново?
Я даже не предлагаю забить болт в голову тому, кто такое придумал "для уменьшения объёма". |
|||
11
Гость из Мариуполя
гуру
01.08.19
✎
22:32
|
ну он же тебе же по русски пишет - "temporary working file"
т.е. какой файл, понятно - временный файл, обычно у них расширение *.tmp а имя? хм.. каждый раз генерится новое а в какой папке - дык откуда ж я знаю, где у тебя темпы прописаны? по умолчанию d 7 винде это %userprofile%\appdata\local\temp т.е. тебе что-тоне дает записать временный файл во временный каталог. то ли антивирус к tmp слишком придирчиво относится, зы:то ли ты его слишком часто стираешь/создаешь :) - может комп подшаманил и он стал слишком шустро работать :) на фоксе 2.0 когда то давно была такая фишка: Временные файлы получают имена, которые формируются на основе значения системного времени. Возможно, на быстрой машине второй временный файл формируется настолько быстро после первого, что присваиваемое ему имя совпадает с именем предыдущего временного файла (а просто время не успело измениться). Радикально лечилось только переходом на фокс 2.6 :) |
|||
12
Гость из Мариуполя
гуру
01.08.19
✎
22:36
|
для начала ты так и не сказал - какой антивирус.
и не сказал, пробовал ли ты его(антивирус) отключать. это при условии, что больше ничего с компом и с системой ты не делал. |
|||
13
H A D G E H O G s
01.08.19
✎
22:56
|
Я думал, я видел все в этой жизни., но нет. Есть еще темные закоулки разума, куда лучше не заглядывать.
|
|||
14
Teria
02.08.19
✎
08:22
|
Спасибо за ответы всем. Про антивирус не спрашивали, спросили - отвечаю стоит КИС (Каспер). Про разжевывание о временном файле - спасибо большое. Буду копать в этом направлении. Про Подход и механизм - я согласен по дурацки сделано, но как изменить не знаю. После решения текущей задачи с огромным удовольствием приму советы как сделать и расскажу все: как и почему сделал и главное что должно быть.
Сразу если можно вопрос от совершенного "чайника": если создан индексный файл и ДБФ открыт с ним - то при добавлении записи индексный файл автоматом поменяется? А то вот я каждый раз его пересоздаю ... :(( |
|||
15
Teria
02.08.19
✎
08:27
|
Да, по поводу скорости работы компа: если возникает этот сбой, то я "вручную", один раз пытаюсь создать CDX, он не создается до конца как я и говорил. Захожу в папку - удаляю CDX. Опять пытаюсь создать - опять та же ошибка. Так что скорость работы вряд ли влияет.
И по поводу антивируса - Каспера еще не пробовал отключать. Раньше то, при нем, работал нормально. Но обязательно сейчас попробую. |
|||
16
ДенисЧ
02.08.19
✎
08:46
|
(14) "если создан индексный файл и ДБФ открыт с ним - то при добавлении записи индексный файл автоматом поменяется?"
Должен. Иначе в нём смысла нет. Разумеется, если ты пишешь в dbf через драйвер, а не напрямую битики. |
|||
17
Гость из Мариуполя
гуру
02.08.19
✎
09:35
|
(15) >>Каспера еще не пробовал отключать. Раньше то, при нем, работал нормально.
Каспер по дефолту обновляется каждые три часа. Мало ли что там прилетело с очередным обновлением. Поэтому твоя фраза может звучать даже так - три часа назад все работало нормально. :))) и я даже поверю :) Тем более что ты говоришь на разных компах c разными Windows (7 и 10), под разными пользователями базы, и так понимаю единственное что общего это KIS. Так тогда него и нужно начинать, если он является единственным общим фактором. Но сильно не надейся, каспер может оказаться и ни при чем. По поводу автоматического обновления индекса - зачем вообще такое спрашивать. Возьми (на копии базы) открой файл dbf с индексом, просто добавь в файл пару записей и посмотри, изменился ли cdx при этом. И сразу такие вопросы отпадут. |
|||
18
Asmody
02.08.19
✎
09:47
|
У dbf, если мне не изменяет, ограничение на размер файла 2 Гбайт. Если вы там реально что-то большое собрались хранить, имейте ввиду.
|
|||
19
Teria
02.08.19
✎
10:16
|
Про размер два гига знаю - пока 120 мег (я писал выше.)
Теперь про то, что я попробовал. очистил кэш пользователя виндовс и системы (C:\Users\МойПольз\AppData\Local\Temp и C:\Windows\Temp) Не помогло. Остановил Каспера - не помогло. Сделал очистку настроек пользователя (ОчиститьНастройкиПользователя(...)) - Помогло Помогло? О! Побежал на рабочие места Проделал все там. И дополнительно очистил кэш 1С (C:\Users\МойПольз\AppData\Local\1C и C:\МойПольз\СергейТ\AppData\Roaming\1C) ВСЕ РАВНО НЕ ПОМОГЛО! Сейчас появилась копия базы (еженочно делаем), на ней вроде тоже постоянно такая ошибка. Буду пробовать с ней - попробую выгрузить и загрузить. (Основная база всегда используется - с ней не поэкспериментируешь). По поводу того, что CDX меняется с DBF - спасибо. Ейчас и сам вот подумал что это логично. А когда читал про то как искать запись в ДБФ видимо прочитал фразу "для поиска записи нужно создать CDX" как "для поиска записи нужно КАЖДЫЙ РАЗ создать CDX". Смотрим в книгу ... понимаем как хотим :) |
|||
20
Провинциальный 1сник
02.08.19
✎
10:20
|
Не занимайтесь фигнёй.. нет никакого смысла выносить хранение данных в dbf вне базы 1с8. Единственное, когда это оправдано - при обмене с какой-то внешней системой.
Да, и удалять cdx тоже очень плохое решение, потому что создание индекса - тяжелая операция. Это как перед каждым поиском проводить сортировку массива. |
|||
21
Гость из Мариуполя
гуру
02.08.19
✎
10:49
|
(19) упаковку dbf делаешь? сжимаешь? или только пишешь в dbf?
временные файлы они ведь используются при подобных операциях - при переупаковке, при создании cdx каждый раз заново, короче при массовых (общих) операциях над dbf или cdx.. если ты НЕ будешь каждый раз (с каждым новым элементом, с каждым чихом) удалять и заново создавать cdx, то и временные файлы по идее не должны использоваться. Открыл один раз файл dbf с индексом и пиши в него, при этом cdx будет обновляться сразу сам автоматически, без всяких временных файлов. |
|||
22
Гость из Мариуполя
гуру
02.08.19
✎
10:55
|
и да, каспер в принципе до конца не отключается. каспер только сносится. знаешь, как курочка снесла дедушке яичко.
напрочь. вот так же и каспер. напрочь. |
|||
23
Teria
02.08.19
✎
11:16
|
К каспером понятно. Но он не мешает создавать CDX на этой базе с другого компа. Сейчас он запущен везде, и на моем компе CDX файл успешно создается. И на резервной копии с запущенным касперским с моего компа все работает. (Возможно пока, так уже было - восстанавливалось и ломалось.) А с другого компа не работает!!!
Я понимаю (теперь), что такую мистику создал я сам - вчера была перезапись многих записей ДБФ с постоянным пересозданием индексного файла. И я понял, да, спасибо, как изменить программу. Но как это исправить сейчас... В файл только добавляются записи и просматриваются. Не сжимаются. "если ты НЕ будешь каждый раз (с каждым новым элементом, с каждым чихом) удалять и заново создавать cdx, то и временные файлы по идее не должны использоваться. " Да, но один то раз придется создать этот файл, а он с рабочего компа не создается! А хранить в ДБФ мы решили, так как это данные создаваемые по требованию контролирующих органов, они должны храниться в электронной форме, может потребоваться их отправка без основной базы, ну и файловая база 1С допускает 4 гига объем файла. На серверную перейти не можем, вот и экономим заодно - 4 Гига быстро наберутся. |
|||
24
Провинциальный 1сник
02.08.19
✎
11:20
|
(23) "ну и файловая база 1С допускает 4 гига объем файла"
Речь не о файле 1cd, а о так называемом "внутреннем файле", то есть о конкретной таблице с данными (индексы отдельно). |
|||
25
Гобсек
02.08.19
✎
11:23
|
(19) Для файлового варианта +-120 мегабайт не имеют значения. Самое простое - использовать эту ситуацию как повод отказаться от ДБФ и не возвращаться к этому вопросу больше.
|
|||
26
Гобсек
02.08.19
✎
11:24
|
Когда-то давно еще на версии 1С 7.7 я выгружал информацию в файл ДБФ по причине того, что умел работать с ДБФ и еще не умел работать с таблицей значений.
|
|||
27
Teria
02.08.19
✎
11:46
|
Сейчас база основная 1 Гиг. Когда к 3 Гигам подойдет и этот файл будет 0,5 Гига - я думаю это существенно. Да и требования контролирующих органов - хранить в электронной форме - предполагают отдельное использование.
Но все ваши рекомендации приняты к сведению. Буду стараться сделать без ДБФ, и не пересоздавая CDX если все же с ДБФ. А СЕЙЧАС ЧТО ГДЕ ОЧИСТИТЬ, ЧТОБЫ СОЗДАТЬ CDX ФАЙЛ?!!! |
|||
28
hhhh
02.08.19
✎
12:02
|
(27) чего вы тогда хренью страдаете? 3 гига - это ограничение на одну таблицу. В принципе файловые базы бывают объемом и 20 и 30 Гиг, без проблем. 1 ГИГ - это считается пустая база, с каким-то минимумом данных. Выкиньте вы эти свои ДБФ, не позорьтесь.
|
|||
29
Teria
02.08.19
✎
12:12
|
Хорошо, выкину конечно. Но потом. Просто нужно время, чтобы выработать новую концепцию, новые внутренние документы, а потом изменить программу.
Хотелось бы получить совет как сейчас исправить ... |
|||
30
hhhh
02.08.19
✎
12:15
|
(26) я тоже работал с dbf, но на 7.5. Когда появилась 7.7 и в ней появились таблицы значений, это был праздник.
|
|||
31
Гость из Мариуполя
гуру
02.08.19
✎
12:19
|
(27) а сейчас..хм.. это уже другой вопрос.
надеюсь, ты уже убрал в программе удаление и создание заново cdx при каждом чихе? и у тебя теперь что, не создается cdx только в самый первый раз? хм.. если с одного компа cdx создается, а с другого нет - может посмотреть настройки региональных стандартов? Может у тебя одна винда (не)локализованная, а другая принудительно русифицированная? а индексируешь по каким полям? типа текстовые типа неограниченной длины? на крайний случай первый раз создать файл cdx с того компа, на котором создается и больше его не удалять. |
|||
32
Провинциальный 1сник
02.08.19
✎
12:22
|
(30) Не, праздник это 1с++ и ИндексированнаяТаблица) А с обычной ТЗ в семерке работать не очень интересно в плане быстродействия поиска. Иногда быстрее было в dbf с индексами данные хранить)
|
|||
33
hhhh
02.08.19
✎
12:30
|
(32) не, меня в семерке ТЗ никогда не подводила. Ну иногда приходилось какую-то вторую ТЗ мутить, для поиска в первой ТЗ. Вот в восьмерке, там ТЗ начали реально тормозить, поэтому и сделали там ТЗ с индексами.
|
|||
34
Провинциальный 1сник
02.08.19
✎
12:31
|
(33) Это вы просто ТЗ в качестве кэша не использовали.. с десятками тысяч элементов)
|
|||
35
Teria
02.08.19
✎
12:46
|
Ключ: два числа (целых) и дата. Винда вся стандартная: десятка коробочная или предустановленная. Так же и Семерка. Создание CDX - убираю, но это не пять минут. Да, потом, если что создам с другого компа. Спасибо за идею, она и ко мне тоже в голову пришла. Но вот сейчас бы исправить, чтобы люди не пугались. А некоторые чтоб не ругались. Обновить то получится только ночью скорее всего.
|
|||
36
Teria
02.08.19
✎
12:50
|
А как в ДБФ сделать текстовое поле неограниченной длины?
А то в этом и причина привязки новой записи к старой (о чем в начале писал). У меня только 255 символов поле, а текст нужно хранить и маленький (30 символов) и большой (3-4 тыс. символов). Вот и делаю к одной записи дополнительные. Вы только не бейте сильно, ну не специалист я - все методом тыка - в какой сайт ткнулся, так и сделал. Что не успел найти - накрутил сам. |
|||
37
Провинциальный 1сник
02.08.19
✎
13:19
|
(36) Формат dbf поддерживает мемо-поля, условно "неограниченной" длины (на самом деле до 64кБ), но в 1с штатно мемо-поля не поддерживаются объектом xbase. Только через odbc если работать. Но не советую.
|
|||
38
Провинциальный 1сник
02.08.19
✎
13:19
|
+(37) Да, и мемо-поля нельзя использовать в индексе, соответственно по ним невозможен быстрый поиск.
|
|||
39
Teria
02.08.19
✎
13:24
|
Ну вот, по этому получается единственный вариант делать к одной основной записи до 20 и больше дополнительных?
|
|||
40
Провинциальный 1сник
02.08.19
✎
14:00
|
(39) Примерно так в 1сV7 хранились строки неограниченной длины) А я бы посоветовал не заморачиваться с xbase всё-таки, а хранить данные в базе. Если хотите хранить большие значения - храните их в файлах на диске.
|
|||
41
Гость из Мариуполя
гуру
02.08.19
✎
14:17
|
(35) прям сейчас? когда ты за каждым чихом удаляешь и создаешь cdx (и временные файлы)?
ну, как вариант попробуй на каждом чихе (на каждой итерации) после удаления cdx перед созданием нового воткни паузу (sleep) на 10-100-500 миллисекунд (минимально рабочую задержку определишь сам путем подбора). паузу (sleep) можно делать разными способами, к примеру пустым циклом (грузит проц) мне больше нравится пингом типа так (видел когда то на ИС): СтрокаЗапроса = "ping -n 1 -w "+Формат(ЗадержкаМиллиСекунд, "ЧДЦ=0; ЧГ=") + " 127.255.255.255"; //ну или 127.0.0.1 :) WshShell = Новый COMОбъект("WScript.Shell"); WshShell.Run(СтрокаЗапроса, 0, -1); (39) ничего подобного. Длина одной строки ограничена, если не забыл, 255 полей по 255 байт. т.е. 65535 или 64к так что можно сделать либо 1 основную запись и к ней 20 дополнительных, либо (в пределе) одну запись но на 255 полей по 255 байт. :))) так что твои 2-3к в одной записи разместить - раз плюнуть :))) |
|||
42
Гость из Мариуполя
гуру
02.08.19
✎
14:22
|
это решение, разумеется, крайне неоптимально и жрет дофига ресурсов (места), но просто как попутное примечание на твое "получается единственный вариант делать к одной основной записи до 20 и больше дополнительных" - как видишь не единственный.
Более оптимальный - да. Единственный - нет. |
|||
43
Teria
02.08.19
✎
14:40
|
Спасибо.
Про варианты - понял. Про паузу - это все равно изменение кода - так что, конечно, делаю неудаляемый CDX. Просто думал на 3-4 часа привести систему в рабочее состояние (без изменения кода). Типа темпы почистить ... только какие... все мне известные я вроде почистил... |
|||
44
Salimbek
02.08.19
✎
15:19
|
(43) Вместо своего xbase подключаешь 1SQlite, создаешь один раз ручками файл и индексы на нем. Потом в него перебрасываешь все твои данные. В том числе и длинные строки. Далее без проблем пользуешься.
|
|||
45
Salimbek
02.08.19
✎
15:20
|
(43) А если хочешь прямо сейчас - тогда только запускать Process Explorer с фильтром по твоей 1С-ке и смотреть - за какими файлами и куда он лезет. Как система упадет - смотреть - где произошел сбой и почему.
|
|||
46
Сияющий в темноте
02.08.19
✎
21:08
|
это,а разве в dbf файл строки не до 64к писать можно?
там же два байта длины? и это,для кеша в памяти есть обьект scripting.dictionary,который умеет шустро возвращать то,что нужно. |
|||
47
Teria
03.08.19
✎
16:29
|
Спасибо всем кто помогал. Ситуация пока разрядилась, хотя проблема не решена. Проблема обойдена.
Как и говорил - я убрал постоянное пересоздание индекса. То, что при этой операции выдает ошибку создания временного файла, это не страшно - один раз на другом компе создал и все. Но пришлось убрать и сжатие базы после пометки на удаление записей. Так как при этом тоже создается временный файл (пытается создать и выдает ошибку). Ну тоже иногда буду на другом компе сжимать. Так что, если кто-то подскажет все же, где файлы временные создаются и что им мешает, то было бы хорошо. Process Explorer-ром попробую конечно, если будет возможность. Компьютер то, на котором это все происходит, занят постоянно. А на другом может быть не показательно. Но попробую. Про 1SQlite спасибо за информацию - на досуге (если он будет) изучу и постараюсь использовать. Ну и в большой перспективе планируется вообще писать новую конфигурацию, так как в этой много несуразиц (она досталась мне по наследству - не я ее изначально делал). Так что там постараюсь отказаться от внешних файлов. Еще раз спасибо всем. |
|||
48
Teria
03.08.19
✎
16:38
|
Пы.Сы. А вообще интересно - переделал программу, сделал кнопку для изначального создания индексного файла. Запускаю, жму - создался. Начинаю вносить и понимаю, что забыл восстановить в базе ту информацию, по которой надо ДБФ заполнять. Восстанавливаю. Жму еще раз на создание индекса (в общем то не нужно, но чтоб проверить) и пожалуйста - не создается.
Сажусь на другой комп, создаю - создается. Начинаю заполнять - там сбой из-за сжатия. Устраняю сжатие, начинаю все сначала - конечно на основном компе не создается индексный файл. Иду на тот второй комп - тоже не создается. Переношу файл в другую папку - создается. Или так (это в одну из промежуточных проб) кнопкой в программе - не создается, а кнопкой в обработке, с таким же кодом, вызванной в этой же программе (!) - создается. Чудны дела твои Билли... |
|||
49
hhhh
03.08.19
✎
19:03
|
(48) ну файл же монопольно должен быть занят. Значит на другом компе не освободил. Не все вышли из базы.
|
|||
50
Teria
05.08.19
✎
08:56
|
Ситуация, когда двое обращаются к файлу, редко, но бывает. Там ошибка другая "перед использованием надо открыть базу" или что-то подобное. Ну и главное - тут была аварийная ситуация и никто из пользователей этот механизм не использовал! Я ж сидел на том компьютере, на котором они могут это делать.
Да и на тестовой базе (о которой никто не знал) это тоже возникало. Так что тут что-то другое. |
|||
51
Конструктор1С
05.08.19
✎
09:01
|
(0) "Для уменьшения объема базы часть данных хранится в файле dbf"
А в чём профит-то? |
|||
52
Провинциальный 1сник
05.08.19
✎
09:06
|
(51) В иррациональном страхе упереться в ограничение размера базы.
|
|||
53
Teria
05.08.19
✎
09:58
|
Извините, честно, не понимаю вашего скепсиса.
В 2016 году мой предшественник провел глобальное удаление старых документов и связанных с ними проводок, чтобы база смогла работать. Так как объем файла уперся в 4 Гига. И база отказывалась работать. Теперь я экономлю 500 мег. в перспективе. Это полгода - год дополнительной работы без такого же удаления документов (читай: истории операций, которая очень желательна). На серверную версию, как я уже говорил перейти было бы здорово, но невозможно по финансовым и организационным причинам. Так почему вы это критикуете? (Не способ экономии, а сам факт вынесения данных в отдельный файл. Данных - нужных только для контролирующих органов, а не для постоянной работы). |
|||
54
Провинциальный 1сник
05.08.19
✎
10:07
|
(53) Потому что в восьмерке ограничения в 4 Гб не на размер базы, а на размер одной таблицы в базе. А сама база может быть хоть 20 гигов - вполне реально.
|
|||
55
Teria
05.08.19
✎
10:07
|
И кроме того, я уже сказал - планируется глобальная переделка конфигураци, фактически написание с нуля. Там я постараюсб отказаться от отдельных файлов. Вопрос мой все же был не в том: хорошо ДБФ или плохо, а в том как решить конкретную ошибку: "CODEBASE ERROR Error #: -20 creating file temporary working file".
Косвенный способ подсказали - Process Explorer. Да постараюсь сделать. (Только как мне помнится эта прога показывает процессы а не создаваемые ими файлы, но я, возможно, ошибаюсь. Изучу этот вопрос). Хорошо было бы, если бы кто-то разбирающийся в 1С и ее работе с ДБФ подсказал, где и какой файл она создает. |
|||
56
Провинциальный 1сник
05.08.19
✎
10:08
|
+(53) И кстати, размер одной таблицы в dbf меньше, чем 4 Гб в базе. У cdx ограничение на размер индексируемого файла в 4Гб, и никуда не денешься от этого.
|
|||
57
Провинциальный 1сник
05.08.19
✎
10:09
|
поправка (56) У cdx ограничение на размер индексируемого файла в 2 Гб
|
|||
58
Провинциальный 1сник
05.08.19
✎
10:09
|
(55) "Хорошо было бы, если бы кто-то разбирающийся в 1С и ее работе с ДБФ подсказал, где и какой файл она создает."
Какой скажешь, такой и создает. Сама она ничего не делает, её надо попросить хорошенько) |
|||
59
Teria
05.08.19
✎
10:09
|
Понятно, т.е. убирая данные другой таблицы я ничего не сэкономлю... Да... Долго доходило. Ну чтож все же дошло.
|
|||
60
Teria
05.08.19
✎
10:11
|
(58) А про какой же временный файл она говорит - не могу создать?
|
|||
61
Провинциальный 1сник
05.08.19
✎
10:13
|
(60) Ну без кода сложно вообще что-либо сказать. Приведите фрагмент, где создается или открывается этот dbf.
|
|||
62
Teria
05.08.19
✎
10:21
|
Вот код. Это уже новый для однократного создания индексного файла. Он тоже выдавал ошибку
-------------------------------------------------------- ///Сформируем имя файла ДБФ ФайлДБФ = ПапкаБазы() + "dbf\ank2018.dbf"; ///И индекса ФайлИндекса = СтрЗаменить(НРег(ФайлДБФ),".dbf",".cdx"); ///Проверим наличие файла базы ФайлНаДиске = Новый Файл(ФайлДБФ); Если НЕ ФайлНаДиске.Существует() Тогда Сообщить("Не удалось создать оглавление файла с анкетами (индексный файл) так как не найден сам файл с анкетами"); Возврат; КонецЕсли; ///Создадим объект работы с ДБФ и откроем его сразу Если АнкетаДБФ = Неопределено Тогда АнкетаДБФ = Новый XBase; АнкетаДБФ.Кодировка = КодировкаXBase.ANSI; КонецЕсли; Если НЕ АнкетаДБФ.Открыта() Тогда АнкетаДБФ.ОткрытьФайл(ФайлДБФ); КонецЕсли; ///Проверяем и удаляем старый файл индекса если уж вызвали создать то создаем. ФайлНаДиске = Новый Файл(ФайлИндекса); Если ФайлНаДиске.Существует() Тогда УдалитьФайлы(ФайлИндекса); КонецЕсли; АнкетаДБФ.Индексы.Добавить( "INDEX_KD", // имя индекса "STR(KodKli)+DTOS(NachPer)+STR(VidAnk)", // выражение индекса Ложь // уникальность создаваемого индекса ); ///Создаем сам файл индекса Попытка АнкетаДБФ.СоздатьИндексныйФайл(ФайлИндекса); Исключение Сообщить("Не удалось создать оглавление файла с анкетами (индексный файл), ошибка ДБФ: " + ОписаниеОшибки()); КонецПопытки; АнкетаДБФ.ЗакрытьФайл(); |
|||
63
Salimbek
05.08.19
✎
10:22
|
(60) Да кто его знает - что там у тебя творится? Можешь, например, установить пользователю Квоту на использование дискового пространства, а он себе накидает суперважных видосиков и всю квоту выжрет, вот и не сможет под этим юзером твоя ДБФ-ка работать.
|
|||
64
Мимохожий Однако
05.08.19
✎
10:23
|
Проверь жёсткий диск. Пересоздай папку с базой и данными. С таким сталкивался для файловых.
|
|||
65
Teria
05.08.19
✎
10:25
|
Так она бы никогда не смогла, а она то работает то нет.
Как будто стек какой то заполнился. И по чуть-чуть уходит - освобождает место для одного двух созданий временного файла,потом забивается и снова ... и снова. |
|||
66
Teria
05.08.19
✎
10:27
|
(64) А папку просто удалить и создать с тем же именем? Или с другим?
Просто на это имя папки многое завязано, я даже и не знаю все, что завязано. Если среди ночи какой-нибудь процесс эту папку не найдет - грустно будет. |
|||
67
Провинциальный 1сник
05.08.19
✎
10:36
|
А не может быть проблема связана с многопользовательским доступом? Дело в том, что xbase в 1с не умеет многопользовательский доступ. Только монопольный.
|
|||
68
Teria
05.08.19
✎
10:39
|
(67) Нет. Я уже говорил выше. Только я один работал с базой ДБФ (это точно!) и ошибка была.
|
|||
69
Salimbek
05.08.19
✎
10:41
|
(67) Да может быть, конечно.
(66) А что мешает вообще не напрягаться, и поставить любой нормальный sql-сервер, хоть Мускул, хоть Постгре и пиши в него хоть терабайты данных. Только дизайн приложения для начала бы поменять, типа: процедуры-заглушки: ПодключитьБД, ЗаписатьДанные, ПрочитатьДанные. А внутри - сейчас делаешь все как есть через ДБФ, параллельно - делаешь тестовую сборку с sql, как тест отработает также как и ДБФ - просто меняешь код в этих процедурах и все. Пользователи ничего и не заметят. |
|||
70
Teria
05.08.19
✎
10:41
|
Ну и еще раз напомню, что база ДБФ сейчас работает. С единожды созданным (на другом компе) файлом CDX.
Так что вопрос остался скорее теоретический чем практический. |
|||
71
Teria
05.08.19
✎
10:44
|
(69) Мешает, честно говоря, мое незнание работы 1С с sql-сервером. Т.е. долго буду разбираться и так же по незнанию могу подобные косяки навертеть. Ну и время нужно, конечно, на разработку новой обработки.
|
|||
72
Провинциальный 1сник
05.08.19
✎
10:56
|
(70) Возможно что объект xbase глючный в определенных режимах. Просто примите как есть. А на будущее - лучше не использовать его. Это древний костыль, оставленный для возможности обмена данными со сторонними системами, а не для хранения данных.
|
|||
73
Teria
05.08.19
✎
11:23
|
(72) Хорошо.
|
|||
74
Сияющий в темноте
05.08.19
✎
12:08
|
временные файлы создаются в директории указаннлй через специальный ключ,а также заданной переменными окружения TEMP и TMP,для процесса их можно поменять на свою папку,и будет работать,как надо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |