Меню

Ошибка создания каталога 1с при сохранении документа

Shokoladnaj

3 / 3 / 2

Регистрация: 11.03.2014

Сообщений: 162

1

Создание каталога/каталог не обнаружен

08.11.2017, 16:41. Показов 26814. Ответов 7

Метки нет (Все метки)


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

Создание каталога/каталог не обнаружен

{Обработка.ВыгрузкаАлиментовЧерезКБ.Форма.ФормаУпр авляемая.Форма(342)}: Ошибка при вызове метода контекста (Записать)
Эксп.Записать(ИмяФайлаКБ,КодировкаТекста.OEM);
по причине:
Каталог не обнаружен ‘E:Usersds_bvsDocumentsБрезицкийБПС_Н.txt’

Эксп.Записать(ИмяФайлаКБ,КодировкаТекста.OEM);//вот до сюда доходит, и на след шаге ошибка
ФайлВыгрузки=Новый Файл(ИмяФайлаКБ);

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
&НаСервере
Процедура ВыгрузкаНаСервере()
    СпискиЛюдейПоБанкам=СформироватьСпискиЛюдейПоБанкамНаСервере();
    Для каждого эБанк Из СпискиЛюдейПоБанкам Цикл
        Если эБанк.Значение[0].Банк.ФорматнаяСтрокаВыгрузки="Приор банк" Тогда
            ВыгрузкаПриорБанк(эБанк.Значение[0].Банк,эБанк);
            Продолжить;
        КонецЕсли; 
        
        Если эБанк.Значение[0].Банк.ФорматнаяСтрокаВыгрузки="Белинвестбанк" Тогда
            ВыгрузкаБелинвестбанк(эБанк.Значение[0].Банк,эБанк);
            Продолжить;
        КонецЕсли;
 
        Эксп=Новый ТекстовыйДокумент; 
        ИмяФайла=СокрЛП(эБанк.Значение[0].Банк.ИмяФайлаВыгрузки);
        Если ИмяФайла="" Тогда
            ИмяФайла="zarplata";
        КонецЕсли; 
        ИмяФайлаКБ = КаталогВыгрузкиКлиентБанк + ""+ИмяФайла+СокрЛП(НомерВедПеречисления)+".txt";
        ФайлПроверки = Новый Файл(ИмяФайлаКБ);
        Если ФайлПроверки.Существует() Тогда
            Эксп.Прочитать(ИмяФайлаКБ);
        КонецЕсли;                                                                                                   
        Если Эксп.КоличествоСтрок() > 0 Тогда
            СчетчикСтрок=1;
            ПОка СчетчикСтрок<=Эксп.КоличествоСтрок() Цикл
                Эксп.УдалитьСтроку(СчетчикСтрок-1);
            КонецЦикла;   
            //Эксп.Очистить();
        КонецЕсли;
        ТзСортировки=Новый ТаблицаЗначений;
        ТзСортировки.Колонки.Добавить("ПолучательПлатежа");
        ТзСортировки.Колонки.Добавить("ЛицевойСчет");
        ТзСортировки.Колонки.Добавить("Выплачено");
        ТзСортировки.Колонки.Добавить("Признак");
        НомерСчет=1;
        Для Каждого СтрЗП Из эБанк.Значение Цикл  
            Если СтрЗП.Выплачено>0 Тогда
                //Эксп.ДобавитьСтроку(ВремСтр+Строка(НомерПП)+" "+ВРег(Строка(Стр.Физлицо))+ВремСтр2+стр.ЛицевойСчет+ВремСтр3+ВВыплачено);
                //НомерПП=НомерПП+1;
                
                НоваяСтрока="";
                СтрокаВыполнить="";
                физлицо=СокрЛП(СтрЗП.ПолучательПлатежа.Наименование);
                ЛицевойСчет=СокрЛП(СтрЗП.ЛицевойСчет);
                Сумма=СтрЗП.Выплачено;
                НомерПП=Строка(НомерСчет);
                ПозицияПробела=Найти(ЛицевойСчет," ");
                Если ПозицияПробела=0 И Найти(СтрЗП.Банк.ФорматнаяСтрокаВыгрузки,"КодВклада")>0 Тогда
                    НомерСчет=НомерСчет+1;
                    Продолжить;
                КонецЕсли; 
                КодВклада=СокрЛП(Лев(ЛицевойСчет,ПозицияПробела-1));
                ЛицевойБезКодаВклада=СокрлП(Прав(ЛицевойСчет,СтрДлина(КодВклада)+2));
                
                СтрокаВыполнить="";
                ФорматнаяСтрока=СокрЛП(СтрЗП.Банк.ФорматнаяСтрокаВыгрузки);
                //"СтрокаВыполнить=" "+НомерПП+" "+ВРЕГ(физлицо)+" "+ЛицевойСчет+" "+СтрЗаменить(Формат(Сумма,"ЧДЦ=2; ЧРД=."),"*","")"
                //СтрокаВыполнить=НомерПП+ЛицевойСчет+ВРЕГ(физлицо)+","+СтрЗаменить(Сумма,"*","") 
                
                //СтрокаВыполнить="   1"+Лев(Физлицо+"                                               ",46)+Лев(ЛицевойСчет+"           ",11)+Прав("          "+СтрЗаменить(Сумма,"*",""),10)+".00 1"
                Попытка
                    Выполнить(ФорматнаяСтрока);
                Исключение
                    Сообщить("Неверно задана форматная строка в банке, проверьте правильность форматной строки выгрузки и повторите попытку");
                    Возврат;
                КонецПопытки;
                Эксп.ДобавитьСтроку(СтрокаВыполнить);
                НомерСчет=НомерСчет+1;
            КонецЕсли;
            
        КонецЦикла;
        Эксп.Записать(ИмяФайлаКБ,КодировкаТекста.OEM);//вот до сюда доходит, и на след шаге ошибка 
        ФайлВыгрузки=Новый Файл(ИмяФайлаКБ);
    КонецЦикла;
 
