Многопользовательская работа с DBF #676231


#0 by Rounder
Поставлена задача: есть некий файл DBF в сетевой папке, с ним уже работает группа пользователей. Мне из 1С нужно откорректировать/добавить запись. Это возможно средствами 1С?
#1 by butterbean
у тебя проблема только с доступом??
#2 by Rounder
У меня пока нет проблемы - и нет возможности испробовать. Спрашиваю может кто решал подобную задачу.
#3 by butterbean
непонятен твой вопрос — если файл занят то записать ты не сможешь, если свободен, то сможешь :-)
#4 by Aleksey
эээ а они в чём работают в блокноте с этим файлом? А ты уверен что посе твоей правки программа с которой "уже работает группа пользователей" не вылетет по ошибки? А ты уверен что та программа не использует хитрые индексы, и в результате она тоже не скажет ой
#5 by Rounder
Они из ПО написанного на FoxPro 2.6 работают.
#6 by Rounder
и я не в чем не уверен - я прошу поделиться опытом если он был.
#7 by Aleksey
Сейчас кофе допью и погадаю на гуще
#8 by akronim
Вообще после открытия дбф "средствами 1С" ничем другим этот файл не откроешь даже на просмотр - будет ошибка доступа. Так что я отношусь скептически к этой затее. Вот она - наглядная польза кофе в офисах. Гадание на бараньих кишках или даже на внутренностях жертвенного голубя в условиях современного офиса несколько затруднительно, да и соседи не поймут.
#9 by MKZM
так можно получить доступ не только с помощью иксбазе
#10 by MKZM
с адо например, там можно и в многопользовательском режиме.
#11 by akronim
Да, не подумал. Пагубная практика XBase, да Ну если можно - хорошо.
#12 by Rounder
Спасибо за наводку. Остальным спасибо за участие и гадание :)
#13 by kiruha
100 лет уже работают через драйвер FoxPro Все пропустил
#14 by kiruha
Точнее где то в 2003 spock начал использовать драйвер фокса для многопольз доступа к dbf
#15 by Rounder
Что я делаю не так? Соединение = Новый COMОбъект("ADODB.Connection"); Соединение.Open("Provider=vfpoledb.1;Exclusive=No; Data Source=" + ПутьКБД + ";Collating Sequence=MACHINE;"); Если остановиться по точке останова после строки ДБФ = Соединение.Execute("Select * from " + ПутьКБД + " "); то при открытии dbf-ки другим приложением ругает на то, что нет доступа. Но ведь в инициализации объекта я указал Exclusive=No. Что здесь не так?
#16 by Rounder
Актуально.
#17 by Infsams654
надо попробовать через другой драйвер. И почему бы не подсоединиться не через COMОбъект("ADODB.Connection"), а прямо к внешнему источнику в 1С и работать через ВнешнийИсточникДанныхТаблицаМенеджер
#18 by Rounder
про внешний источник данных не подумал. Нужно посмотреть.
#19 by Ёпрст
пробуй через Microsoft.ACE.OLEDB.12.0 он не лочит файло
#20 by kiruha
Или попробуй поставить TABLEVALIDATE=0; в строке подключения
#21 by ПесняПроЗайцев
clipper умел ставить блокировки, фокс тоже. а хбасе по-моему нет.
#22 by Jump
Возможно. Т.е запись ты сможешь добавить если в этот момент файл не залочен. А будет ли другая программа корректно работать с базой после этого сказать невозможно, надо разбираться в принципах работы программы и что для нее эта запись которую ты откорректировал. В общем файл *,dbf это просто формат хранения, и в данном случае мало отличается от файла *.txt
#23 by Infsams654
не, в формате заголовка dbf точно есть поле для многопользовательского использования, однако, как с ним работает 1С - хз. При чем + на уровне записей
#24 by kiruha
Причем здесь 1С , если подключение идет через сторонний драйвер. Фокс прекрасно работает в многопольз режиме, а если что залочено - надо смотреть в голове
#25 by Infsams654
+ , согласен. Неправильно выразился. Не 1С, а драйвер, см.
#26 by Rounder
#27 by Rounder
Актуально
#28 by Ёпрст
Соединение = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+КаталогИБ+";Extended Properties=dBase IV;Persist Security Info=False";
#29 by Rounder
а как проверял что не лочит если не секрет? можно код и последовательность действий?
#30 by Rounder
опа - вроде не лочит. У меня не было в строке параметра Persist Security Info
#31 by Rounder
Сча еще перепроверю.
#32 by Ёпрст
открываешь файло в редакторе - делаешь чтение из 1с-ины.. всё считывается.
#33 by Ёпрст
в противном случая, адо уже сразу ошибку дает - что не может открыть файло.
#34 by Ёпрст
Ежели в редакторе, файло монопольно открыть, то запрос по адо тоже болт пишет.
#35 by Rounder
Так у меня и работало когда фал открывал в VFP например не в монопольном режиме, то из 1С с любым провайдером я к нему подключался и модифицировал спокойно. Не работала обратная ситуация: когда я не мог открыть из 1С файл в немонопольном режиме, т.е. когда я его открывал первым и уже пробуя открыть файл в VFP получал аксесс денайд.
#36 by Rounder
Вчера по твоему совету попробовал Microsoft.ACE.OLEDB.12.0 и использовал стандартную строку подключения: Соединение.Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ПутьКБД + ";Extended Properties=dBASE IV;User ID=Admin;"); И с такой строкой файл лочило. С той что ты сегодня подсказал - вроде работает как нужно. Сейчас еще разберусь что это за параметр. Спасибо за помощь.
#37 by Ёпрст
всё открывается
#38 by Rounder
Теперь да. Я в об этом написал.
#39 by Ёпрст
можешь еще на всякий.. вот так: Соединение = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+КаталогИБ+";Mode=Share Deny None;Extended Properties=dBase IV" т.е указать ему Mode
#40 by Ёпрст
тут видать, в фоксе(любой проге) нужно тоже подключаться с таким же User ID .. можно еще и пароля задать
#41 by Rounder
я смотрел в параметрах соединения - Mode устанавливается по умолчанию в Share Deny None
#42 by Ёпрст
но лучше, всё же вот с такой строкой: Соединение = "Provider=VFPOLEDB.1;Data Source="+КаталогИБ+";Collating Sequence=MACHINE;TABLEVALIDATE=0"; фокс всё же поприятнее с дбф дружит, да и индекс можно задействовать в запросе.
#43 by Ёпрст
тоже не лочит
#44 by Rounder
У меня лочит.
#45 by Ёпрст
не верю :)
#46 by Rounder
К сожалению нет возможности доказать :) Но это именно так. Лочит.
#47 by Rounder
Кстати - да. Вот и еще проблема нарисовалась. Microsoft.ACE.OLEDB.12.0 не лочит, но и индексный файл не обновляет :(
#48 by Ёпрст
Соединение = "Provider=VFPOLEDB.1;Data Source="+КаталогИБ+";Mode=Share Deny None;Collating Sequence=MACHINE;TABLEVALIDATE=0"; вот так спецом проверил - ничего не лочится.. при Mode=Read тоже
#49 by Ёпрст
попробуй еще vfp переставить отсюда
#50 by Rounder
Все - окончательно разобрался. Тормозил я при проверке на лок/не лок. Ты прав. Не лочится. Бляха - столько времени потерял и у других отнял. Еще раз спасибо.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С