Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Работа с DBF - не создается файл индекса CDX

Работа с DBF - не создается файл индекса CDX
Я
   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. В каком направлении искать собаку?
 
 
   Builder
 
1 - 01.08.19 - 18:35
"Для уменьшения объема базы часть данных хранится в файле dbf."
Отличный подход к проектированию базы данных.
   mikecool
 
2 - 01.08.19 - 18:35
попробовать подключить dbf как внешний источник данных, если поддерживается
   Garikk
 
3 - 01.08.19 - 18:38
(1) 'dbf - проверено годами не тошто вашы всякие sqlite и прочие бесовские субд'
   Garykom
 
4 - 01.08.19 - 18:54
(3) Проверено годами: "имя файла не может быть больше 8 символов" ))
   tipaya
 
5 - 01.08.19 - 19:21
Если вдруг ни с того ни с сего. Может какие Windows обновления напридумывали. бывает всякое - похоже, поэтому и на тестовом ПК не выявляется.
   Teria
 
6 - 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
Создание Файла
Эта ошибка может быть вызвана указанием недопустимого имени файла, попыткой создать открытый файл, наличием полного каталога или проблемой с диском.

так что что означает - это не вопрос
вопрос - почему:)

у меня такое бывало иногда после очередных обновлений старого доброго каспера.
   Teria
 
9 - 01.08.19 - 22:14
То, что не удается файл создать - это вроде как понятно. Но какой файл он пытается создать и в какой папке? Разворачивает где-то сам ДБФ? А где?
   Asmody
 
10 - 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
для начала ты так и не сказал - какой антивирус.
и не сказал, пробовал ли ты его(антивирус) отключать.
это при условии, что больше ничего с компом и с системой ты не делал.
   H A D G E H O G s
 
13 - 01.08.19 - 22:56
Я думал, я видел все в этой жизни., но нет. Есть еще темные закоулки разума, куда лучше не заглядывать.
   Teria
 
