Меню

Ошибка доступа к файлу сбиспараметры xml

H A D G E H O G s, в момент создания файла сервер а не имеет к нему ни какого отношения

вот код

Процедура ВыгрузитьВКаталог() Экспорт

    
    ВыборкаУзлов = ПланыОбмена.Полный.Выбрать();

    Пока ВыборкаУзлов.Следующий() Цикл

        Если Не ВыборкаУзлов.ВыполнятьОбмен Тогда

            Продолжить;

        КонецЕсли;

        
        Если ВыборкаУзлов.Ссылка = ПланыОбмена.Полный.ЭтотУзел() Тогда

            Продолжить;

        КонецЕсли;

        
        НайденныеФайлы = НайтиФайлы(ВыборкаУзлов.КаталогУзла,»Message_»  + «*.xml»);

        
        
        
        //С помощью объектов ЗаписьXML и ЗаписьСообщения выполняем запись изменений

        //для выбранного узла в xml-файл.

        попытка

            Узел = ВыборкаУзлов.Ссылка;

            ЗаписьXML = Новый ЗаписьXML();

            
            если НайденныеФайлы.Количество()<10 тогда

                
                ИмяФайлаСообщения = Узел.КаталогУзла + «Message_» +

                СокрЛП(ПланыОбмена.Полный.ЭтотУзел().Код) +

                «_» + СокрЛП(Узел.Код) +»(«+»0″+Строка(НайденныеФайлы.Количество()) +»)»+».xml»;

                
                
            Иначе

                
                ИмяФайлаСообщения = Узел.КаталогУзла + «Message_» +

                СокрЛП(ПланыОбмена.Полный.ЭтотУзел().Код) +

                «_» + СокрЛП(Узел.Код) +»(«+Строка(НайденныеФайлы.Количество()) +»)»+».xml»;

                
            КонецЕсли;

            ЗаписьXML.ОткрытьФайл(ИмяФайлаСообщения);

            ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();

            ЗаписьСообщения.НачатьЗапись(ЗаписьXML,Узел);

            ПланыОбмена.ЗаписатьИзменения(ЗаписьСообщения);

            ЗаписьСообщения.ЗакончитьЗапись();

            ЗаписьXML.Закрыть();

            
            //Затем создаем новое письмо, прикрепляем к нему полученный xml-файл и

            //отправляем по адресу, указанному в реквизите ЭлектронныйАдрес узла.    

            
            
            Если Константы.ВыводитьСообщенияОбмена.Получить() Тогда

                Сообщить(«ОБМЕН: Сообщение обмена для узла » + Узел.Наименование +

                » отправлено!», СтатусСообщения.Информация);

            КонецЕсли;

        Исключение

            Сообщить(«Обмен не выполнен.Ошибка : «+ОписаниеОшибки());

            
        КонецПопытки;

        
        
        //УдалитьФайлы(ИмяФайлаСообщения);

    КонецЦикла;

    
    
    
КонецПроцедуры

В этой статье мы расскажем об ошибке доступа к файлу 1с. Как решить возникшую проблему, что это за баг и еще немного об этом.

Ошибка доступа к файлу 1C 8.3

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

Нет ни одной программы в современном мире, как бы хороша она не была без ошибок и проблем. Такое случается и с нашим приложением. В ряде случаев виноват в этом криворукий программист. Многие проблемы вы не сможете решить без его участия, но некоторые, вам подсилу и самому.

Ошибка доступа к файлу 1C решение

Причины возникновения

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

Способы решения

По наименованию явившегося бага поймем что происходит с системой — нет прав для доступа к файлу. Такое случается если юзер создает копию базы и подключает ее. Также ошибка бывает в результате попытки открыть файл по сетевому доступу.

Первостепенное что мы делаем в таком случае — проверяем доступ к файлу. Правая кнопка мыши по файлу -> проверяем стоит ли галочка на «Общий доступ».

Ошибка доступа к файлу 1C решение

Ошибка доступа к файлу 1C решение

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

Ошибка доступа к файлу 1C решение

Когда данные к которым нужно получить доступ (база) находится на удаленном (локальном) персональном компьютере — смотрим закладку «Безопасность». В безопасности вы должны убедиться что у пользователя нет запрета на запись.

Ошибка доступа к файлу 1C решение

Предупреждения о проблемах вылазят когда возмущается брандмауэр. Это касается сетевых объектов. Антивирусные программы препятствуют нормальной работе.

Открываем брандмауэр и антивирус и ищем в списке блокируемых программ 1С. Удаляем из списка.

Ошибка доступа к файлу 1C решение

Почистите кеш, ошибки также возникают из-за кеша.

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

Дополнительный способ

Ничего не помогло — воспользуйтесь следующими методами:

Путь к имени файла должен быть допустимым в каталоге отчетов: щелкните вкладку «Вывод». Перейдите на вкладку «Параметры вывода». В поле Имя файла убедитесь, что путь действителен.

