Ошибка при вызове метода контекста открытьфайл

Ошибка при создании xml

Я
   SFilchakov

10.06.16 — 22:32

Всем привет!

Хочу кое что в хмл запихнуть.

Пишу в модуле объекта обработки

Процедура СоздатьФайлДанныхВыгрузки(СтруктураВыгрузки)

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

    ЗаписьXML.ОткрытьФайл(«d:doc.xml»);

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

\\

И сразу падает:

Ошибка при вызове метода контекста (ОткрытьФайл)

    ЗаписьXML.ОткрытьФайл(«d:doc.xml»);

по причине:

Каталог не обнаружен ‘d:doc.xml’

//////

Хотя все примеры по создания файла xml так и начинаются:

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

    ЗаписьXML.ОткрытьФайл(«d:doc.xml»);

///

Пробовал и так:

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

    ЗаписьXML.ОткрытьФайл(«d:doc.xml»);

То же самое.

Подскажите, что не так?

   Dmitry1c

1 — 10.06.16 — 22:33

наклонная черта в другую сторону..

   Dmitry1c

2 — 10.06.16 — 22:35

или контекст на сервере

   SFilchakov

3 — 10.06.16 — 22:38

Что значит контекст на сервере?

Это в модуле обработки на 8.3

Поменял наклон, тоже самое.

   Лефмихалыч

4 — 10.06.16 — 22:38

(0) это все происходит на сервере приложений, а там все не так, как у тебя на клиенте

   SFilchakov

5 — 10.06.16 — 22:40

Это надо делать на клиенте что ли?

   SFilchakov

6 — 10.06.16 — 22:42

Спасибо, теперь понял.

А как же желать загрузку выгрузку по регламентному заданию через файл xml? если регламентное задание крутится на сервере, а файл можно создать только на клиенте и перейти с сервера на клиент нельзя?

   Лефмихалыч

7 — 10.06.16 — 23:05

(6) файл можно создать и на сервере. Просто надо создавать его на дисках и в папках, которые существуют на сервере

   Лефмихалыч

8 — 10.06.16 — 23:06

+(7) даже — не просто существуют, а еще и права на запись в них должны быть у пользователя, под которым запущена служба сервера приложений (ragent)

   SFilchakov

9 — 10.06.16 — 23:15

А где этого пользователя можно посмотреть?

  

Стальная Крыса

10 — 11.06.16 — 04:18

На том компьютере, где работает сервер 1С

TurboConf — расширение возможностей Конфигуратора 1С

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

  1. Есть обработка по выгрузке некоторых данных в файл xml. Возникает такая ошибка:
    Ошибка при вызове метода контекста (ОткрытьФайл): Ошибка совместного доступа к файлу ‘E:\документ.xml’ Запись.ОткрытьФайл(ИмяФайла,»UTF-8″);

    Запрос.УстановитьПараметр("Родитель", ЭлементыФормы.Группа.Значение);
    Выборка = Запрос.Выполнить().Выбрать();
    
    Если ПустаяСтрока(ИмяФайла) Тогда
    Предупреждение("Укажите файл данных XML для выгрузки!");
    Возврат;
    КонецЕсли;
    Файл = Новый Файл(ИмяФайла);
    Если Файл.Существует() Тогда
    Ответ = Вопрос("Файл " + ИмяФайла + " существует. Заменить?",РежимДиалогаВопрос.ДаНет);
    Если Ответ = КодВозвратаДиалога.Нет Тогда
    Сообщить("Сохранение отменено.");
    Возврат;
    КонецЕсли;
    КонецЕсли;
    
    ТекстФайл = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8);
    
    Запись = Новый ЗаписьXML; 
    Запись.ОткрытьФайл(ИмяФайла,"UTF-8"); 
    Запись.ЗаписатьОбъявлениеXML(); 
    Запись.ЗаписатьНачалоЭлемента("_1CV8DtUD", "http://www.1c.ru/V8/1CV8DtUD/"); 
    Запись.ЗаписатьСоответствиеПространстваИмен("V8Exch", "http://www.1c.ru/V8/1CV8DtUD/");
    Запись.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
    Запись.ЗаписатьСоответствиеПространстваИмен("v8",  "http://v8.1c.ru/data");
    Запись.ЗаписатьНачалоЭлемента("V8Exch:Data");
    
    Пока Выборка.Следующий() Цикл 
    
    Запись.ЗаписатьНачалоЭлемента("Элемент"); 
    .......
    
    Запись.ЗаписатьКонецЭлемента(); 
    КонецЦикла; 
    
    Запись.ЗаписатьКонецЭлемента(); 
    
    ТекстФайл.Записать(Запись.Закрыть());
    ТекстФайл.Закрыть();
    
    
    Запись.Закрыть();
    
    

    Подскажите, в чем может быть дело?


  2. leemuar

    Offline

    leemuar
    Опытный в 1С

    Регистрация:
    21 окт 2010
    Сообщения:
    310
    Симпатии:
    0
    Баллы:
    26

    Вероятно файл уже отрыт другим сеансом или приложением

  3. нет, не открыт. Я уже и перезагружалась, без толку :angry:


  4. uza

    Offline

    uza
    1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29

    А что приходит в ИмяФайла?
    Если «E:\документ.xml» — то это неправильный путь к файлу. Ибо правильный «E:документ.xml», возможно.

  5. Там всё правильно, я просто не стала сюда весь путь копировать :angry:

  6. Неужели никто не сталкивался с такой ошибкой?


  7. BabySG

    Offline

    BabySG
    Администраторы
    Команда форума
    Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    18
    Баллы:
    29

    Ошибка у Вас в коде где-то.

    Откуда получаете имя файла?


  8. uza

    Offline

    uza
    1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29

    А файл вообще доступен для записи?
    А то может у Вас прав нет на запись.

    А ОС какая? Не Vista/7ка ли — а то они «из коробки» любят ограничивать доступ к файлам разным прогам.

  9. ИмяФайла — реквизит обработки, типа Строка. Поле ввода на форме с данными ИмяФайла.


  10. Tiger86

    Offline

    Tiger86
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104

    вот нашла такую инфу, сама не пробовала
    обратите внимание. в примере в имени файла наклон разделителей в другую сторону (возможно конечно это не влияет, но все же….)

  11. Проблема решилась. Я убрала

    Запись.ОткрытьФайл(ИмяФайла,"UTF-8");
    

    и вставила

    Запись.УстановитьСтроку("UTF-8");
    
    


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

Забыл еще сказать, что скриншоты создаются и сохраняются в каталог отчетов, когда тест выполняется не из проверки, а просто из обработки МСТ с любым режимом создания скриншотов.

  1. Настройки:
    01
    Порт тестирования тут не менял, т.к. все тесты запускаются под конкретными пользователями, настройки которых указаны в библиотечном тесте Права, который добавляю в каждый сценарный тест первым шагом. У каждого пользователя указан уникальный порт. Тестируемого клиента пока не убираю, т.к. тесты приходится запускать по отдельности, а не в рамках проверки (для проверки их работоспособности).
    Режим скриншотов во всех тестах указан как Errors. Порт для скриншотов у себя оставил стандартный для всех тестов. Все тесты запускаются последовательно, одновременно пока ничего не выполняется. Думаю, что порт надо менять для тестов, выполняющихся одновременно (поправьте, если неправ).

  2. Добавил шаг «Сделать Screenshot» в сценарий, но в детализации выполнения сценария скриншота все равно нет.
    image
    image

3.1. Не нашел что такое журнал действий, возможно имелась ввиду информация из обработки «Просмотр результатов выполнения проверок» из подсистемы «Тестирование». Там текст сообщения следующий:
Шаг №357 'Команда : Активизировать' Действие/Команда 'Команда/Активизировать' {ВнешняяОбработка.МенеджерСценарногоТеста.Форма.Модуль_ОбработкаДействий.Форма(622)}: Ошибка при вызове метода контекста (Активизировать): Недоступный пользователю элемент управления не может выполнять интерактивные действия. (Вход в программу разрешен)
Что-то помешало активизировать элемент на форме, я предполагаю, что с этой формы «ушел фокус», но проблема в том, что вручную этот тест выполняется без ошибок (да и в проверке ошибка бывает не всегда). Можно, конечно, следить за тестом из нулевой сессии, но там две проблемы: сессия автоматически закрывается через 30 секунд (Windows Server 2016 Standart) и меня выкидывает из терминала; когда происходит ошибка, то тестируемый клиент настолько стремительно закрывается, что я не успеваю ничего увидеть и не могу поймать момент, когда нужно сделать скриншот.
3.2. В журнале регистрации следующие ошибки (последняя наиболее частая):
03
04
05

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

  1. В «Логе выполненных заданий (дополнительная информация)» записи почему-то только со вчерашнего вечера и только для одного из тестов.
    image
    image

Текст сообщения:
{ВнешняяОбработка.ЗагрузкаЛогаAllureXMLТеста.Форма.Форма.Форма(251)}: Ошибка при вызове метода контекста (ОткрытьФайл): Каталог не обнаружен 'C:Отчеты о тестированииreport-30_Сценарный тест ОтсутствиеНеявка.xml'
Текст дополнительного сообщения:
ИмяОбработки: ЗагрузкаЛогаAllureXML ИмяФункции: ЗагрузитьОтчетВыполненияСценарногоТестированияФорматAllureXML
Тоже свидетельствует о нехватке прав?

  1. WinAutomationUI запущен и насколько я могу судить работает (иногда скриншоты все-таки сохраняются).
    02
  1. 20.12.2016, 13:59


    #1

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию COM-объект и Excel

    Создаю COM-объект и пытаюсь открыть файл Excel:
    ex=Новый ComОбъект(«Excel.Application»);
    ex.WorkBooks.Open(Файл);
    Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:

    Ошибка при вызове метода контекста (Open)
    ex.WorkBooks.Open(Файл);
    по причине:
    Неизвестная ошибка
    Сталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
    Если что-то с Excel, то что?


  2. 20.12.2016, 15:25


    #2

    avm3110 вне форума


    Гордость форума PRO


    По умолчанию Re: COM-объект и Excel

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

    Создаю COM-объект и пытаюсь открыть файл Excel:
    ex=Новый ComОбъект(«Excel.Application»);
    ex.WorkBooks.Open(Файл);
    Файл существует, COM-объект создается, но при открытии файла Excel выдается сообщение:

    Ошибка при вызове метода контекста (Open)
    ex.WorkBooks.Open(Файл);
    по причине:
    Неизвестная ошибка
    Сталкиваюсь с этим впервые, на других компах всю жизнь все работает, с любой платформой 8.3
    Если что-то с Excel, то что?

    Ты открываешь Апликайшон — а как ты это открываешь (интерактивно или же на сервере)? Опять же у тебя какой эксель (32-х разрядный или же 64-х разрядный) и в каком контексте пытаешься открыть (в 32-х разрядном клиенте или же на стороне 64-х разрядного сервера)?


  3. 20.12.2016, 15:55


    #3

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

    Все очень просто.
    Файловая база.
    Excel 2010. Файл лежит на том же диске, что и база и открывающая его обработка.
    Никакого клиент-серверного режима нет.


  4. 20.12.2016, 16:31


    #4

    avm3110 вне форума


    Гордость форума PRO


    По умолчанию Re: COM-объект и Excel

    А попробуй «завернуть» в Попытку

    Что выдаст?

    Попытка
    Excel = Новый COMОбъект(«Excel.Application»);
    Excel.WorkBooks.Open(ИмяФайла);
    Состояние(«Обработка файла Microsoft Excel…»);
    Исключение
    Сообщить(«Ошибка при открытии файла с помощью Excel! Загрузка не будет произведена!»);
    Сообщить(ОписаниеОшибки());
    Возврат;
    КонецПопытки;


  5. 20.12.2016, 17:04


    #5

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

    Все то же самое.
    Ошибка при вызове метода контекста (Open): Неизвестная ошибка
    ОписаниеОшибки()=»»


  6. 20.12.2016, 17:25


    #6

    avm3110 вне форума


    Гордость форума PRO


    По умолчанию Re: COM-объект и Excel

    [QUOTE=lilyapo;469920]Все то же самое.
    Ошибка при вызове метода контекста (Open): Неизвестная ошибка

    похоже у тебя проблема с com-ом. А у тебя Excel нормально в реестре зареген? Ты его видишь в com-объектах?

    Попробуй подключиться к открытому «ручками» экселю

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

    Excel = ПолучитьCOMОбъект(, «Excel.Application»);
    При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
    Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.


  7. Пользователь сказал cпасибо:


  8. 20.12.2016, 17:41


    #7

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

    Все получилось!
    Спасибо огромное, фантастика!:dance:


  9. 13.09.2018, 12:20


    #8

    KrisLis вне форума


    Гость форума


    По умолчанию Re: COM-объект и Excel

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

    Все получилось!
    Спасибо огромное, фантастика!:dance:

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


  10. 13.09.2018, 13:10


    #9

    lilyapo вне форума


    Иногда оказывает помощь


    По умолчанию Re: COM-объект и Excel

    Попробуй подключиться к открытому «ручками» экселю

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

    Excel = ПолучитьCOMОбъект(, «Excel.Application»);
    При этом первый параметр нужно оставить пустым. В этом случае при этом подцепится тот файл экселя, который был открыт последним, даже если порядок переключения окон был таким:
    Excel1, Excel2, IE, Проводник, 1С (т.е. что-то и было открытым между 1с и экселевским файлом) — все равно откроется Excel2, потому что он был активен последним.
    Так я справилась с проблемой


Ошибка работы 1С 8 с Excel: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу

Описание ошибки:
Проявила себя в клиент-серверной базе. Релиз платформы 1С: Предприятие 8.3.13.1644.

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

Полная формулировка ошибки:

{Доработки Документ.УстановкаЦенНоменклатуры.Форма.Доп_ФормаИмпортXLS.Форма(83)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу ‘C:1C_ArhivТест загрузка прайсов[имя_файла].xlsx’. Это может быть вызвано одной из следующих причин.

• Имени файла или пути не существует.
• Файл используется другой программой.
• Имя книги, которую вы пытаетесь сохранить, совпадает с именем открытой в данный момент книги.

1C 8 Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу .xlsx

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

При доработке в расширении для конфигурации 1С: Комплексная автоматизация 8, ред. 2, которая должна загружать данные из файлов Excel и при попытке выполнения в коде РабочаяКнига = ExcelПриложение.WorkBooks.Open(ФормаИмпортXLS.ИмяФайла);. Что удивительно, но в более ранней редакции Комплексной, 1.1, эта проблема не возникала в этом же коде, хотя обе базы на одном сервере.

Проблема оказалась нова для автора этого текста только в 2020 году, хотя самой проблеме достаточно много времени (более 5 лет на момент написания). В обсуждении данной ошибки на сайте infostart.ru «Ошибка открытия файла Excel на сервере» обсуждается несколько предложений по решению проблемы, среди которых наиболее популярный вариант решения. Так же там много попутных предложений по настройке прав на стороне сервера, если вдруг популярный вариант окажется не актуальным.

1C 8

Популярность этого варианта подтверждается исчерпывающим обсуждением и вот на этом ресурсе: «v8.x: [РЕШЕНО] Ошибка при вызове метода контекста (Open) при работе с Excel»

1C 8.2 8.3 Произошла исключительная ситуация (Microsoft Office Excel): Нет доступа к файлу

Проблема была рещена данным простым решением, но обращу внимание на то, что данное действие должно быть выполнено на сервере, а не на локальном рабочем месте.

1C 8 Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация

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




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

23-09-2020

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

Sergei
26.10.2011 13:13 Прочитано: 9558

При загрузке данных из файла возникает следующая ошибка: {Форма.Форма.Форма(99)}: Ошибка при вызове метода контекста (ПрочитатьXML)
ПередачаОС = ПрочитатьXML(ЧтениеXML);
по причине:
Значения данного типа не могут быть представлены в XML

Вот код:

Код 1C v 8.х

 ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ПутьКФайлам+"ПередачаОС.xml");
ПередачаОС = ПрочитатьXML(ЧтениеXML);
ДокументОбъект = Документы.ПередачаОС.СоздатьДокумент();
Документ = Документы.ПередачаОС.ПолучитьФормуНовогоДокумента();
Документ.Открыть();
ЧтениеXML.Закрыть()

Изменено 26.10.11 15:34:34 по причине: Разукрасил код

Yandex
Возможно, вас также заинтересует

Реклама на портале

E_Migachev
26.10.2011 14:50 Ответ № 1

(0) Sergei, а откуда у тебя файл? каким кодом его выгружал?

Sergei
26.10.2011 14:59 Ответ № 2

Делал следующую выгрузку:
Код 1C v 8.х

 Файл = Новый ЗаписьXML;
Файл.ОткрытьФайл(ПутьКФайлам+"ПередачаОС.xml");
Файл.ЗаписатьОбъявлениеXML();
Файл.ЗаписатьНачалоЭлемента("Корневой");
Файл.ЗаписатьАтрибут("Документ", "ПередачаОС");
Файл.ЗаписатьКомментарий("Формирование списка документов");
Выборка = Документы.ПередачаОС.Выбрать();
Пока Выборка.Следующий() Цикл
Файл.ЗаписатьНачалоЭлемента("Документ");
Файл.ЗаписатьАтрибут("Номер", Строка(Выборка.Номер));
Файл.ЗаписатьАтрибут("Дата", Строка(Выборка.Дата));
Файл.ЗаписатьАтрибут("Организация", Строка(Выборка.Организация));
Файл.ЗаписатьАтрибут("Контрагент", Строка(Выборка.Контрагент));
Файл.ЗаписатьАтрибут("ДоговорКонтрагента", Строка(Выборка.ДоговорКонтрагента));
Для Каждого НовСтрока Из Выборка.ОС Цикл
Файл.ЗаписатьНачалоЭлемента("Строка");
Файл.ЗаписатьАтрибут("ОсновноеСредство", Строка(НовСтрока.ОсновноеСредство));
Файл.ЗаписатьАтрибут("Сумма", Строка(НовСтрока.Сумма));
Файл.ЗаписатьАтрибут("СтавкаНДС", Строка(НовСтрока.СтавкаНДС));
Файл.ЗаписатьАтрибут("СуммаНДС", Строка(НовСтрока.СуммаНДС));
Файл.ЗаписатьТекст(НовСтрока.ОсновноеСредство.Наименование);
Файл.ЗаписатьКонецЭлемента();
КонецЦикла;
Файл.ЗаписатьКонецЭлемента();
КонецЦикла;
Файл.ЗаписатьКонецЭлемента();
Файл.Закрыть();

Изменено 26.10.11 15:34:17 по причине: Разукрасил код

E_Migachev
26.10.2011 15:36 Ответ № 3

(2) Sergei, читай кодом, типо:
Код 1C v 8.х

 ЧтениеXML = Новый ЧтениеXML();

ЧтениеXML.ОткрытьФайл("c:doc.xml");
// Текущим становится элемент Root.
ЧтениеXML.Прочитать();

// Текущим становится элемент с документом.
ЧтениеXML.Прочитать();

// Проверить, сможет ли с данным значением "справиться" система сериализации в данной базе.
Если ВозможностьЧтенияXML(ЧтениеXML) Тогда
// Получить ДокументОбъект.РеализацияТоваровУслуг.
ЗагружаемыйОбъект = ПрочитатьXML(ЧтениеXML);
ЗагружаемыйОбъект.Записать();
КонецЕсли;

ЧтениеXML.Закрыть()

Подсказка: Для выделения Кода используйте (в редакторе).

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