14 - 02.08.19 - 08:22
Спасибо за ответы всем. Про антивирус не спрашивали, спросили - отвечаю стоит КИС (Каспер). Про разжевывание о временном файле - спасибо большое. Буду копать в этом направлении. Про Подход и механизм - я согласен по дурацки сделано, но как изменить не знаю. После решения текущей задачи с огромным удовольствием приму советы как сделать и расскажу все: как и почему сделал и главное что должно быть.
Сразу если можно вопрос от совершенного "чайника": если создан индексный файл и ДБФ открыт с ним - то при добавлении записи индексный файл автоматом поменяется? А то вот я каждый раз его пересоздаю ... :((
   Teria
 
15 - 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 при этом. И сразу такие вопросы отпадут.
   Asmody
 
18 - 02.08.19 - 09:47
У dbf, если мне не изменяет, ограничение на размер файла 2 Гбайт. Если вы там реально что-то большое собрались хранить, имейте ввиду.
   Teria
 
19 - 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". Смотрим в книгу ... понимаем как хотим :)
   Провинциальный 1сник
 
20 - 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
и да, каспер в принципе до конца не отключается. каспер только сносится. знаешь, как курочка снесла дедушке яичко.
напрочь.

вот так же и каспер.
напрочь.
   Teria
 
23 - 02.08.19 - 11:16
К каспером понятно. Но он не мешает создавать CDX на этой базе с другого компа. Сейчас он запущен везде, и на моем компе CDX файл успешно создается. И на резервной копии с запущенным касперским с моего компа все работает. (Возможно пока, так уже было - восстанавливалось и ломалось.) А с другого компа не работает!!!
Я понимаю (теперь), что такую мистику создал я сам - вчера была перезапись многих записей ДБФ с постоянным пересозданием индексного файла. И я понял, да, спасибо, как изменить программу. Но как это исправить сейчас...
В файл только добавляются записи и просматриваются. Не сжимаются.
"если ты НЕ будешь каждый раз (с каждым новым элементом, с каждым чихом) удалять и заново создавать cdx, то и временные файлы по идее не должны использоваться. "
Да, но один то раз придется создать этот файл, а он с рабочего компа не создается!
А хранить в ДБФ мы решили, так как это данные создаваемые по требованию контролирующих органов, они должны храниться в электронной форме, может потребоваться их отправка без основной базы, ну и файловая база 1С допускает 4 гига объем файла. На серверную перейти не можем, вот и экономим заодно - 4 Гига быстро наберутся.
   Провинциальный 1сник
 
24 - 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 я выгружал информацию в файл ДБФ по причине того, что умел работать с ДБФ и еще не умел работать с таблицей значений.
   Teria
 
27 - 02.08.19 - 11:46
Сейчас база основная 1 Гиг. Когда к 3 Гигам подойдет и этот файл будет 0,5 Гига - я думаю это существенно. Да и требования контролирующих органов - хранить в электронной форме - предполагают отдельное использование.
Но все ваши рекомендации приняты к сведению. Буду стараться сделать без ДБФ, и не пересоздавая CDX если все же с ДБФ.

А СЕЙЧАС ЧТО ГДЕ ОЧИСТИТЬ, ЧТОБЫ СОЗДАТЬ CDX ФАЙЛ?!!!
   hhhh
 
28 - 02.08.19 - 12:02
(27) чего вы тогда хренью страдаете? 3 гига - это ограничение на одну таблицу. В принципе файловые базы бывают объемом и 20 и 30 Гиг, без проблем. 1 ГИГ - это считается пустая база, с каким-то минимумом данных. Выкиньте вы эти свои ДБФ, не позорьтесь.
   Teria
 
29 - 02.08.19 - 12:12
Хорошо, выкину конечно. Но потом. Просто нужно время, чтобы выработать новую концепцию, новые внутренние документы, а потом изменить программу.

Хотелось бы получить совет как сейчас исправить ...
   hhhh
 
30 - 02.08.19 - 12:15
(26) я тоже работал с dbf, но на 7.5. Когда появилась 7.7 и в ней появились таблицы значений, это был праздник.
 
 Рекламное место пустует
   Гость из Мариуполя
 
31 - 02.08.19 - 12:19
(27) а сейчас..хм.. это уже другой вопрос.
надеюсь, ты уже убрал в программе удаление и создание заново cdx при каждом чихе?
и у тебя теперь что, не создается cdx только в самый первый раз?
хм.. если с одного компа cdx создается, а с другого нет - может посмотреть настройки региональных стандартов? Может у тебя одна винда (не)локализованная, а другая принудительно русифицированная?
а индексируешь по каким полям? типа текстовые типа неограниченной длины?

на крайний случай первый раз создать файл cdx с того компа, на котором создается и больше его не удалять.
   Провинциальный 1сник
 
32 - 02.08.19 - 12:22
(30) Не, праздник это 1с++ и ИндексированнаяТаблица) А с обычной ТЗ в семерке работать не очень интересно в плане быстродействия поиска. Иногда быстрее было в dbf с индексами данные хранить)
   hhhh
 
33 - 02.08.19 - 12:30
(32) не, меня в семерке ТЗ никогда не подводила. Ну иногда приходилось какую-то вторую ТЗ мутить, для поиска в первой ТЗ. Вот в восьмерке, там ТЗ начали реально тормозить, поэтому и сделали там ТЗ с индексами.
   Провинциальный 1сник
 
34 - 02.08.19 - 12:31
(33) Это вы просто ТЗ в качестве кэша не использовали.. с десятками тысяч элементов)
   Teria
 
35 - 02.08.19 - 12:46
Ключ: два числа (целых) и дата. Винда вся стандартная: десятка коробочная или предустановленная. Так же и Семерка. Создание CDX - убираю, но это не пять минут. Да, потом, если что создам с другого компа. Спасибо за идею, она и ко мне тоже в голову пришла. Но вот сейчас бы исправить, чтобы люди не пугались. А некоторые чтоб не ругались. Обновить то получится только ночью скорее всего.
   Teria
 
36 - 02.08.19 - 12:50
А как в ДБФ сделать текстовое поле неограниченной длины?
А то в этом и причина привязки новой записи к старой (о чем в начале писал). У меня только 255 символов поле, а текст нужно хранить и маленький (30 символов) и большой (3-4 тыс. символов). Вот и делаю к одной записи дополнительные.
Вы только не бейте сильно, ну не специалист я - все методом тыка - в какой сайт ткнулся, так и сделал. Что не успел найти - накрутил сам.
   Провинциальный 1сник
 
37 - 02.08.19 - 13:19
(36) Формат dbf поддерживает мемо-поля, условно "неограниченной" длины (на самом деле до 64кБ), но в 1с штатно мемо-поля не поддерживаются объектом xbase. Только через odbc если работать.  Но не советую.
   Провинциальный 1сник
 
38 - 02.08.19 - 13:19
+(37) Да, и мемо-поля нельзя использовать в индексе, соответственно по ним невозможен быстрый поиск.
   Teria
 
39 - 02.08.19 - 13:24
Ну вот, по этому получается единственный вариант делать к одной основной записи до 20 и больше дополнительных?
   Провинциальный 1сник
 
40 - 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 и больше дополнительных" - как видишь не единственный.
Более оптимальный - да.
Единственный - нет.
   Teria
 
43 - 02.08.19 - 14:40
Спасибо.
Про варианты - понял.
Про паузу - это все равно изменение кода - так что, конечно, делаю неудаляемый CDX.
Просто думал на 3-4 часа привести систему в рабочее состояние (без изменения кода).
Типа темпы почистить ... только какие... все мне известные я вроде почистил...
   Salimbek
 
44 - 02.08.19 - 15:19
(43) Вместо своего xbase подключаешь 1SQlite, создаешь один раз ручками файл и индексы на нем. Потом в него перебрасываешь все твои данные. В том числе и длинные строки. Далее без проблем пользуешься.
   Salimbek
 
45 - 02.08.19 - 15:20
(43) А если хочешь прямо сейчас - тогда только запускать Process Explorer с фильтром по твоей 1С-ке и смотреть - за какими файлами и куда он лезет. Как система упадет - смотреть - где произошел сбой и почему.
   Сияющий в темноте
 
46 - 02.08.19 - 21:08
это,а разве в dbf файл строки не до 64к писать можно?
там же два байта длины?
и это,для кеша в памяти есть обьект scripting.dictionary,который умеет шустро возвращать то,что нужно.
   Teria
 
47 - 03.08.19 - 16:29
Спасибо всем кто помогал. Ситуация пока разрядилась, хотя проблема не решена. Проблема обойдена.
Как и говорил - я убрал постоянное пересоздание индекса. То, что при этой операции выдает ошибку создания временного файла, это не страшно - один раз на другом компе создал и все.
Но пришлось убрать и сжатие базы после пометки на удаление записей. Так как при этом тоже создается временный файл (пытается создать и выдает ошибку). Ну тоже иногда буду на другом компе сжимать.
Так что, если кто-то подскажет все же, где файлы временные создаются и что им мешает, то было бы хорошо.
Process Explorer-ром попробую конечно, если будет возможность. Компьютер то, на котором это все происходит, занят постоянно. А на другом может быть не показательно. Но попробую.
Про 1SQlite спасибо за информацию - на досуге (если он будет) изучу и постараюсь использовать.
Ну и в большой перспективе планируется вообще писать новую конфигурацию, так как в этой много несуразиц (она досталась мне по наследству - не я ее изначально делал). Так что там постараюсь отказаться от внешних файлов.
Еще раз спасибо всем.
   Teria
 
48 - 03.08.19 - 16:38
Пы.Сы. А вообще интересно - переделал программу, сделал кнопку для изначального создания индексного файла. Запускаю, жму - создался. Начинаю вносить и понимаю, что забыл восстановить в базе ту информацию, по которой надо ДБФ заполнять. Восстанавливаю. Жму еще раз на создание индекса (в общем то не нужно, но чтоб проверить) и пожалуйста - не создается.
Сажусь на другой комп, создаю - создается. Начинаю заполнять - там сбой из-за сжатия. Устраняю сжатие, начинаю все сначала - конечно на основном компе не создается индексный файл. Иду на тот второй комп - тоже не создается. Переношу файл в другую папку - создается.
Или так (это в одну из промежуточных проб) кнопкой в программе - не создается, а кнопкой в обработке, с таким же кодом, вызванной в этой же программе (!) - создается.
Чудны дела твои Билли...
   hhhh
 
49 - 03.08.19 - 19:03
(48) ну файл же монопольно должен быть занят. Значит на другом компе не освободил. Не все вышли из базы.
   Teria
 
50 - 05.08.19 - 08:56
Ситуация, когда двое обращаются к файлу, редко, но бывает. Там ошибка другая "перед использованием надо открыть базу" или что-то подобное. Ну и главное - тут была аварийная ситуация и никто из пользователей этот механизм не использовал! Я ж сидел на том компьютере, на котором они могут это делать.
Да и на тестовой базе (о которой никто не знал) это тоже возникало.
Так что тут что-то другое.
   Конструктор1С
 
51 - 05.08.19 - 09:01
(0) "Для уменьшения объема базы часть данных хранится в файле dbf"

А в чём профит-то?
   Провинциальный 1сник
 
52 - 05.08.19 - 09:06
(51) В иррациональном страхе упереться в ограничение размера базы.
   Teria
 
53 - 05.08.19 - 09:58
Извините, честно, не понимаю вашего скепсиса.
В 2016 году мой предшественник провел глобальное удаление старых документов и связанных с ними проводок, чтобы база смогла работать. Так как объем файла уперся в 4 Гига. И база отказывалась работать.
Теперь я экономлю 500 мег. в перспективе. Это полгода - год дополнительной работы без такого же удаления документов (читай: истории операций, которая очень желательна). На серверную версию, как я уже говорил перейти было бы здорово, но невозможно по финансовым и организационным причинам.
Так почему вы это критикуете? (Не способ экономии, а сам факт вынесения данных в отдельный файл. Данных -  нужных только для контролирующих органов, а не для постоянной работы).
   Провинциальный 1сник
 
54 - 05.08.19 - 10:07
(53) Потому что в восьмерке ограничения в 4 Гб не на размер базы, а на размер одной таблицы в базе. А сама база может быть хоть 20 гигов - вполне реально.
   Teria
 
55 - 05.08.19 - 10:07
И кроме того, я уже сказал - планируется глобальная переделка конфигураци, фактически написание с нуля. Там я постараюсб отказаться от отдельных файлов. Вопрос мой все же был не в том: хорошо ДБФ или плохо, а в том как решить конкретную ошибку: "CODEBASE ERROR Error #: -20 creating file temporary working file".
Косвенный способ подсказали - Process Explorer. Да постараюсь сделать. (Только как мне помнится эта прога показывает процессы а не создаваемые ими файлы, но я, возможно, ошибаюсь. Изучу этот вопрос).
Хорошо было бы, если бы кто-то разбирающийся в 1С и ее работе с ДБФ подсказал, где и какой файл она создает.
   Провинциальный 1сник
 
56 - 05.08.19 - 10:08
+(53) И кстати, размер одной таблицы в dbf меньше, чем 4 Гб в базе. У cdx ограничение на размер индексируемого файла в 4Гб, и никуда не денешься от этого.
   Провинциальный 1сник
 
57 - 05.08.19 - 10:09
поправка (56) У cdx ограничение на размер индексируемого файла в 2 Гб
   Провинциальный 1сник
 
58 - 05.08.19 - 10:09
(55) "Хорошо было бы, если бы кто-то разбирающийся в 1С и ее работе с ДБФ подсказал, где и какой файл она создает."
Какой скажешь, такой и создает. Сама она ничего не делает, её надо попросить хорошенько)
   Teria
 
59 - 05.08.19 - 10:09
Понятно, т.е. убирая данные другой таблицы я ничего не сэкономлю... Да... Долго доходило. Ну чтож все же дошло.
   Teria
 
60 - 05.08.19 - 10:11
(58) А про какой же временный файл она говорит - не могу создать?
   Провинциальный 1сник
 
61 - 05.08.19 - 10:13
(60) Ну без кода сложно вообще что-либо сказать. Приведите фрагмент, где создается или открывается этот dbf.
   Teria
 
62 - 05.08.19 - 10:21
Вот код. Это уже новый для однократного создания индексного файла. Он тоже выдавал ошибку
--------------------------------------------------------
///Сформируем имя файла ДБФ

ФайлДБФ = ПапкаБазы() + "dbf\ank2018.dbf";
///И индекса

ФайлИндекса = СтрЗаменить(НРег(ФайлДБФ),".dbf",".cdx");
    
    
///Проверим наличие файла базы

ФайлНаДиске = Новый Файл(ФайлДБФ);
Если НЕ ФайлНаДиске.Существует() Тогда
    Сообщить("Не удалось создать оглавление файла с анкетами (индексный файл) так как не найден сам файл с анкетами");
        Возврат;
КонецЕсли;
    
    
///Создадим объект работы с ДБФ и откроем его сразу

Если АнкетаДБФ = Неопределено Тогда
    АнкетаДБФ = Новый XBase;
    АнкетаДБФ.Кодировка = КодировкаXBase.ANSI;
КонецЕсли;
    