Сколько дискового пространства доступно для файла: Откройте Windows Explorer. Выберите Локальный диск (буква диска:), на котором хранится отчет. Щелкните правой кнопкой мыши на локальном диске (буква диска:) и нажмите Свойства. Откроется окно свойств. Проверьте доступное свободное пространство на этом локальном диске.

Убедитесь, что у пользователя есть разрешения на доступ к папке IO_Data: Откройте проводник Windows. Щелкните правой кнопкой мыши основную папку выберите «Свойства».

Перейдите на вкладку «Безопасность». Убедитесь, что у пользователя есть полные права на эту папку и все подпапки. Если вы не можете проверить права доступа, обратитесь к администратору.

Отказано в доступе к указанному файлу. Возможно у вас нет нужных прав

При попытке инсталляции, обновления или запуска какого-либо файла пользователь может получить сообщение об отказе в доступе. Наиболее часто это связано со злокачественным действием вирусных программ, а также с действием антивируса и системного брандмауэра, по ряду причин блокирующих доступ к упомянутому файлу. В данном материале я расскажу, в чём суть ошибки «Отказано в доступе к указанному файлу. Возможно у вас нет нужных прав». А также что необходимо предпринять для возобновления доступу к требуемому цифровому содержимому.

  • Причины ошибки «Отказано в доступе к указанному файлу»
  • Как исправить проблему на своем ПК
  • Способ №1. Решаем ошибку отказа в доступе с вирусами
  • Способ №2. Временно отключаем антивирус и брандмауэр
  • Способ №3. Снятие блокировки Windows, если нет нужных прав
  • Способ №4. Получение разрешения для доступа к файлу
  • Способ №5. Убеждаемся, что файл не удалён или не перенесён
  • Способ №6. Проверяем целостность файловых компонентов системы при отказе в доступе
  • Способ №7. Сброс параметров безопасности на ПК
  • Способ №8. Создаём новый профиль пользователя при отсутствии нужных прав
  • Способ №9. Используем сторонние программы для восстановления доступа к файлу
  • Заключение

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

Среди причин появления проблемы следует отметить следующие:

  • Доступ заблокировал вирусный зловред;
  • Доступ блокирует антивирусная программа или системный брандмауэр;
  • Доступ потерян вследствие случайного сбоя ПК;
  • Пользователь запускает файл не от имени администратора;
  • Запрашиваемый пользователем файл в данный момент недоступен (в частности, это касается доступа к сетевым «расшареным» файлам и папкам, расположенным на других компьютерах);
  • Нужный файл был удалён или перемещён в другое место;
  • Требуемый файл или его ярлык на рабочем столе повреждены;
  • Виндовс по различным причинам заблокировала доступ к упомянутому файлу.Картинка Virus Detected

Читайте также: Ошибка соединения — Нет маршрута в Teamviewer как исправить?

Как исправить проблему на своем ПК

Чтобы решить возникшую ошибку «Отказано в доступе к указанному файлу. Возможно у вас нет нужных прав» необходимо воспользоваться перечнем способов, о которых я расскажу ниже. Но прежде чем воспользоваться приведёнными советами, попробуйте просто запустить нужный файл от имени администратора (наводим на него курсор, жмём на правую клавишу мыши, и выбираем «Запуск от имени администратора»), это может помочь решить возникшую проблему.

Способ №1. Решаем ошибку отказа в доступе с вирусами

В статистическом большинстве случаев главными виновниками возникшей проблемы являются вирусные программы, заблокировавшие пользователю доступ к необходимому файлу. При этом попытки выполнить какие-либо контрдействия в обычном режиме блокируются вирусной программой.

Для разрешения ситуации рекомендую скачать (перенести на компьютер) такие антивирусные инструменты как «AdwCleaner» и «Dr.Web CureIt!», и запустить их в безопасном режиме.

Для осуществления этого выполните следующее:

  1. Выберите перезагрузку компьютера;
  2. При включении компьютера жмите на «F8», чтобы получить доступ к меню безопасного режима;
  3. Загрузитесь в безопасном режиме;
  4. Последовательно активируйте упомянутые антивирусные продукты, и проведите с их помощью очистку системы. После удаления всех найденных ими зловредов перезагрузите ваш ПК.

Способ №2. Временно отключаем антивирус и брандмауэр

Второй наиболее часто встречающейся причиной дисфункции является блокировка доступа к нужному файлу со стороны антивируса ибрандмауэра. Обычно они осуществляют блокировку в ситуации, когда содержимое файла вызывает существенные подозрения на присутствие в нём вредоносного ПО. Если вы твёрдо уверены в содержимом этого файла, тогда попросту временно отключите ваш антивирус и брандмауэр, и попытайтесь запустить нужный файл. В некоторых случаях помогло лишь полное удаление антивирусной программы и внешнего брандмауэра (особенно это касается «Comodo firewall»).

Это может быть полезным: Ошибка файловой системы 2147219196 в Windows 10 как исправить.

Способ №3. Снятие блокировки Windows, если нет нужных прав

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

Кнопка Разблокировать