КонецПроцедуры

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Эксперт 1С

434 / 305 / 92

Регистрация: 28.05.2014

Сообщений: 1,247

08.11.2017, 17:42

2

Shokoladnaj, База серверная?



1



1117 / 671 / 195

Регистрация: 22.04.2013

Сообщений: 5,078

Записей в блоге: 1

08.11.2017, 21:25

3

Цитата
Сообщение от Shokoladnaj
Посмотреть сообщение

Каталог не обнаружен ‘E:Users

ну так на сервере нет такого каталога, видать.
даже если база файловая, то там всё равно может не быть диска Е
ошибка именно в этом. у вас адрес — на вашем диске, на клиенте.
а процедура — на сервере, и диск/каталог ищет на сервере, соответственно. а его там нет.



1



3 / 3 / 2

Регистрация: 11.03.2014

Сообщений: 162

09.11.2017, 09:52

 [ТС]

4

Yulunga, Вот именно, что есть такой диск, на толстом клиенте же все работает, хотя код аналогичный, вы имеете ввиду, что процедуру на клиенте нужно делать?

Добавлено через 6 минут
Phil, Да, серверная

Добавлено через 6 минут
Yulunga, а как сделать, что-бы не на сервере искала?



0



Эксперт 1С

434 / 305 / 92

Регистрация: 28.05.2014

Сообщений: 1,247

09.11.2017, 09:58

5

Лучший ответ Сообщение было отмечено Shokoladnaj как решение

Решение

Shokoladnaj,
Там где физически расположена база нет такого пути: E:Usersds_bvsDocumentsБрезицкий

Добавлено через 1 минуту
Выполняйте на клиенте, либо на сервере выгружайте во временные файлы, а потом результат перебрасывайте на клиент.

Добавлено через 1 минуту
Посмотрите, есть куча примеров как на УФ создавать и выгружать в файл txt



1



3 / 3 / 2

Регистрация: 11.03.2014

Сообщений: 162

10.11.2017, 16:09

 [ТС]

6