Если НЕ АнкетаДБФ.Открыта() Тогда 
    АнкетаДБФ.ОткрытьФайл(ФайлДБФ); 
КонецЕсли;
    
        
///Проверяем и удаляем старый файл индекса если уж вызвали создать то создаем.

ФайлНаДиске = Новый Файл(ФайлИндекса);
Если ФайлНаДиске.Существует() Тогда
    УдалитьФайлы(ФайлИндекса);
КонецЕсли;
    
АнкетаДБФ.Индексы.Добавить(
       "INDEX_KD",  // имя индекса

       "STR(KodKli)+DTOS(NachPer)+STR(VidAnk)",// выражение индекса

       Ложь  // уникальность создаваемого индекса

   );
    
///Создаем сам файл индекса

Попытка
    АнкетаДБФ.СоздатьИндексныйФайл(ФайлИндекса);
Исключение
    Сообщить("Не удалось создать оглавление файла с анкетами (индексный файл), ошибка ДБФ: " + ОписаниеОшибки());
КонецПопытки;
    
АнкетаДБФ.ЗакрытьФайл();
   Salimbek
 
63 - 05.08.19 - 10:22
(60) Да кто его знает - что там у тебя творится? Можешь, например, установить пользователю Квоту на использование дискового пространства, а он себе накидает суперважных видосиков и всю квоту выжрет, вот и не сможет под этим юзером твоя ДБФ-ка работать.
   МимохожийОднако
 
64 - 05.08.19 - 10:23
Проверь жёсткий диск. Пересоздай папку с базой и данными. С таким сталкивался для файловых.
   Teria
 
65 - 05.08.19 - 10:25
Так она бы никогда не смогла, а она то работает то нет.
Как будто стек какой то заполнился. И по чуть-чуть уходит - освобождает место для одного двух созданий временного файла,потом забивается и снова ... и снова.
   Teria
 
66 - 05.08.19 - 10:27
(64) А папку просто удалить и создать с тем же именем? Или с другим?
Просто на это имя папки многое завязано, я даже и не знаю все, что завязано. Если среди ночи какой-нибудь процесс эту папку не найдет - грустно будет.
 
 Рекламное место пустует
   Провинциальный 1сник
 
67 - 05.08.19 - 10:36
А не может быть проблема связана с многопользовательским доступом? Дело в том, что xbase в 1с не умеет многопользовательский доступ. Только монопольный.
   Teria
 
68 - 05.08.19 - 10:39
(67) Нет. Я уже говорил выше. Только я один работал с базой ДБФ (это точно!) и ошибка была.
   Salimbek
 
69 - 05.08.19 - 10:41
(67) Да может быть, конечно.
(66) А что мешает вообще не напрягаться, и поставить любой нормальный sql-сервер, хоть Мускул, хоть Постгре и пиши в него хоть терабайты данных. Только дизайн приложения для начала бы поменять, типа: процедуры-заглушки: ПодключитьБД, ЗаписатьДанные, ПрочитатьДанные. А внутри - сейчас делаешь все как есть через ДБФ, параллельно - делаешь тестовую сборку с sql, как тест отработает также как и ДБФ - просто меняешь код в этих процедурах и все. Пользователи ничего и не заметят.
   Teria
 
70 - 05.08.19 - 10:41
Ну и еще раз напомню, что база ДБФ сейчас работает. С единожды созданным (на другом компе) файлом CDX.
Так что вопрос остался скорее теоретический чем практический.
   Teria
 
71 - 05.08.19 - 10:44
(69) Мешает, честно говоря, мое незнание работы 1С с sql-сервером. Т.е. долго буду разбираться и так же по незнанию могу подобные косяки навертеть. Ну и время нужно, конечно, на разработку новой обработки.
   Провинциальный 1сник
 
72 - 05.08.19 - 10:56
(70) Возможно что объект xbase глючный в определенных режимах. Просто примите как есть. А на будущее - лучше не использовать его. Это древний костыль, оставленный для возможности обмена данными со сторонними системами, а не для хранения данных.
   Teria
 
73 - 05.08.19 - 11:23
(72) Хорошо.
   Сияющий в темноте
 
74 - 05.08.19 - 12:08
временные файлы создаются в директории указаннлй через специальный ключ,а также заданной переменными окружения TEMP и TMP,для процесса их можно поменять на свою папку,и будет работать,как надо.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.