Ошибка копирования файлов файл не обнаружен 1с

Глючит КопироватьФайл()

Я
   Nicole

26.03.09 — 12:17

Пару недель назад выдавалась ошибка «Каталог не обнаружен». Прямо перед использованием КопироватьФайл() проверяю Файл.Существует() — существует. В момент копирования — ошибка «Каталог не найден». Через несколько дней ошибка сама пропала.

Теперь «Ошибка доступа к файлу». Никто в копируемом файле не сидит. Копируемый файл находится на локальном диске. Всем пользователям даны все права и разрешения.

Это КопироватьФайл() такая глючная или мне пойти сисадмина потрясти на предмет чего-нибудь?

   ТелепатБот

1 — 26.03.09 — 12:17

Книга знаний: Права пользователей в 1С:Предприятии 8.0

   Nicole

2 — 27.03.09 — 13:22

Up.

   Salvador Limones

3 — 27.03.09 — 13:27

Смотри-ка, буквально на днях было — v8: Глюк ли это?!

Там есть пара решений, может тебе и поможет чего-нибудь.

   Nicole

4 — 27.03.09 — 14:39

(3) Ой, спасибо, счас гляну…

   Nicole

5 — 31.03.09 — 15:40

(3) Увы, ни одно из решений мне не подошло. «Ошибка доступа к файлу» исчезла, вместо нее — снова «Каталог не обнаружен». Хотя тут же проверяю Файл.Существует() — существует. Мама дорогая…

   Rie

6 — 31.03.09 — 15:41

(5) А каталог, _куда_ копируется файл — существует?

   Nicole

7 — 31.03.09 — 15:52

(6) Я проверяю это прямо перед операцией копирования…

Файл = Новый Файл(ШаблонДоговор.ФайлШаблона);

Если Файл.Существует() Тогда

  КопироватьФайл(ШаблонДоговор.ФайлШаблона, ФайлДоговор);            

КонецЕсли;

   Nicole

8 — 31.03.09 — 15:54

(6) Ой, простите — вы имели в виду «КУДА». Но выдается ошибка «Каталог не обнаружен D:1СШаблонырамочный договор.doc», а это путь — «ОТКУДА».

   НЕА123

9 — 31.03.09 — 16:06

можно так попробовать:

  КопироватьФайл(СОкрЛП(ШаблонДоговор.ФайлШаблона), ФайлДоговор);            

а лучше в отладчик.

   Nicole

10 — 31.03.09 — 16:09

так…. кажется, в (5) есть доля истины… в данном конкретном случае каталога, куда копируется файл, действительно не существует — его перенесли… но в ошибке «Каталог не обнаружен» был указан путь к каталогу, откуда копируется файл, что и ввело меня в заблуждение… прикольно…

   Salvador Limones

11 — 31.03.09 — 16:10

(10) Чего-то я нифига не понял. О_О

   НЕА123

12 — 31.03.09 — 16:11

(11) нету Еремы, а 1С валит на Фому.

   Rie

13 — 31.03.09 — 16:12

(10) Как проверили существование файла, который копируется, — так проверьте и существование каталога, куда копируется, и создайте этот каталог, если нужно.

   Nicole

14 — 31.03.09 — 16:13

(13) Да, теперь все идет… но веришь же сообщениям об ошибке…

  

Nicole

15 — 31.03.09 — 16:13

(13) Спасибо.

Независимо от того, куда вы едете — это в гору и против ветра!

Описание ошибки:
Обнаружена при разработке обработки для изменения содержимого файла формата XML в серверной базе 1С 8 в режиме управляемого приложения. При тестировании на сервере ошибка не возникала. Проявила себя при работе на рабочем месте пользователя.

Найденные решения:

1С 8 ошибка файл не обнаружен при чтении файла

По факту ошибка возникала при выполнении метода «Прочитать()» для объекта «ТекстовыйДокумент». Как было отмечено, при тестировании работы обработки непосредственно на сервере данной ошибки не возникало. Она проявила себя уже при попытке работы на другом рабочем месте. Обработка разрабатывалась для конфигурации 1С: Комплексная автоматизация 8, ред. 2, которая работает в режиме управляемого приложения — это необходимо отметить. Т.к. это проясняет причины возникновения проблемы.

По привычке разместил операции по чтению содержимого текстового файла и извлечению его содержимого на стороне сервера — см. «&НаСервере» перед процедурой «ОбрабткаНаСервере()». Клиент-серверная архитектура платформы 1С: Предприятие 8.3, казалось бы, к этому обязывала. 

1с 8.3 при чтении файла пишет, выводит ошибку: Файл не обнаружен

В итоге получалось, что платформа на клиентском рабочем месте искала файл по указанному пути на сервере, где развернут сервер 1С: Предприятия 8 исходя из директивы «&НаСервере», а не на рабочем компьютере, где была запущена обработка.