Способ №4. Получение разрешения для доступа к файлу

В ряде случаев для запуска требуемого файла необходимо обладать правами администратора для запуска нужного файла (как мной уже упоминалось выше). Или входить в группу «Администраторы домена» при условии, что ваш ПК входит в данный домен. При наличии данных условий пользователь получает допуск к данному файлу.

Чтобы получить необходимые разрешения выполните следующее:

  1. Наведите курсор на проблемный файл, нажмите на правую клавишу мыши, в возникшем меню выберите «Свойства»;
  2. В открывшемся меню свойств щёлкнете по вкладке «Безопасность»;
  3. В «Группа или пользователи» щёлкните на имя вашей учётки, чтобы отобразить имеющиеся у вас разрешения для работы с данным файлом;
  4. Если необходимых разрешений недостаточно, нажмите на «Изменить», и установить все необходимые галочки для нужных разрешений, и нажмите на «Ок».Разрешения для группы

Способ №5. Убеждаемся, что файл не удалён или не перенесён

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

Способ №6. Проверяем целостность файловых компонентов системы при отказе в доступе

Нужно запустить командную строку на компьютере от имени администратора, и в ней введите:

sfc.exe /scannow

После окончания проверки перезагрузите ваш ПК.

Рекомендуем к прочтению: Ошибка List Index out of bounds(-1,0) как исправить.

Способ №7. Сброс параметров безопасности на ПК

В ряде случаев поможет полный сброс параметров безопасности системы. Запуск командной строки от имени администратора, и в ней наберите:

Введите следующее:

После этого нажмите ввод и перезагрузите вашу систему.

Команда secedit

Сбросьте параметры безопасности

Способ №8. Создаём новый профиль пользователя при отсутствии нужных прав

В ряде случаев возникновение данной ошибки обусловлено повреждённым профилем пользователя. Рекомендуется создать новый профиль пользователя с административными правами, и уже с него запустить проблемный файл, проблема «отказано в доступе» может быть исправлена.

Способ №9. Используем сторонние программы для восстановления доступа к файлу

Если вирус ранее скрыл нужный файл от видимости (и доступа), рекомендуется воспользоваться сторонним софтом, уровня «Data Recovery Wizard» и аналогов, которые проверят и восстановят доступ к скрытым ранее файлам.

Программа EaseUS Data Recovery Wizard

Заключение

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

Представьте, что вы пытаетесь использовать свое любимое приложение и видите сообщение об ошибке Windows 10. Процесс не может получить доступ к файлу, поскольку он используется другим процессом. Теперь единственным решением, которое придет вам в голову, будет закрытие сообщения об ошибке. К сожалению, этот метод не исправит ошибку на вашем компьютере. Прочтите всю статью, чтобы узнать о способе исправления ошибки на ПК с Windows 10.

Список причин сообщения об ошибке доступа к файлу приведен в этом разделе:

  • Административные привилегии. Вы можете увидеть сообщение об ошибке, если основным папкам для доступа к драйверам не предоставлены административные привилегии.

  • Другой процесс использует порт 80 или порт 443. Если какой-либо другой процесс использует диапазон IP-адресов, порт 80 или порт 443, вы можете столкнуться с этим сообщением об ошибке.

  • Неправильно настроен подраздел реестра ListenOnlyList. Подраздел ListenOnlyList и порт IIS могут быть неправильно настроены в редакторе реестра.

Метод 1: основные методы устранения неполадок

Первый способ исправить процесс не может получить доступ к файлу в Windows 10 — попытаться применить основные методы устранения неполадок, приведенные ниже.

1. Закройте фоновые процессы

Если в фоновом режиме открыто много приложений, вы можете увидеть сообщение об ошибке на своем ПК. Вы можете решить эту проблему, закрыв все приложения, работающие в фоновом режиме, по приведенной здесь ссылке.

2. Запустите приложение от имени администратора

Сообщение об ошибке может появиться, если приложению не предоставлены права администратора; вы можете исправить ошибку, запустив приложение от имени администратора.

1. Нажмите клавишу Windows, введите «Командная строка» и нажмите «Запуск от имени администратора».

Примечание. Приложение командной строки выбрано в пояснительных целях.

2. Нажмите кнопку «Да» в окне запроса контроля учетных записей, чтобы запустить приложение от имени администратора.

Способ 2: изменить диапазон IP-адресов

Процесс не может получить доступ к файлу. Ошибка может возникнуть, если другие процессы используют порт 80 или порт 443. Вы можете попробовать изменить диапазон IP-адресов процесса или установить другой диапазон IP-адресов, чтобы устранить проблему.

1. Запустите командную строку от имени администратора.

2. Введите следующие команды в приложении и нажмите клавишу Enter, чтобы установить другой диапазон IP-адресов для портов TCP.

netsh int ipv4 set dynamicport tcp start=10000 num=1000

3. Введите следующие команды в приложении и нажмите клавишу Enter, чтобы установить другой диапазон IP-адресов для портов UDP.

netsh int ipv4 set dynamicport udp start=10000 num=1000

Способ 3: разрешить конфликт портов IIS

Сообщение об ошибке, в котором процесс не может получить доступ к файлу, поскольку он используется другим процессом, может появиться в случае конфликта с портом IIS и службой HTTP. Вы можете устранить ошибку, изменив подраздел ListenOnlyList в редакторе реестра.

1. Откройте командную строку от имени администратора.

2. Введите команду netstat –ano и нажмите клавишу Enter, чтобы запустить утилиту Netstat.exe и просмотреть список активных подключений.

3. Введите команду net stop http и нажмите клавишу Enter, чтобы остановить службу HTTP на вашем ПК.

Примечание. Служба HTTP будет использовать порт IIS, поэтому перед изменением ключа необходимо остановить эту службу.

4. Введите Y и нажмите клавишу Enter в окне Продолжить эту операцию?

5. Нажмите клавишу Windows, введите «Редактор реестра» и нажмите «Открыть».

6. Перейдите в каталог ListenOnlyList, используя следующий путь расположения в редакторе реестра.

ComputerHKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesHTTPParametersListenOnlyList

7. Щелкните правой кнопкой мыши все IP-адреса по отдельности, отличные от значения по умолчанию 0.0.0.0, и выберите параметр «Удалить», чтобы удалить подраздел.

8. Нажмите кнопку «Да» в окне «Подтвердить удаление значения UAC».

9. Закройте редактор реестра и перезагрузите компьютер.

10. Запустите командную строку, как указано выше, чтобы убедиться, что служба HTTP запущена.

11. Введите команду net start http и нажмите клавишу Enter.

Способ 4: изменить номер порта

Одной из причин, по которой процесс не может получить доступ к файлу в Windows 10, является использование периферийного агента HubCapp. Это стороннее программное обеспечение, которое можно использовать для доступа к драйверам и весам, подключенным к вашему ПК в качестве периферийных устройств. Однако, если номер порта в программном обеспечении конфликтует с другими процессами, вы можете столкнуться с этой ошибкой.

1. Нажмите одновременно клавиши Windows + E, чтобы открыть проводник и перейти к папке периферийного агента HubCapp, используя путь расположения.

C:Program Files (x86)HubCapp Peripheral Agent

Примечание. Перед внесением изменений закройте периферийный агент HubCapp.

2. Дважды щелкните файл setup.xml в списке.

Примечание. Вы также можете создать копию этого файла на рабочем столе и переименовать его в setup.xml_OLD. После изменения файла на рабочем столе вы можете переместить файл в эту папку.

3. Измените значение MinPortNumber с 50000 на 60000 и нажмите клавиши Ctrl+S, чтобы сохранить файл.

4. Откройте периферийный агент HubCapp на своем ПК, чтобы проверить, решена ли проблема.

Часто задаваемые вопросы (FAQ)

Q1. Отвечает ли какое-либо стороннее приложение за сообщение об ошибке доступа к файлу на ПК с Windows 10?

Ответ Периферийный агент HubCapp — это стороннее программное обеспечение, которое может получить доступ к периферийным устройствам, подключенным к вашему ПК. Если номер порта в программном обеспечении настроен неправильно, вы можете увидеть это сообщение об ошибке.

Q2. Почему процесс не может получить доступ к файлу, когда я пытаюсь открыть любое приложение?

Ответ Сообщение об ошибке обычно возникает из-за неправильной настройки номера порта и диапазона IP-адресов. В статье описаны способы изменения номера порта и диапазона IP-адресов для устранения ошибки.

***

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

1С Предприятие 11.4.11. В модуле обмена с сайтом делаю XML выгрузку каталога из 1С на диск. Пишет «Ошибка доступа к каталогу обмена //tsclient/C/webdata
Причина не в системных правах и не в фаерволе, а это какой-то безопасный режим включился, но не нахожу где снять эту галочку. Снятие флажка защиты от опасных действий с админа не помогает.
Проблема появилась после установки модуля обмена с сайтом от Битрикса. До этой установки выгрузки на диск работали корректно. Сейчас же не работает ни в родном модуле, ни в битриксовом.
Если загружаюсь с копии информационной базы, где модуль Битрикса не установлен, там все выгружает.
Подскажите путь к настройкам, в которых искать проблему

62cf3e8a9beec505691179.png
62cf3e8030cfc013576978.png
62cf44786fd0f007422308.png


  • Вопрос задан

    14 июл. 2022

  • 220 просмотров

Пригласить эксперта

Пользователь от имени которого запущена 1С имеет доступ к каталогу, указанному в ошибке?

Как и написал Денис, проверить есть ли доступ к каталогу у юзера операционной системы где запущена 1С, если обмен запускается в фоновом задании это юзер службы Агента 1С;
Безопасный режим можно отключить в списке установленных расширений, для расширения выполняющего обмен

из вида пути //tsclient следует, что делается попытка выгрузки на подключенный диск в сессии rds (клиентское подключение). у сервера, который производит выгрузку, указанный сетевой путь отсутствует однозначно, так как процесс сервера не связан с сессией rds . могу порекомендовать создать общий каталог (shared) к которому имеют доступ обе системы.


  • Показать ещё
    Загружается…

30 янв. 2023, в 08:15

20000 руб./за проект

30 янв. 2023, в 08:09

1000 руб./за проект

30 янв. 2023, в 07:48

500 руб./за проект

Минуточку внимания

66268

Анна Викулина

Руководитель Центра
сопровождения 1С

28 февраля 2019

Обслуживание 1С

Актуальность проверена: 26.01.2023

Получить консультацию
Бесплатно

Обслуживание 1С

Обслуживание 1С

Помощь персонального менеджера, оперативность сдачи отчетности, соответствие законодательству РФ

Иногда пользователь программы 1С может столкнуться с сообщениями программы «Ошибка режима доступа к файлу 1С»…

Рис.1 Ошибка режима доступа к файлу 1С
Рис.1 Ошибка режима доступа к файлу 1С

…а также «Ошибка совместного доступа к файлу» 1С 8.3.

Рис.2 Ошибка совместного доступа к файлу
Рис.2 Ошибка совместного доступа к файлу

Само название ошибки уже говорит пользователю о случившемся: в первом случае – о нарушении прав доступа. Такое сможет случиться, когда пользователь скопировал информационную базу, подключил, а при открытии по сети всплыла такого рода ошибка с указанием сетевого пути к объекту. В этом случае, первое, на что сразу надо обратить внимание – на права доступа, щелкнув правой кнопкой на свойства объекта. Нажав кнопку «Общий доступ», проверить настройки.

Рис.3 Нажав кнопку «Общий доступ», проверить настройки
Рис.3 Нажав кнопку «Общий доступ», проверить настройки

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

Рис.4 Доступ пользователя Windows, который запустил сеанс программы 1С, должен быть не только на чтение, но и на запись
Рис.4 Доступ пользователя Windows, который запустил сеанс программы 1С, должен быть не только на чтение, но и на запись

Если база располагается на локальном ПК, необходимо проверить на закладке «Безопасность», что для пользователя установлено разрешение на запись или не стоит запрет на запись.

Рис.5 Разрешение прав
Рис.5 Разрешение прав

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

Рис.6 Блокированные и разрешенные приложения
Рис.6 Блокированные и разрешенные приложения

Если при возникновении ошибки система указывает на временные файлы, например C:Users…AppDataLocalTemp, то очистка кэш может решить проблему с ошибкой.

Высока вероятность появления такой ошибки – при одновременном запуске двух программ (ЗУП и Бухгалтерии), одна из которых была базовой версией. Когда программы запустили по очереди, ошибка не появлялась.

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

Другие статьи по теме

Обновления 1С

Обновления 1С

Как обновить 1С самостоятельно. Рассмотрим пошаговые действия для обновления типовой конфигурации 1С:Предприятия 8 на примере 1С:Бухгалтерии 3.0.

Настройка 1С Бухгалтерия 8.3 с нуля

Настройка 1С Бухгалтерия 8.3 с нуля

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

Установка 1С

Установка 1С

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

John_XP

2 / 2 / 0

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

Сообщений: 50

1

22.03.2011, 15:13. Показов 5082. Ответов 10

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


У меня есть переменная string fpath; //путь к файлу.
Когда я хочу задать доступ к xml — файлу (тест.), то у меня ничего не выходит.

 Комментарий модератора 
Одна тема — один вопрос

Вот, что я делаю:

C#
1
fpath = Application.StartupPath + @"E:Documents and SettingsAdminРабочий столTestsTest.xml";

Однако так и не появляется ничего.
Могу привести полный листинг программы. (Пример из книги «Культин: С# в примерах и задачах»).

C#
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        string fpath;   //путь файлу к теста
        string fname;   //файл теста
 
        //XmlReader обеспечивает чтение данных xml-файла
        System.Xml.XmlReader xmlReader;
 
        string qw;  //Вопрос
 
        //Варианты ответа
        string[] answ = new string[3];
 
        string pic; //путь к файлу иллюстрации
 
        int right;  //правильный ответ
        int otv;    //выбранный ответ
        int n;      //количество правильных ответов
        int nv;     //общее количетсво вопросов
        int mode;   //состоянине программы
        //0 - начало работы;
        //1 - тестирования;
        //2 - завершение работы
 
        //Конструктор формы
        //(см. также Program.cs)
        public Form1(string[] args)
        {
            InitializeComponent();
 
            radioButton1.Visible = false;
            radioButton2.Visible = false;
            radioButton3.Visible = false;
 
            //имя файла теста должно быть указанно
            //в качестве параметра команды запуска программы
            if (args.Length > 0)
            {
                //Указано только имя файла теста
                if (args[0].IndexOf(":") == -1)
                {
                    fpath = Application.StartupPath + "\";
                    fname = args[0];
                }
 
                else
                {
                    //указан путь к файлу теста
                    fpath = args[0].Substring(0, args[0].LastIndexOf("\") + 1);
                    fname = args[0].Substring(args[0].LastIndexOf("\") + 1);
                }
                try
                {
                    //Прочитать xml-файл
                    xmlReader =
                        new System.Xml.XmlTextReader(fpath + fname);
                    xmlReader.Read();
 
                    mode = 0;
                    n = 0;
 
                    //Загрузить и показать заголовок текста
                    this.showHead();
 
                    //Загрузить и показать описание текста
                    this.showDescription();
                }
                catch (Exception exc)
                {
                    label1.Text = "Ошибка доступа к файлу " +
                        exc + fpath + fname;
 
                    MessageBox.Show("Ошибка доступа к файлу.n" +
                        fpath + fname + "n",
                        "Экзаменатор",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Error);
 
                    mode = 2;
                }
            }
            else
            {
                label1.Text =
                    "Файл теста необходимо указать " +
                    "в команде запуска программы.n" +
                    "Например: 'exam economics.xml' " +
                    "или 'exan c:\spb.xml'.";
                mode = 2;
            }
        }
        //Выводит название (заголовок) текста
        private void showHead()
        {
            //ищем узел <head>
            do xmlReader.Read();
            while (xmlReader.Name != "head");
 
            //считываем заголовок
            xmlReader.Read();
 
            //вывести название текста в заголовк окна
            this.Text = xmlReader.Value;
 
            //выходим из узла <head>
            xmlReader.Read();
        }
        private void showDescription()
        {
            //ищем узел <Description>
            do
                xmlReader.Read();
            while (xmlReader.Name != "description");
 
            //считываем описание теста
            xmlReader.Read();
 
            //выводим описание теста
            label1.Text = xmlReader.Value;
 
            //выходим из узла <description>
 
            //ищем узел вопросов <qw>
            do
                xmlReader.Read();
            while (xmlReader.Name != "qw");
 
            //входим внутрь узла
            xmlReader.Read();
        }
        //читает вопрос из файла теста
        private Boolean getQw()
        {
            //считываем тег <q>
            xmlReader.Read();
 
            if (xmlReader.Name == "q")
            {
                //здесь прочитан тег <q>,
                //атрибут text которого содержит вопрос
                //а атрибут src - имя файла иллюстрации
 
                //извлекаем значение атрибутов
                qw = xmlReader.GetAttribute("text");
                pic = xmlReader.GetAttribute("src");
 
                if (!pic.Equals(string.Empty)) pic = fpath + pic;
 
                //входим внутрь узла
                xmlReader.Read();
                int i = 0;
 
                //считываем данныем из вопроса <q>
                while (xmlReader.Name != "q")
                {
                    xmlReader.Read();
 
                    //вырианты ответа
                    if (xmlReader.Name == "a")
                    {
                        //если есть атрибут right, то это
                        //правильный ответ
                        if (xmlReader.GetAttribute("right") == "yes")
                            right = i;
 
                        //считываем вариант ответа
                        xmlReader.Read();
                        if (i < 3) answ[i] = xmlReader.Value;
 
                        //выходим из узла <a>
                        xmlReader.Read();
 
                        i++;
                    }
                }
                //выходим из узла вопроса <q>
                xmlReader.Read();
 
                return true;
            }
            //если считанный тег не <q>
            else
                return false;
        }
        private void showQw()
        {
            //выводим вопрос
            label1.Text = qw;
 
            //иллюстрация
            if (pic.Length != 0)
            {
                try
                {
                    pictureBox1.Visible = true;
 
                    radioButton1.Top = pictureBox1.Bottom + 16;
                }
                catch
                {
                    if (pictureBox1.Visible)
                        pictureBox1.Visible = false;
 
                    label1.Text +=
                        "nnnОшибка доступа к файлу " + pic + ".";
 
                    radioButton1.Top = label1.Bottom + 8;
                }
            }
            else
            {
                if (pictureBox1.Visible)
                    pictureBox1.Visible = false;
                radioButton1.Top = label1.Bottom;
            }
            //Показать варианты ответа
            radioButton1.Text = answ[0];
            radioButton2.Top = radioButton1.Top + 24; ;
            radioButton2.Text = answ[1];
            radioButton3.Top = radioButton1.Top + 24; ;
            radioButton3.Text = answ[2];
 
            radioButton4.Checked = true;
            button1.Enabled = false;
        }
        //Щелчок на кнопке выбора ответа
        //функция обрабатывает событие click
        //компонентов radioButton1 - radioButton3
        private void radioButton1_Click(object sender, EventArgs e)
        {
            if ((RadioButton)sender == radioButton1) otv = 1;
            if ((RadioButton)sender == radioButton2) otv = 2;
            if ((RadioButton)sender == radioButton3) otv = 3;
 
            button1.Enabled = true;
        }
        //Щелчок на кнопке ОК
        private void button1_Click(object sender, EventArgs e)
        {
            switch (mode)
            {
                case 0:     //начало работы
                    radioButton1.Visible = true;
                    radioButton2.Visible = true;
                    radioButton3.Visible = true;
 
                    this.getQw();
                    this.showQw();
 
                    mode = 1;
 
                    button1.Enabled = false;
                    radioButton4.Checked = true;
                    break;
                case 1:
                    nv++;
 
                    //правильный ли ответ выбран
                    if (otv == right) n++;
 
                    if (this.getQw()) this.showQw();
                    else
                    {
                        //больше вопросов нет
                        radioButton1.Visible = false;
                        radioButton2.Visible = false;
                        radioButton3.Visible = false;
 
                        pictureBox1.Visible = false;
                        
                        //обработка и вывод результата
                        this.showLevel();
 
                        //следующий щелчок на кнопке ОК
                        //закроет окно программы
                        mode = 2;
                    }
                    break;
                case 2:     //завершение работы программы
                    this.Close();   //закрыть окно
                    break;
            }
        }
        //выводит оценку
        private void showLevel()
        {
            //ищем узел <levels>
            do
                xmlReader.Read();
            while
            (xmlReader.Name != "levels");
 
            //входим внуть узла
            while (xmlReader.Name != "levels")
            {
                xmlReader.Read();
 
                if (xmlReader.Name == "level")
                    //n - кол-во правильных ответов,
                    //проверяем, попадаем ли в категорию
                    if (n >= System.Convert.ToInt32(
                        xmlReader.GetAttribute("score")))
                        break;
 
            }
 
            //выводим оценку
            label1.Text =
                "Тестирования завершенно.n" +
                "Всего вопросов: " + nv.ToString() + ". " +
                "Правильных ответов: " + n.ToString() + ".n" +
                xmlReader.GetAttribute("text");
        }
    }
}

а файл теста находится в:
E:Documents and SettingsAdminРабочий столTestsTest.xml

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



0



Programming

Эксперт

94731 / 64177 / 26122

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

Сообщений: 116,782

22.03.2011, 15:13

Ответы с готовыми решениями:

Ограничен доступ к файлу
Вставляю картинки в дата грид ваев.
После чего некоторые необходимо переименовать.
Однако это…

Доступ к занятому файлу
Возникла ещё одна проблема, теперь уже с удалением файла, который мы находим.
Суть идеи такова:…

Закрыть доступ к файлу
Читал про реализацию этого метода, но что-то у меня не выходит) Исправьте пожалуйста. Мне нужно…

Многопоточный доступ к файлу
видел, эта тема обсасывалась не раз на просторах сайберфорума, но никаких продвижений по этому…

10

d3nver

144 / 128 / 27

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

Сообщений: 242

22.03.2011, 15:21

2

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

Да! Спасибо! Помогло!
Теперь другая проблема.
У меня есть переменная string fpath; //путь к файлу.
Когда я хочу задать доступ к xml — файлу (тест.), то у меня ничего не выходит.
Вот, что я делаю:

C#
1
fpath = Application.StartupPath + @"E:Documents and SettingsAdminРабочий столTestsTest.xml";

Однако так и не появляется ничего.

Application.StartupPath:
Application.StartupPath — свойство
Получает путь для исполняемого файла, запустившего приложение, не включая исполняемое имя.

ты в переменную fpath заносишь и путь к файлу приложения и путь к тесту.
Если у тебя тест расположен по E:Documents and SettingsAdminРабочий столTestsTest.xml
тогда нужно писать так:

C#
1
fpath = @"E:Documents and SettingsAdminРабочий столTestsTest.xml";

И не совсем понял где ты это делаешь. В приведенном коде этой строки нет.



1



John_XP

2 / 2 / 0

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

Сообщений: 50

22.03.2011, 15:46

 [ТС]

3

Когда я указываю полный путь, у меня все равно появляется эта запись:
«Файл теста необходимо указать » +
«в команде запуска программы.n» +
«Например: ‘exam economics.xml’ » +
«или ‘exam c:\spb.xml’.»;
О горе мне…
До чего же я запутался…
А когда путь указан как:

C#
1
fpath = Application.StartupPath + "\";

В какой папке он находится?



0



d3nver

144 / 128 / 27

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

Сообщений: 242

22.03.2011, 15:54

4

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

Когда я указываю полный путь, у меня все равно появляется эта запись:
«Файл теста необходимо указать » +
«в команде запуска программы.n» +
«Например: ‘exam economics.xml’ » +
«или ‘exam c:\spb.xml’.»;
О горе мне…
До чего же я запутался…
А когда путь указан как:

C#
1
fpath = Application.StartupPath + "\";

В какой папке он находится?

в папке твоего проекта, а точнее в :
x:bla-bla-blasuper-puper-mega-projectbinDebug
Если ты указываешь файл с тестами просто по имени, то этот файл должен находиться в этой же папке, что и твой исполняемый файл.



0



2 / 2 / 0

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

Сообщений: 50

22.03.2011, 16:08

 [ТС]

5

В общем таки, и ничего не добился…
xml файл набрал в блокноте, все как и в учебнике, листинг кода тоже без ошибок написан…
А как присабачить туда файлы по выбору, т.е. я добавляю туда кнопку Обзор, кликаю на нее, и открываю xml-файл.
Тогда весь код связанный с открытием я должен перенести туда?



0



d3nver

144 / 128 / 27

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

Сообщений: 242

22.03.2011, 16:16

6

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

C#
1
fpath = @"E:Documents and SettingsAdminРабочий столTestsTest.xml";

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



0



2 / 2 / 0

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

Сообщений: 50

22.03.2011, 16:28

 [ТС]

7

//имя файла теста должно быть указанно
//в качестве параметра команды запуска программы
Что значат эти строки?



0



144 / 128 / 27

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

Сообщений: 242

22.03.2011, 16:36

8

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

//имя файла теста должно быть указанно
//в качестве параметра команды запуска программы
Что значат эти строки?

ты у меня спрашиваешь? не я ж задание выписывал

Это значит что имя файла для теста ты вводишь как аргумент командной строки.
Возьми этот файл с тестами, кинь в ту же папку, где у тебя находится твоя программа. Не исходники, а глубже: bindebug
И тогда в качестве аргумента будет выступать просто имя файла.

И самое основное: в студии нужно указать аргументы командной строки. Раз ты запускаешь проект из студии, в настройках проекта нужно указать эти аргументы командной строки.
Студия какая?



0



2 / 2 / 0

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

Сообщений: 50

22.03.2011, 16:49

 [ТС]

9

Microsoft Visual C# Express Edition 2008
Я взял xml-файл и приатачил его в корневую папку
E:Documents and SettingsAdminМои документыVisual Studio 2008ProjectsWindowsFormsApplication4WindowsForm sApplication4binDebug
В всем коде, все свое убрал. Оставил как в оригинале.
А там путь указан как:
fpath = Application.StartupPath + «\»;



0



144 / 128 / 27

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

Сообщений: 242

22.03.2011, 18:32

10

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

А там путь указан как:
fpath = Application.StartupPath + «\»;

значит аргументом будет просто имя файла с тестом.



0



Fretsaw

5 / 5 / 0

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

Сообщений: 22

16.06.2011, 06:58

11

C#
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
public Form1(string[] args)
        {
            InitializeComponent();
 
            radioButton1.Visible = false;
            radioButton2.Visible = false;
            radioButton3.Visible = false;
            radioButton5.Visible = false;
            // имя файла теста должно быть указано
            // в качестве парамета команды запуска программы
            //fpath = "spb.xml";
            fname = "spb.xml";
 
             try
              {
 
            xmlReader = new System.Xml.XmlTextReader(fname);
            xmlReader.Read();
            mode = 0;
            n = 0;
            // загрузить заголовок теста
            this.showHead();
 
            // загрузить описание теста
            this.showDescription();
              }
                  catch(Exception exc)
                  {
                      label1.Text = "Ошибка доступа к файлу  " +
                          fpath + fname;
 
                      MessageBox.Show("Ошибка доступа к файлу.n" +
                          fpath + fname + "n",
                          "Экзаменатор",
                          MessageBoxButtons.OK,
                          MessageBoxIcon.Error);
 
                      mode = 2;
                  }
 
 
//--------------------------------------------------------------------------------
//Всё, что ниже, в комментарий...
//--------------------------------------------------------------------------------
           /* if (args.Length > 0)
            {
                // указано только имя файла теста
                if (args[0].IndexOf(":") == -1)
                {
                    fpath = Application.StartupPath + "\";
                    fname = args[0];
                }
 
                else
                {
                    // указан путь к файлу теста
                    fpath = args[0].Substring(0, args[0].LastIndexOf("\") + 1);
                    fname = args[0].Substring(args[0].LastIndexOf("\") + 1);
                }
 
                try
                {
                    // получаем доступ к xml-документу
                    xmlReader = new System.Xml.XmlTextReader(fpath + fname);
                    xmlReader.Read();
 
                    mode = 0;
                    n = 0;
 
                    // загрузить заголовок теста
                    this.showHead();
 
                    // загрузить описание теста
                    this.showDescription();
                }
 
                 catch(Exception exc)
                  {
                      label1.Text = "Ошибка доступа к файлу  " +
                          fpath + fname;
 
                      MessageBox.Show("Ошибка доступа к файлу.n" +
                          fpath + fname + "n",
                          "Экзаменатор",
                          MessageBoxButtons.OK,
                          MessageBoxIcon.Error);
 
                      mode = 2;
                  }
              }
              else
              {
                  label1.Text =
                      "Файл теста необходимо указать " +
                      "в команде запуска программы.n" +
                      "Например: 'exam economics.xml' " +
                      "или 'exam c:\spb.xml'.";
                  mode = 2;
              }*/



0



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

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

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

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка доступа к файлу проверьте запущенные процессы epic games is mf03 5
  • Ошибка доступа к файлу smartsteamemu dayz