Phil, окей, например сделаю не на сервере, но вот вопрос не по теме, но как списокЗначений с сервера на клиент передать, там ошибка отсутствует отображения типов, пробую и через структуру и через хранилища данных?

Добавлено через 1 час 12 минут
Все, вопрос решен, можно передать текстовый документ на клиент, и там уже записать



0



1117 / 671 / 195

Регистрация: 22.04.2013

Сообщений: 5,078

Записей в блоге: 1

10.11.2017, 16:31

7

капец. какой текстовый документ. а нукася не будет доступа к записи на диск, что тогда ?
структура, массив, соответствие.



1



3 / 3 / 2

Регистрация: 11.03.2014

Сообщений: 162

13.11.2017, 09:27

 [ТС]

8

Yulunga, Да, передается структура, структура состоит из пути и текстового документа.

Добавлено через 1 минуту
Yulunga, если не будет доступа на диск, тоесть проверка какая-то нужна?



0



Содержание:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ваша задача обычно решается таким кодом:

&НаКлиенте
Процедура ВыбратьФайл(Команда)

    НачатьПодключениеРасширенияРаботыСФайлами(Новый ОписаниеОповещения(
        "ОповещениеПодключенияРасширенияРаботыСФайлами", ЭтотОбъект));

КонецПроцедуры // ВыбратьФайл()

&НаКлиенте
Процедура ОповещениеПодключенияРасширенияРаботыСФайлами(Подключено, 
    ДополнительныеПараметры) Экспорт

    Если Подключено Тогда

        Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
        Диалог.Заголовок = НСтр("ru='Выберите файл загрузки в формате (*.xls, *.xlsx, *.xml, *.csv, *.txt)'");
        Диалог.ПолноеИмяФайла = "";
        Диалог.МножественныйВыбор = Ложь;
        Диалог.ПредварительныйПросмотр = Истина;
        Диалог.Фильтр = "Формат (*.xls;*.xlsx;*.xml;*.csv;*.txt)|*.xls;*.xlsx;*.xml;*.csv;*.txt|"; 
        Диалог.Показать(Новый ОписаниеОповещения("ОповещениеВыборФайла", ЭтотОбъект));

    Иначе

        // Сообщить что не удалось подключить расширение

    КонецЕсли;

КонецПроцедуры // ОповещениеПодключенияРасширенияРаботыСФайлами()

&НаКлиенте
Процедура ОповещениеВыборФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт

    Если ВыбранныеФайлы = Неопределено Тогда
        Возврат;
    КонецЕсли;    

    Если ВыбранныеФайлы.Количество() = 1 Тогда

        НачатьПомещениеФайла(Новый ОписаниеОповещения("ОповещениеВыборФайлаНаСервере", ЭтотОбъект), 
            , // Можно указать строковой реквизит тогда адрес будет так же в этом реквизите 
            ВыбранныеФайлы[0], 
            Ложь, 
            УникальныйИдентификатор);

    Иначе
        // Сообщить что можно выбрать только один файл
    КонецЕсли;

КонецПроцедуры // ОповещениеВыборФайла() 

&НаСервере
Процедура ОповещениеВыборФайлаНаСервере(Результат, Адрес, ВыбранноеИмяФайла, 
    ДополнительныеПараметры) Экспорт

    ПутьКФайлу = ПолучитьИмяВременногоФайла();
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес);
    ДвоичныеДанные.Записать(ПутьКФайлу); 

    ТекстовыйДокумент = Новый ТекстовыйДокумент();
    ТекстовыйДокумент.Прочитать(ПутьКФайлу);
    Содержимое = ТекстовыйДокумент.ПолучитьТекст();

    УдалитьФайлы(ПутьКФайлу);

КонецПроцедуры // ОповещениеВыборФайлаНаСервере() 

P.S. Прикрепил ссылку на пример обработки.

Описание ошибки:
Обнаружена при разработке обработки для изменения содержимого файла формата 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)

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка создания папки gta 5 rp
  • Ошибка создания d3d устройства dota 2