Возник вопрос, а как, например, Excel обрабатывает файл ~$ИМЯ_ФАЙЛА.xlsx создаваемый им же при открытии файла ИМЯ_ФАЙЛА.xlsx ?
Понятно, что в нормальном варианте этот временный файл удаляется после нормального выхода/закрытия файла ИМЯ_ФАЙЛА.xlsx Но как происходит обработка в случае если по какой-либо причине этот временный файл остался.
Как пример, файл ИМЯ_ФАЙЛА.xlsx находится в папке ПАПКА_1 и в то время пока файл ИМЯ_ФАЙЛА.xlsx был открыт на редактирование папку ПАПКА_1 скопировали в другое место - внутрь папки ПАПКА_2. И вот теперь в папке ПАПКА_2/ПАПКА_1/ находятся и файлы ИМЯ_ФАЙЛА.xlsx и ~$ИМЯ_ФАЙЛА.xlsx - как будет вести себя Excel при отркытии этого файла ИМЯ_ФАЙЛА.xlsx в новой папке ?
У меня, например, Excel не пишет что файл кем-либо занят и главное при закрытии Excel этот временный файл не удаляется.
Это не совсем временный файл в понимании временного. Это файл развязки, который создается для того чтоб показать что файл занят, как в монопольном так и в режиме совместного доступа. Естесвенно если его скопировали то он уже не связан ни с каким файлом.
я условно его назвал временным, просто для того чтобы называть его как-то. Можно назвать файл блокировки, но насколько я понимаю файл от MS помимо факта блокировки содержит так же и изменения, которые производил пользователь в файле и если произошел сбой и вылетел офис, то при повторном запуске этого файла MS предложит восстановить файл.
Так вот вопрос - почему MS не реагирует на наличие такого одноименного файла блокировки если, как привел в примере выше, такой файл был скопирован вместе с самим офисным файлом? Он же ведь смотрит по имени файла, а имена не поменялись.
думаю MS не дураки и предусмотрели связь не только по имени, но и по иным признакам, Да даже по имени если, то хранится полный путь и это однозначно определяет что файл не к этому файлу относится.
По имени я имею ввиду, что скрытый файл лежит там же где и редактируемый файл, поэтому путь не задействован. Или Вы предполагаете, что внутри этого скрытого файла указан еще и путь ? Ппроверил... файл содержит только логин 2 раза и никакой другой информации.
Причем при открытии файла, например, Книга1.xlsx, то будет создан ~$Книга1.xlsx. И вот если сохранить отдельно этот ~$ файл и выйти из Excel, то ~$Книга1.xlsx удалится. Вроде все нормально.
Теперь копируем, сохраненный отдельно файл ~$Книга1.xlsx обратно к файлу Книга1.xlsx и открываем вновь в Excel этот файл. И вот этот ~$Книга1.xlsx не изменяется дата/время последней записи, изменения и доступа. Т.е. Excel не создает такой же файл и не меняет имеющийся и при этом внутри Excel не сообщает, что файл занят (тем кто прописан в ~$Книга1.xlsx) и при выходе из Excel не удаляет этот ~$Книга1.xlsx.
ALARMus написал: при этом внутри Excel не сообщает, что файл занят (тем кто прописан в ~$Книга1.xlsx) и при выходе из Excel не удаляет этот ~$Книга1.xlsx.
Excel проверяет, не открыт ли этот "вспомогательный" файл каким-либо приложением. Если не открыт, то этот файл не актуален. В этом случае Excel сам открывает вспомогательный файл и при выходе закрывает, не удаляя. Вероятно, логика разработчиков заключалась в том, что не надо удалять те объекты, которые не ты создал.
Спасибо за ответ. Првильно ли я понял, Вы полагаете, что при открытии файла Книга1.xlsx и уже имеющемся там же файле ~$Книга1.xlsx, который не занят (не открыт, остался там после сбоя) другим приложением, то Excel не только не считает, что файл Книга1.xlsx заблокирован от записи, но так же не использует имеющийся скрытый файл ~$Книга1.xlsx, поэтому при выходе из Excel, этот скрытый файл и не удаляется ?
При этом не появляется другого файла от текущего сеанса открытия этого файла Книга1.xlsx ! По крайней мере в том же месте где файл.
ALARMus написал: но так же не использует имеющийся скрытый файл ~$Книга1.xlsx
Я написал: "Excel сам открывает вспомогательный файл" (~$Книга1.xlsx). Вы можете это проверить. В момент своего эксперимента из #5 с "чужим" вспомогательным файлом, в тот момент, когда Excel открыл основной файл (Книга1.xls), попробуйте удалить вспомогательный файл (~$Книга1.xlsx) другим приложением.
Понятно, а почему если он (Excel) его (~$Книга1.xlsx) использует, то не считает, что файл (Книга1.xls) занят ?
И кстати если файл в сетевом доступе и первый пользователь открыл файл Книга1.xls и создался файл ~$Книга1.xlsx и в этот момент второй пользователь тоже открывает файл Книга1.xls, несмотря на то, что ~$Книга1.xlsx уже создан и не им (вторым) ему выдает оповещение о том, что файл занят (первым пользователем). Но почему-то, в описанном мной в начале случае, никаких сообщений Excel не дает.
написал: Понятно, а почему если он (Excel) его (~$Книга1.xlsx) использует, то не считает, что файл (Книга1.xls) занят ?
Вернемся к #6. Для простоты пока не рассматриваем файлы с режимом совместного доступа.
Первое действие при обнаружении вспомогательного файла (~$Книга1.xlsx). Excel проверяет, не "занят" ли "вспомогательный" файл каким-либо процессом. Если вспомогательнгый файл занят, то выдается предупреждающее сообщение, в котором имя пользователя - конкурента берется из вспомогательного файла.
Если вспомогательный файл не занят, то основной файл (Книга1.xlsx) не открыт в других экземплярах Excel (в том числе, пользователями других компьютеров сети). Но основной файл может быть занят (открыт, заблокирован) в других программах (LibreOffice и т.д.). В этом случае будет выдано предупреждающее сообщение, имя пользователя - конкурента берется из вспомогательного файла (если есть).
Наконец, если не заняты ни основной, ни вспомогательный файлы, то Excel открывает основной файл и "занимает" вспомогательный (блокирует существующий или создает новый). Пользователь работает с основным файлом в монопольном доступе. По окончанию работы вспомогательный файл не удаляется, если он существовал на момент открытия основного файла.
Спасибо. Теперь есть о чем предметно разговаривать с Р7, у них похоже занятость основного файла определяется просто наличием самого по себе вспомогательного файла.
ALARMus написал: Теперь есть о чем предметно разговаривать с Р7,
с ними предметно???? После того как на вопрос о том , как они предполагают работать с данными другой книги был получен ответ с ссылкой на инструкцию , про том что совместимость этого с Excel совсем отсутствует и нет возможнгост так указать диапазон , а также при наборе формулы сослаться на него ... + еще ворох претензий, то предметно с ними можно говорить только о том что команда рубит деньги на ситуации, но даже бесплатный Libre "Бысрее, выше, сильнее".
Просто надо понимать, что все вопросы обрабатывают не кодеры и разработчики, а что-то типа первой линии. И их задача у себя суметь воспроизвести проблему и тогда её фиксировать и отправлять на следующие линии поддержки.
Поэтому чисто по скрипту - дать инструкцию, вдруг этого хватит.
если в концепции заложено Г, то оно и будет Г . Вопрос не в ТП. с продуктом такие ляпы по совместимости , удобству, быстродействию .... что мама не горюй.
бесспорно, но и пройденный путь MS и Р7 столь различен (хотя бы по "возрасту") Так что пока это больше телефонная будка Хотабыча, но когда нет выбора ...