Но, как оказалось позже — конструктор «Новый ТекстовыйДокумент», методы «Прочитать()», «ПолучитьТекст()» — все они доступны не только на стороне сервера, но и на стороне тонкого и толстого клиента. Поэтому замена директивы «&НаСервере» на «&НаКлиенте» решила проблему.

1С 8 Ошибка при вызове метода контекста (Прочитать)

Если по какой-то причине окажется, что я не совсем ясно объяснил суть проблемы, то вот еще обсуждение на форуме mista.ru, где данная пробелма обсуждается несколько другими словами: 1с 8.3 при чтении файла пишет: Файл не обнаружен

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

02-11-2020

Журавлев А.С.
(Сайт azhur-c.ru)

Пытаюсь на 8.3 в управляемых формах на клиенте прочитать файл: Выдает ошибку: {ВнешняяОбработка.Загрузка_приходных_накладных_в_1С_8_2.МодульОбъекта}: Ошибка при вызове метода контекста (Прочитать)     Текст.Прочитать(ВыбФайл); по причине: Файл не обнаружен ‘C:ВО_200114.txt’ Но файл там 100% есть! Помогите

, взял отладчик, и в том месте где идет Прочитать(ВыбФайл), скопировал значение ВыбФайл  в буфер обмена, потом вставил в командную строку и нажал энтер => файл открылся.

не гарантирует наличия файла там, где его ищут, а не там, где ты его положил

процедура сия у тя случаем не на сервере ли выполняется ?

, реально! положил сюда  nbnbхламВО_200114.txt => прочитал. А почему с моего диска С не хочет читать?

потому что на сервере нет твоего диска

диск С скорее всего есть а вот файла скорее всего нет

, тоже пишет что не найден… ,, так получается он ищет диск С не моего компьютера, а на сервере, где база sql крутится? хотя я запускаю 1с через толстого клиента со своего компа..

«C:ВО_200114.txt». Да с безопасностью такого решения все плохо.

Пришли весь код функции которая у тя читает файл

Если команда выполняется на сервере, то вполне логично, что и файл ищется на сервере. И скорее не на сервере SQL, а на сервере 1С.

уже давно в корень дисков класть ничего нельзя…

Ну все понятно. Серверная процедура.

, вы реально здесь телепаты… обработка получения имени пути у меня на клиенте выполняется, а вот прочитать я его пытаюсь из модуля обработки, код которого выполняется на сервере… Спасибо большое, никак не привыкну к управляемым формам….

Чаще, синтакс — помошника читать надо ))

>МодульОбъекта это непропиваемый опыт и внимательность, а не телепатизм ;)

От блин, а я не заметил ))

твоим следующим вопросом, по-идее, должно быть такое — почему со своего компьютера файл читается, а с компьютера Афанасия Мухтаровича — нет. Я подожду :)

, блин, так я еще и подсказку оказывается изначально уже дал))) , это тут не причем

конечно не причем. Т.к. ты не задал этот вопрос, т.к. у тебя все хорошо и с этой ситуацией ты пока не столкнулся :) Я повторюсь — я подожду :)

взял попкорн уселся поудобней :)

, Интригант? о_О вот, смотрите в , там «nbnbхламВО_200114.txt» — это и есть компьютер Григория. И все отлично считалось.

оказалось не 100%, а 0% :)

Ну правильно, сервер свою папку «хлам» видит, пусть даже по сетевому пути.

без разницы, все равно он ее видит.

, то есть вы хотите сказать, что те папки, которые видны с сервера будут считываться, а те что не видны  — нет. Это я понимаю. Решение вижу только два: открывать им доступ с сервера или выполнять метод Прочитать «&наклиенте».

В вэб-клиенте вопрос: Передать файл на сервер nbnbхламВО_200114.txt ?  Ура я нашел модальное окно, в режиме использования модальности — не использовать. 8.3.4.389

откатываемся обратно по окнам? :)

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Дорабатывал обработку загрузки прихода из Excel. Обработка изначально была не моя, все хорошо работало, но внезапно клиент в облаке переехал с файловой базы на SQL, потому что файловая тормозила.

И тут 1С начала писать, что файл не обнаружен. Оказывается, код загрузки из Excel был написан только под толстого клиента. Пришлось дорабатывать стандартным образом:

//На клиенте
ДД = Новый ДвоичныеДанные(ПолноеИмяФайла);//На сервере
ПолноеИмяФайла = ПолучитьИмяВременногоФайла(«XLS»);
ДД.Записать(ПолноеИмяФайла);
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПолноеИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст);

Доработал и забыл. Как вдруг новая напасть — попросили доработать обработку, начинаю ее отлаживать, а она не считывает данные из XLSX файла.

Причем выдает ошибку доступа к временному файлу:

Я попробовал записывать во временный каталог, но это не принесло результата:

ТекКаталог = ПолучитьИмяВременногоФайла();
СоздатьКаталог(ТекКаталог);
ПолноеИмяФайла = ТекКаталог + «» + Новый УникальныйИдентификатор() + ТипФайла; //ПолучитьИмяВременногоФайла(«XLS»);ДД.Записать(ПолноеИмяФайла);Ф = Новый Файл(ПолноеИмяФайла);
Сообщить(ПолноеИмяФайла » Существует: » + Ф.Существует());ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПолноеИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст); //, ТипФайлаТабличногоДокумента.ODS);

Причем 1С писала, что файл существует:

Тогда почему же она не может его считать? Задачу нужно было решить срочно, причем прикладную логику я уже сделал, а споткнулся на мелочи. Я уже было хотел перейти на локальный компьютер для разработки (тем более что на сервере из соображений быстродействия отключена отладка). Но тут мне пришла мысль впервые попробовать использовать не временные файлы, а потоки:

ПотокДанных = Новый ПотокВПамяти();
ЗаписьДД = Новый ЗаписьДанных(ПотокДанных);
ЗаписьДД.Записать(ДД);
ЗаписьДД.Закрыть();
ПотокДанных.Перейти(0, ПозицияВПотоке.Начало);
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПотокДанных, СпособЧтенияЗначенийТабличногоДокумента.Текст, ТипФайлаТабличногоДокумента.ODS);
ПотокДанных.Закрыть();

Увы, при этом выдавалась все та же ошибка доступа. Кроме того, в документации я посмотрел, что из памяти можно считывать не все форматы, а только MXL и ODS. Бред, конечно, но такова 1С.

И тут до меня дошло попробовать поменять расширение на XLSX:

//на клиенте
ДД = Новый ДвоичныеДанные(ПолноеИмяФайла);
Ф = Новый Файл(ПолноеИмяФайла);
ТипФайла = Ф.Расширение);//на сервере
ТекКаталог = ПолучитьИмяВременногоФайла();
СоздатьКаталог(ТекКаталог);
ПолноеИмяФайла = ТекКаталог + «» + Новый УникальныйИдентификатор() + ТипФайла;
ДД.Записать(ПолноеИмяФайла);ДД = Новый ДвоичныеДанные(ПолноеИмяФайла);
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ПолноеИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст);

И всё заработало. У 1С, как обычно, беда с диагностикой ошибок. Она пишет совсем не ту ошибку, которая вызывает проблему. Доступ к файлу есть, просто формат файла 1С определяет по расширению, а не содержимому файла.

Время факт: 0,5 час. На поиски решения проблемы.

Содержание:

1.       Неверно указанный путь к папке или файлу

2.       У пользователя недостаточно прав доступа

Ошибка «Каталог не обнаружен» в 1С

Ошибка «Каталог не обнаружен» в 1С  

1.    Неверно указанный путь к папке или файлу

1С:Предприятие 8.3 – это довольно сложная система, поддерживающая множество инструментов и механизмов. Одним из этих механизмов является работа с каталогами (папками).

Работа с каталогами необходима для хранения временных файлов, импорта и экспорта данных. Если вдруг посреди рабочего дня пользователю необходимо выгрузить какую-то информацию из базы, но система «ругается», мол, каталог не обнаружен, это может стать серьезным стоп-фактором и даже полностью остановить какой-либо бизнес-процесс, что обязательно приведет к убыткам компании. Соответственно, доступ к каталогам всегда должен предоставляться без каких-либо ограничений.

Наиболее частая причина возникновения этой ошибки программы 1С – неверно указанный путь к папке или файлу.  

2.    У пользователя недостаточно прав доступа

Чуть реже ошибка доступа к каталогу встречается, когда у пользователя недостаточно прав доступа к тому или иному каталогу.

Представим ситуацию: пользователь подключился при помощи RDP к удаленной базе, и решил сохранить документ сразу на свой компьютер.

Если при интернет подключении к удаленному рабочему столу пользователь не расшарил (не дал доступ) свои локальные ресурсы, то на сервере они будут не доступны, и возможности сохранить данные на них не будет. Соответственно при попытке указать путь к локальному каталогу, система будет выдавать ошибку «Каталог не обнаружен».

Для решения данной ошибки в 1С:Предприятие, версии 8, будет достаточно указать, какой диск должен быть доступен на удаленном рабочем столе во время работы.

Подключение локального диска к удаленному рабочему столу

Подключение локального диска к удаленному рабочему столу

А если каталог доступен, но данная ошибка все равно появляется, стоит проверить права доступа к каталогу. Если для текущего пользователя отсутствуют права на чтение или запись, то необходимо их добавить.

Проверка прав доступа к каталогу

Проверка прав доступа к каталогу

Специалист компании «Кодерлайн»

Айдар Фархутдинов

Понравилась статья? Поделить с друзьями:
  • Ошибка копирования не найден путь
  • Ошибка копирования файлов с длинными именами
  • Ошибка копирования на съемный диск
  • Ошибка копирования файлов при установке диска
  • Ошибка копирования контейнера указаны неправильные флаги криптопро