[РЕШЕНО] Файл XML не записывается

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Samouchka, 7 сен 2014.

  1. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Доброго всем времени суток. Я с такой чертовщиной. Нужно создать файл XML и записать его в нужный каталог. Прочитал что в методе Записать() нужно передать строку (в моём случае). Я отследил это. Создал на форме элемент диалога ФайлВыгруза2, и убедился, что я действительно получил строку. Кроме того, я скопировал полученную строку из ФайлВыгруза2 и подставил её в конфигураторе в строку модуля. Вот код, в котором где-то ошибка:
    Код:
    Процедура ВыгрузитьОтчет()
        ВыборКаталВыгруз=КаталогОтчетов;
        ВыбКаталВыгруз=ФС.ВыбратьКаталог(ВыборКаталВыгруз,"Выберите папку для выгрузки отчета",);
        Если ВыбКаталВыгруз=1 Тогда
            //Процесс создания, заполнения и записи XML-файла
            Если ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"v7plus.dll") <> 1 Тогда
                   Предупреждение("Компонента v7plus.dll не найдена!");
                   Возврат; //прервать выполнение процедуры
            КонецЕсли;
            Анализатор = СоздатьОбъект("AddIn.XMLParser");
            xml=Анализатор.СоздатьДокумент();
            Корень=xml.СоздатьПодчиненныйЭлемент("КорневойЭлемент");
            Подчинен=Корень.СоздатьПодчиненныйЭлемент("ПодчиненныйЭлемент");
            Подчинен.УстановитьАтрибут("Слаг1",Слаг1);
           
            Инфо=СоздатьОбъект("AddIn.V7SysInfo");
            Кавыч="""";
            ФайлИмя=Инфо.СоздатьGUID();
            ФайлХвост=".xml";
            ФайлВыгруза1=Кавыч+ВыборКаталВыгруз+"\"+ФайлИмя+ФайлХвост+Кавыч;
            ФайлВыгруза=Формат(ФайлВыгруза1,"Сп");
            ФайлВыгруза2=ФайлВыгруза;
            xml.Записать(ФайлВыгруза);
        КонецЕсли;
    КонецПроцедуры
    Неизвестная ошибка:
    xml.Записать(ФайлВыгруза);
    И даже если реквизит формы иметь ввиду
    xml.Записать(ФайлВыгруза2); - та же ошибка
    А вот если в метод Записать() передать непосредственно то, что собственно говоря и получается в ФайлВыгруза (я скопировал из реквизита диалога ФайлВыгруза2 в конфигуратор):
    xml.Записать("D:\Базы программ\1С Конфигурация\Отчеты\6D4DD027-C079-484B-9DC9-9F4B1D961ED5.xml")
    то при таком коде файл записывается по указанному пути.
    Но мне же надо процессом выгрузки файла управлять, создавая его в нужном месте и с уникальным именем. В чём же всё-таки я не прав в своём первом коде? Просьба помочь.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    ФайлИмя=Инфо.СоздатьGUID();
    xml.Записать(ВыборКаталВыгруз+"\"+ФайлИмя+".xml");
    Samouchka нравится это.
  3. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Да, дело было в кавычках. Кто знал, что они не нужны. Теперь буду знать.
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    У вас просто вместо переменной получилась строка
  5. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Вся проблема в том, чтоя я дословно читаю СП. Там написано, что нужна строка в этом методе, вот я и делаю...
  6. LordMaverick
    Online

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.443
    Симпатии:
    376
    Баллы:
    104
    просто при таких комбинациях лучше визуально проконтролировать что там формируется
    вот пример на вашем коде
    Код:
            Инфо=СоздатьОбъект("AddIn.V7SysInfo");
            Кавыч="""";
            ФайлИмя=Инфо.СоздатьGUID();
            ФайлХвост=".xml";
            ФайлВыгруза1=Кавыч+ВыборКаталВыгруз+"\"+ФайлИмя+ФайлХвост+Кавыч;
            ФайлВыгруза=Формат(ФайлВыгруза1,"Сп");
            ФайлВыгруза2=ФайлВыгруза; // а это кстати зачем?
            Сообщить(ФайлВыгруза); //проверка получившегося
            xml.Записать(ФайлВыгруза);
    
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    проще уж отладчиком глянуть....
  8. LordMaverick
    Online

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.443
    Симпатии:
    376
    Баллы:
    104
    возможно, мне так быстрее было, особенно когда несколько параметров глянуть надо было
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    И не только.. Можно посмотреть как именно формируется переменная.
  10. TopicStarter Overlay
    Samouchka
    Offline

    Samouchka Опытный в 1С

    Регистрация:
    20 мар 2013
    Сообщения:
    214
    Симпатии:
    1
    Баллы:
    29
    Я создавал реквизит диалога типа Строка неограниченной длины с идентификатором ФайлВыгруза2. Вот Вам и ответ на вопрос: зачем ФайлВыгруза2=ФайлВыгруза. В реквизите ФайлВыгруза2 и мониторил значение. Ну, вобщем, тема то уже закрыта.

Поделиться этой страницей