Ошибка создания файла xbase 1с
Метод записать просто игнорируется, без всяких ошибок. Просто не пишет и все! В чем может быть проблема?
Проблема с записью реквизитов формы
Здравствуйте. Вот возник такой вопрос: есть документ, в котором присутствует группа радиокнопок.
Xbase (v 7.7)
Создаю объект следующим способом "ДБФ_дикт = СоздатьОбъект("XBase");" Путь к файлу выбираю.
Xbase (v 7.7) по сети
Когда отрываю файл на локальной машине, все работает нормально, но вот когда нужные файл расположен.
Проблема с записью в бд
Есть запрос, $quer = mysql_query("SELECT * FROM $userstable"); $nu = mysql_num_rows($quer); .
К сожалению и с коротким именем не прокатило. Проблема в чем то другом.
текБаза = Новый XBase();
текБаза.ОткрытьФайл(АдресПМ+"config\acc.dbf",АдресПМ+"config \acc.cdx");
сч=1;
Пока сч < 10 Цикл
текБаза.Добавить();
текБаза.GLN = сч;
текБаза.Записать();
сч=сч+1;
КонецЦикла;
Создает только одну запись, остальные молча игнорирует!
текБаза = Новый XBase();
текБаза.ОткрытьФайл(АдресПМ+"config\acc.dbf",АдресПМ+"config \acc.cdx");
сч=1;
Пока сч < 10 Цикл
текБаза.Добавить();
текБаза.GLN = сч;
сч=сч+1;
КонецЦикла;
текБаза.Записать();
а так сколько сделает?
тоже 1 запись, только последнюю. Насчет размера файла пока не знаю, вполне может быть и два гига, если получится записать больше 1 строки :huh:
//надо так
ока сч < 10 Цикл
текБаза.Добавить();
текБаза.GLN = сч;
сч=сч+1;
текБаза.Записать();
КонецЦикла;
текБаза.Записать();
текБаза = Новый XBase();
текБаза.ОткрытьФайл(АдресПМ+"config\acc.dbf");
сч=1;
Пока сч < 10 Цикл
текБаза.Добавить();
текБаза.GLN = сч;
текБаза.Записать();
сч=сч+1;
КонецЦикла;
а ежли вот так, без индекса? Мож надо использовать Переиндексировать() перез записью?
Прикольно, без индекса кажется записал. Это что ж после добавления каждой записи надо переиндексировать. В перспективе то задача состоит в том, чтобы открыть базу, попробовать найти запись (тут без индекса как я понимаю никак?) и если такой записи нет, то добавить. А если надо добавить 10 записей, то надо 10 раз переиндексировать.
Я обычно искал запись ДБФ через перебор строк.
Насчет индексов глянь ДобавитьИндекс()
СоздатьИндексныйФайл()
Индексный файл создает, тут все нормально. Проблема, если открывать потом с этим файлом - тогда не пишет. А если без него - то пишет. А запустить поиск по базе без открытия индексного файла я ведь не смогу?
Ключ там как атрибут. Походу надо наверно так
текБаза = Новый XBase();
текБаза.ОткрытьФайл(АдресПМ+"config\acc.dbf",АдресПМ+"config \acc.cdx");
сч=1;
Пока сч < 10 Цикл
текБаза.Добавить();
текБаза.GLN = сч;
ТекБаза.Ключ = сч;// хотя там в добавить индекс написано, что должно соответствовать параметрам ДБФ, индекс по другому выглядит.
текБаза.Записать();
сч=сч+1;
КонецЦикла;
Пардон - это я ошибся. На семерке вот такой код работает;
Процедура Сформировать()
текБаза = СоздатьОбъект("XBASE");// у тебя текБаза = Новый XBase();
Если ТекБаза.Открыта() = 1 Тогда
ТекБаза.ЗакрытьФайл();
КонецЕсли;
ТекБаза.ДобавитьПоле("GLN",1,15,2);
ТекБаза.ДобавитьИндекс("ID","GLN",1,0,);
текБаза.СоздатьФайл(КаталогИБ() +"\acc.dbf",КаталогИБ()+"\acc.cdx");
Если ТекБаза.Открыта() = 0 Тогда
текБаза.ОткрытьФайл(КаталогИБ() +"\acc.dbf",КаталогИБ()+"\acc.cdx");
КонецЕсли;
сч=1;
Пока сч < 10 Цикл
текБаза.Добавить();
текБаза.GLN = сч;
текБаза.Записать();
сч=сч+1;
КонецЦикла;
Проблема с записью
Всем привет, есть микрофон bm-800 с фантомным питанием и внешней звуковухой. Есть трудности при.
Проблема с записью в файл
Коллеги, подскажите в чем проблема. Вот скрипт,для записи данных в файл. В результате его роботы.
Проблема с записью в файл
Не умею работать с выводом в файл в С++, как сделать чтобы записывало результат в txt, это.
Парни выручайте. имеется платформа 8.2.18.82 (клиент-сервер)пытаюсь уже сделать по простому:
В общем такая ситуация - если на локальной базе то все пучком, если в клиент-серверном то в файле только одна строка с последним значением 980. Весь мозг сломал уже, почему так?? Глюк платформы?
*Глупый вопрос на всякий случай. Файл где смотришь? На сервере? Или на локальной машине?
(5) Zab, Чистил я кэш и на сервере и на клиенте. а отладчик. добавил после Записать()
КолЗап=ДБФ.КоличествоЗаписей() так КолЗап в каждом проходе равно 1 :(
(6) hogik, ради интереса пробовал, не помогло.
(7) ant1773, на сервере конечно.
Такое впечатление что Добавить() отрабатывает только в начале цикла. Думаю седня всетаки снести .82 и воткнуть .96 релиз.
Это как же тормозить будет на большом файле?
ИМХО - может ошибка платформы? По коду у Вас все корректно в (1).
(12) ant1773,Я имел в виду что заполнение будет на клиенте как в (1),так отрабатывает нормально, без открыть-закрыть файл))) Мне тоже показалось что ошибка платформы, но сейчас нет возможности менять платформу на сервере, много баз висит и соответственно клиентов кним O_o дело будущего))
тут появилась подобная проблема, если у кого еще возникнет - решается проблема
Замечу, что у объекта XBase что в 1С 7.7, что в 1С 8.х есть особенность, что нужно или устанавливать флаг "Автосохранение", или при добавлении каждой записи сохранять программно.
В свое время когда внедряли самописную базу чтоб была доступна внешним пользователям через веб-клиент сошлись на мнении что разработчики платформы 1С 8.х не хотят больше поддерживать старую технологию XBase и ошибки на новых "средах" так и валятся или вообще не работает?! Но как отказаться то, если аппаратура dbf требует? Или стороннее ПО куда не влезть и не изменить?
(15) kostyaomsk, берете на сайте мелкомягких VFP OLEDB Provider и пишите дбф-ки на здоровье как на "большой" сервер.
(16) sssss_aaaaa_2011, да я понял уже что если есть глюки может стоит обратиться к сторонним компонентам и работать через них. Всего то 1 строчка кода подключить, правда минус нужно регистрировать на сервере.
Система 1C:Предприятие 8 позволяет создавать, читать и записывать DBF-файлы. Возможности по работе с DBF-файлами мало изменились по сравнению с версией 7.7, но немного изменилась техника работы с полями и индексами: теперь они создаются через соответствующие свойства-коллекции.
Запись DBF
Следующий фрагмент программы создает DBF-файл с двумя полями и выгружает в него справочник Номенклатура
можно в цикле указать ФайлВВР.Записать(); для записи изменений каждой записи файла, либо воспользоваться методом ФайлВВР.АвтоСохранение = Истина; при описание объекта XBase, тогда каждая запись автоматически будет сохраняться.
Чтение DBF
Чтение DBF-файла производится еще проще:
Удаленные записи
Файлы DBF устроены таким образом, что удаление записи не приводит к физическому удалению записи из файла. Запись просто помечается на удаление и пропускается при переборе. Таким образом, размер файла остается прежним.
Чтобы физически удалить все помеченные на удаление записи, нужно применить метод Сжать. Средства встроенного языка позволяют работать с записями, помеченными на удаление, перебирать их и даже отменять пометку на удаление.
Индексы
Для упорядочивания содержимого DBF-файла и поиска в нем по значению одного или нескольких полей применяется механизм индексов. Его применение можно сравнить с сортировкой картотеки по определенному признаку (совокупности признаков). Однако, в отличие от картотеки, файл может иметь сразу несколько индексов, и, соответственно, являться упорядоченным одновременно по нескольким признакам.
Индексы хранятся в индексном файле, причем один индексный файл может содержать сразу несколько индексов. Рекомендуется для одного файла DBF иметь один индексный файл, в котором хранятся все индексы этого файла.
Ограничения
Основное назначение объектов XBase – организация экспорта-импорта информации в/из внешних файлов формата DBF.
Объекты XBase не поддерживают поля типа memo.
Объекты XBase поддерживают только монопольный доступ к файлам. Для проверки открыт файл в другой программе или нет, можно использовать:
XBase-объекты поддерживают индексные файлы в формате CDX. Однако, использование внешними программами (например, FoxBase) индексных файлов, созданных с помощью объектов XBase, так же, как и использование объектами индексных файлов, созданных внешними программами, не рекомендуется из-за возможной несовместимости версий.
- Последние изменения: 19.03.2013 15:31
- — 3V
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Рис.1 Ошибка режима доступа к файлу 1С
…а также «Ошибка совместного доступа к файлу» 1С 8.3.
Рис.2 Ошибка совместного доступа к файлу
Само название ошибки уже говорит пользователю о случившемся: в первом случае – о нарушении прав доступа. Такое сможет случиться, когда пользователь скопировал информационную базу, подключил, а при открытии по сети всплыла такого рода ошибка с указанием сетевого пути к объекту. В этом случае, первое, на что сразу надо обратить внимание – на права доступа, щелкнув правой кнопкой на свойства объекта. Нажав кнопку «Общий доступ», проверить настройки.
Рис.3 Нажав кнопку «Общий доступ», проверить настройки
Доступ пользователя Windows, который запустил сеанс программы 1С, должен быть не только на чтение, но и на запись.
Рис.4 Доступ пользователя Windows, который запустил сеанс программы 1С, должен быть не только на чтение, но и на запись
Если база располагается на локальном ПК, необходимо проверить на закладке «Безопасность», что для пользователя установлено разрешение на запись или не стоит запрет на запись.
Рис.5 Разрешение прав
Предупреждение о проблемах с совместным доступом с указанием пути к конкретному объекту, кроме сбоя сетевых настроек, может быть следствием предустановок брандмауэра, антивирусных программ, которые стопорят сетевые подключения. Необходимо открыть их настройки и посмотреть, не будет ли 1С в списке заблокированных программ. Если это так, следует удалить ее из списка или добавить файл информационной базы 1С в исключения, предотвратив его блокировку.
Рис.6 Блокированные и разрешенные приложения
Если при возникновении ошибки система указывает на временные файлы, например C:\Users\. \AppData\Local\Temp\, то очистка кэш может решить проблему с ошибкой.
Высока вероятность появления такой ошибки – при одновременном запуске двух программ (ЗУП и Бухгалтерии), одна из которых была базовой версией. Когда программы запустили по очереди, ошибка не появлялась.
Для решения проблемы с ошибкой доступа, как видите, потребуется немного времени, главное – понять причину и исключить ее повторение.
Протестируйте качество нашей работы - получите первую консультацию в подарок.
Одним из самых распространенных форматов баз данных до сих пор остается формат DBF. И неумение работать с ним из 1С – серьезное ограничение профессиональных навыков для любого специалиста. Тем более изучение теории и практика по этому вопросу потребует совсем немного времени. К тому же работа с DBF файлом никаких дополнительных библиотек не требует – все инструменты встроены в платформу 1С 8.3.
Чтение, создание DBF и запись в данный формат
Вся работа с DBF в 1С происходит с помощью специального объекта – xBase. Рассмотрим основные действия с файлами, начав с чтения из конкретного DBF. В первую очередь необходимо расположить файл базы данных в каталоге, куда есть доступ у пользователя. Код для считывания данных в 1С достаточно прост:
- Указываем путь к базе в формате DBF;
- Создаем объект для взаимодействия с файлом, открываем его и устанавливаем указатель на первую строку с данными;
- В цикле обходим всю базу и производим действия с элементами. В данном случае просто отражаем их на экране пользователя;
- Закрываем файл.
Вторая часто встречающаяся задача по взаимодействию с объектом – выгрузка DBF из 1С 8.3. Здесь намного легче создать конечный файл нужного формата программно, чем использовать дополнительно программное обеспечение. Этот алгоритм в 1С тоже достаточно прост и состоит из нескольких строк кода:
- Создаем объект XBase;
- Определяем кодировку нового файла. Существует кодировка для Windows – ANSI и OEM предназначенная для DOS;
- Необходимо описать все колонки будущего файла DBF, указав их тип;
- Укажем каталог, в котором будет происходить создание DBF и запишем итоговый файл.
Рис.1 Расположение файлов DBF
После того как мы создали файл нужного формата, потребуется выгрузка в DBF данных. Программируя этот процесс, помните о том, что данные ИБ находятся на сервере. Чтобы записать имеющиеся данные из 1С необходимо к предыдущему коду добавить следующий алгоритм:
- Получаем информацию из справочника;
- В цикле последовательно добавляем по 1строчке и записываем;
- Закрываем файл и проверяем, что запись прошла удачно.
Это основы работы с данным форматом. Существуют и другие способы открыть из 1С DBF, но xBase остается самым простым по синтаксису и пониманию. Поняв, как осуществляется простейшая выгрузка и загрузка из DBF, можно приступать к более сложным элементам, например, использованию индексов для поиска, удалению или изменению конкретных записей в DBF, а также применению технологии ADO.
Читайте также: