arefaste/1C_Forums huggingface dataset:
Добрый день.
Есть регистр сведений.
Есть отчет на СКД исключительно по данному регистру.

У пользователя есть с правом Чтение - отчет пустой.

Добавляем пользователю право Просмотр - все хорошо, все работает.

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

Что-то я, наверное, неправильно понимаю. Но права Чтение при программной работе достаточно.

Это какая-то особенность СКД?
И как это можно обойти не создавая еще одну подсистему?
---
Да, это особенность СКД. Можно попробовать компоновать в привилегированном режиме.
---
Интересно... А запрос что выдает, если выполнить его в консоли?
РАЗРЕШЕННЫЕ, кстати, стоит?
---
В консоли никаких проблем нет. Работает так как и ожидается.
Разрешенные не стояло. Поставил. Не помогает.
---
Да, это особенность СКД. Можно попробовать компоновать в привилегированном режиме.
---
Мда. Действительно решение. Правда, с кучей геммороя, но решение.
А, вообще, странная фича.
Не понимаю почему так. Запросу права Чтение хватает, а СКД нет. И гугл не признается. Ладно, что имеем, то имеем.
Спасибо.
---
Не понимаю почему так.
Все первый раз удивляются. Но некоторый смысл в этом есть, если подумать.
Программное чтение - это еще не просмотр. Что будет дальше - полностью "на совести" разработчика.
А вот отчет СКД с пользовательскими настройками - это практически всегда инструмент просмотра, как ни крути. А просмотр запрещен.
Здравствуйте, подскажите пожалуйста, такой вопрос..
База УТ 10.3.
На сервере время допустим 10 часов утра. При записи любого документа время нормально встает. Но при проведение он прибавляет +6 часов. как только провели документ стало 16 часов дня. Какой-то глюк ), менял время серва не помогает... в сервис-параметры-использовать текущую дату тоже не помогает...

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

(1) На сервере время допустим 10 часов утра. При записи любого документа время нормально встает. Но при проведение он прибавляет +6 часов.

(3) Проверьте для текущую дату и текущую дату сеанса

(4) (3)нету разницы проверил , одинаковые

Дело явно не в оперативном проведении.

В БП 3.0 есть настройка типа "Время документов устанавливать автоматически" и вот если её включить то он все приходы пишет в первую половину дня, а списания во вторую.
Возможно у УТ есть что-то подобное.
---
Где то у вас есть процедура которая при проведении добавляет 6 часов. Ищите. Иногда ставится условие все приходы на начало дня все продажи на конец дня.... что то типа этого есть и у Вас.
---
Неа нету такого, все документы так делают, ПриПроведении нету такого, в подписках на событии тоже нету, я думаю может платформа гонит, новую недавно ставили
---
Если вы это не нашли, это не значит что у Вас этого нет. ;)
Отладчик Вам в помощь
ЗЫ раз делают все значит общая процедура, ищите константу которая добавляет при проведении 6 часов. ;)
---
УТ 10.3 у вас типовая или с настройками?
Я неоднократно сталкивался с тем, что в УТ-10 или УПП выполнена такая кастомизация - график записи документов. Т.е. определенного виза материальные документы по определенным местам хранения встают только на свое определенное время суток. Сделано это было для ФИФО.
---
Нетиповая, на всех других узлах норм, кроме одного, видимо что-то с сервом
---
скорее всего это оперативное проведение, при проведении в этом же дне, время автоматом становится текущим!
---
как этого избежать?
---
убирайте оперативное проведение, я только один вред от него видел

, оставьте только обычное проведение его достаточно
---
Решил, оказывается серв глючил или хз, короче просто время серва ставили перезагружали не работало,
Выгнал всех юзеров, поменял время серва снова, перезагрузил
и теперь все ок! странно ))
В рамках тестирования делали тестовые приходы на склад по товарам. Теперь прежде чем сделать ввод начальных остатков, нужно сделать все остатки по нулям. Подскажите, как лучше сделать это
---
делали тестовые приходы
Удалить тестовые приходы
---
делали тестовые приходы
Удалить тестовые приходы
---
Где, блин, мои бабки!?!?!?
---
на месте) спс
---
Как верно заметили уже: ничего "тестового" в рабочей базе быть не может.
---
Можно запросом выбрать все документы, которые формировали тестовые приходы и пометить их на удаление. Например:

```1c
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ПоступлениеТоваровУслуг.Ссылка КАК Ссылка
    |ИЗ
    | Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
    |ГДЕ
    | ПоступлениеТоваровУслуг.Комментарий ПОДОБНО "тест"";

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    Об = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
    Об.Записать(РежимЗаписиДокумента.ОтменаПроведения);
    Об.ПометкаУдаления = Истина;
    Об.Записать(РежимЗаписиДокумента.Запись);
    КонецЦикла;
```
---
Помечаем тестовый приход на удаление. Заходим НСИ и администрирование - Обслуживание - Удаление помеченных объектов, ставим флаг Выбрать объекты для удаления, жмем далее, снимаем все лишние галки в появившемся списки кроме прихода, жамкаем удалить.
---
Видимо, ни один из предложенных вариантов автора вопроса не устроил. Как так-то?
---
Автор просто ушел пробовать все варианты :-)
---
=) Судя по формулировке вопроса - программно удалять будет немноженько опасно )))))
---
пересчет товаров не предлагать?
---
Да здесь так принято, разместить вознаграждение и забыть. А вознаграждение так и висит мертвым грузом :-)
Эх, сколько таких тем у меня уже было.
Нужен вывод диалогового окна пользователю во время его работы в предприятии. Держать форму-владельца открытой/свернутой запрещено. Возможно ли такое сделать? Форму рабочего стола так же запрещено модифицировать. Управляемые формы.
---
В модуле управляемого приложения использовать обработчик ожидания, там вызов будет не из формы
---
Держать форму-владельца открытой/свернутой запрещеноНо создать-то ее можно)

```1c
    Форма = ПолучитьФорму("МояФорма");
    ОткрытьФорму("ФормаДиалога", Форма);
```
---
Вот как раз где эти две строчки кода выполнить - в этом и вопрос.
---
Расширение.
---
В модуле управляемого приложения использовать обработчик ожидания, там вызов будет не из формы
---
Спасибо, попробую
Есть поле ввода на форме. В нём ввожу текст, выпадают результаты полнотекстового поиска. Всё бы ничего, но в нём произвольная сортировка. Можно ли сделать по алфавиту?
---
Ну вы как разведчик. Не Дали достаточно исходных данных.

Есть параметры ввода по строке (там сначала должно идти наименование) и есть обработки данных выбора (это обработчик в менеджере обьекта метаданных) и автоподбора (это обработчик события поля).

Хотя, говорят в платформах типа 8.3.14-8.3.16 поле поиска прямо в форме завезли.
---
Оказалось таки там был специальный обработчик написан получения списка и в нём не было сортировки.
Спасибо за наводку.
---
Ну вы как разведчик. Не Дали достаточно исходных данных.

Есть параметры ввода по строке (там сначала должно идти наименование) и есть обработки данных выбора (это обработчик в менеджере обьекта метаданных) и автоподбора (это обработчик события поля).

Хотя, говорят в платформах типа 8.3.14-8.3.16 поле поиска прямо в форме завезли.
---
Оказалось таки там был специальный обработчик написан получения списка и в нём не было сортировки.
Спасибо за наводку.
Доброго времени суток форумчане ! Нужна помощь: Как в модуле основного документа при проведении записать ссылку от подчиненного документа ? какие советы вы можете дать по этому заданию ? благодарен за ответы!
---
Потому что проведение документа осуществляется уже после того, как он записан. И его реквизиты надо изменять ДО его записи, а именно - в обработчике ПередЗаписью(), а не в ОбработкаПроведения().
---
Доброго времени суток!

Не совсем понятен вопрос.
Что такое подчиненный документ и как он определяется при проведении основного.
---
Ситуцаия такая:
Есть документ (назовем его ГЛАВНЫЙ). у него есть реквизиты: Док1,Док2,Док3 - ссылки на подчиненные документы.
Надо про проведении главного документа создавать подчиненные и записывать ссылки на них в этот ГЛАВНЫЙ документ.
---
Теперь непонятен вопрос в чём возникла трудность.

```1c
    &НаСервере

    Док1 = Документы.Док1.СоздатьДокумент();
    Док1.Реквизит _1 = "АААААААААААААА";
    Док1.Записать();
    СсылкаДок1 = Док1.Ссылка;

    Объект.Док1 = СсылкаДок1;
```
---
- не типовая конфигурация

у меня вроде бы работающий код, но он не работает так как хотелось бы :

в Модуле Объекта основного документа:

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

 ДокументПоступленияВКассу = ПолучитьДокументПоступления(Ссылка);

 Документы.АвиабилетНаличный.ПометкаУдаленияДокументПоступления(ПолучитьСтруктуруПараметровДокументПоступления());

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

В модуле менеджера Основного документа:

все проводится. Но в основном документе ссылка на подчиненного документа появляется только после второго перепроведения или после отметки/снятия пометки на удаление
---
Потому что проведение документа осуществляется уже после того, как он записан. И его реквизиты надо изменять ДО его записи, а именно - в обработчике ПередЗаписью(), а не в ОбработкаПроведения().
---
огромнейшее спасибо за помощь, получилось !! А по моему коду есть какие нибудь косяки, будет ли работать исправно ?
---
Не читал...
---
Может по этому выскажитесь?
НайтиПоСсылкам - Несоответствие типов
---
Наверно трудность в отображении ссылок в открытой форме основного документа при проведении?
Имеем записи в регистре сведений в виде:
Дата
1.10.2020
5.10.2020
9.10.2020 и т.д.

Необходимо вывести данные в виде:
Дата с Дата до
1.10.2020 - 4.10.2020
5.10.2020 - 8.10.2020
9.10.2020 - и т.д.

Как правильно в запросе СКД обработать колонку "даты" что б корректно получить колонку "даты до".
---
В принципе вопрос решён с помощью вытягивания информации "даты с" с первой виртуальной таблицы, вычислении "даты до" во второй виртуальной и их объединение в третьей таблице.
---
Вот примеры интервальных запросов:
https://forum.infostart.ru/forum9/topic252977/#message2559321

И вот статья даже есть:
https://infostart.ru/1c/articles/1118145/
---
В принципе вопрос решён с помощью вытягивания информации "даты с" с первой виртуальной таблицы, вычислении "даты до" во второй виртуальной и их объединение в третьей таблице.
Здравствуйте, помогите срочно. Рисую запрос для задачки по оперативному учету. Что не так, почему выдает ошибку "Группировка по таблицам верхнего уровня и вложенным таблицам РасходнаяНакладная..." ? Так же до этого делал, все работало, тут что не так, как исправить? Помогите пожалуйста.
```1c
    ВЫБРАТЬ
    РасходнаяНакладная.СписокНоменклатуры.(
    Номенклатура КАК Номенклатура,
    Количество КАК Количество,
    Сумма КАК Сумма
    ) КАК СписокНоменклатуры
    ПОМЕСТИТЬ ВТ_Товары
    ИЗ
    Документ.РасходнаяНакладная КАК РасходнаяНакладная
    ГДЕ
    РасходнаяНакладная.Ссылка = &Ссылка

    СГРУППИРОВАТЬ ПО
    РасходнаяНакладная.СписокНоменклатуры.(Номенклатура,
    Количество,
    Сумма),
    РасходнаяНакладная.СписокНоменклатуры.(Номенклатура)
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ОстаткиТоваровОстатки.Партия КАК Партия,
    ОстаткиТоваровОстатки.КоличествоОстаток КАК КоличествоОстаток,
    ОстаткиТоваровОстатки.СуммаОстаток КАК СуммаОстаток
    ИЗ
    ВТ_Товары КАК ВТ_Товары,
    РегистрНакопления.ОстаткиТоваров.Остатки(&МоментВремени, ) КАК ОстаткиТоваровОстатки
```
---
Первый запрос пакета перепиши

```1c
    ВЫБРАТЬ
    Т.Номенклатура КАК Номенклатура,
    Т.Количество КАК Количество,
    Т.Сумма КАК Сумма
    ПОМЕСТИТЬ ВТ_Товары
    ИЗ
    Документ.РасходнаяНакладная.СписокНоменклатуры КАК Т
    ГДЕ
    РасходнаяНакладная.Ссылка = &Ссылк
```
---
Первый запрос пакета перепиши

```1c
    ВЫБРАТЬ
    Т.Номенклатура КАК Номенклатура,
    Т.Количество КАК Количество,
    Т.Сумма КАК Сумма
    ПОМЕСТИТЬ ВТ_Товары
    ИЗ
    Документ.РасходнаяНакладная.СписокНоменклатуры КАК Т
    ГДЕ
    РасходнаяНакладная.Ссылка = &Ссылк
```
Как на форму элемента справочника Номенклатура добавить свою вкладку?
---
Это панель навигации. Она формируется автоматически из подчиненных справочников и регистров, в которых данный объект является ведущим измерением.
---
Как на форму элемента справочника Номенклатура добавить свою вкладку?
Так вкладку или ссылку?
---
Это панель навигации. Она формируется автоматически из подчиненных справочников и регистров, в которых данный объект является ведущим измерением.
Здравствуйте. Я начинающий. Буду работать в сфере 1с объектного моделирования или нет, не знаю, сложно пока все. Но интересно. Причем у меня проблемы в основном с банальным незнанием основ кода, как обращаться к данным таблиц, и тд. всяким поиском по кодам и наименованием. Поэтому скажу, также как все, банальную фразу:" Сильно не пинайте".
Создаю свою базу, для возможного расширения деятельности жены. Пока она работает сама на себя, в своем частном кабинете, но все возможно, тем более эту сферу, через нее, знаю хорошо.
Создал "Журнал Записи" (скрин. "Общий вид")
Сначала хотел создать планировщик для одного сотрудника по реквизиту выбора "Сотрудник" (тип Справочник.Сотрудник.) Рис 1.
Но потом все таки решил сделать общий для всех сотрудников работающих в текущий день.
Планировщик "Расписание" прикрепил к документу "Предварительная запись".
По двойному клику перехожу в создание новой "предварительной записи". и туда передаю данные по времени начала, конца услуги и выбранного сотрудника.
 Если Планировщик одного сотрудника, то там все банально (рис.Передача данных)
Парам.Вставить("Сотрудник",Объект.Сотрудник)
а вот если в общем расписании(Планировщик) выделяешь время у сотрудника, то как здесь "кодить" мне не понятно. лазил по коду по подсказкам в инете, но так и не разобрался. Как сюда измерение вставить (Сотрудника) для передачи на форму "Предварительная запись"?
Парам.Вставить("Сотрудник",...............................);
 Буду рад помощи.
---
Всем спасибо за участие. Ответ нашел.
Процедура РасписаниеПередСозданием(Элемент, Начало, Конец, Значения, Текст, СтандартнаяОбработка)

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

код для параметра передачи данных имени сотрудника из Планировщика на другую форму :

Сотрудник = Значения.Получить("Сотрудники");
 Парам.Вставить("Сотрудник",Сотрудник);
---
Всем спасибо за участие. Ответ нашел.
Процедура РасписаниеПередСозданием(Элемент, Начало, Конец, Значения, Текст, СтандартнаяОбработка)

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

код для параметра передачи данных имени сотрудника из Планировщика на другую форму :

Сотрудник = Значения.Получить("Сотрудники");
 Парам.Вставить("Сотрудник",Сотрудник);
Можно ли показывать поля на форме в зависимости от выбора значения первого поля? Если да, то как?
---
Можно. При изменение первого поля прописать

```1c
    Если Объект.Поле1 = ТакоеТоЗначение Тогда
    Элементы.Поле2.Видимость = Ложь;
    Иначе
    Элементы.Поле2.Видимость = Истина;
    КонецЕсли
```
---
Можно. Обработчик события ПриИзменении() первого поля.
---
Можно. При изменение первого поля прописать

```1c
    Если Объект.Поле1 = ТакоеТоЗначение Тогда
    Элементы.Поле2.Видимость = Ложь;
    Иначе
    Элементы.Поле2.Видимость = Истина;
    КонецЕсли
```
Здравствуйте
Я начинаю изучать 1с и мне дали задание
вывести единичную матрицу в сообщить", я это сделал на C# и как бы процесс понимаю
есть наброски(ниже)

```1c
    Массив = Новый Массив(10,10);
    Для i=0 по 10 Цикл
    Для j=0 по 10 Цикл
    Если i = j тогда
    Массив = 1;
    Иначе
    Массив = 0;
    КонецЕсли;
    Если i>j тогда
    Массив = 1;
    Иначе
    Массив = 0;
    КонецЕсли
    Конеццикла;
    Конеццикла;
    Для i = 0 по 10 цикл
    строка = ";
    Для j = 0 по 10 цикл
    Конеццикла;
    КонецЦикла;
```

Помогите пожалуйста, я просто не понимаю синтаксик
---
10х10 по диагонали единички, остальные нолики:

```1c
    Для сч = 0 по 9 Цикл
    Сообщить(Формат(pow(10,9-сч),"ЧЦ=10; ЧВН=; ЧГ=0"));
    КонецЦикла
```
---
```1c
    Н = 1;
    Пока Н <= 10 Цикл

    Ст = ";

    П = 1;
    Пока П <=10 Цикл

    Если П = Н Тогда
    Ст = Ст + "1";
    Иначе
    Ст = Ст + "0";
    КонецЕсли;

    П = П + 1;
    КонецЦикла;

    Сообщить(Ст);

    Н =Н + 1;
    КонецЦикла;
```
---
Что-то не похоже что делал на С#
```1c
    Массив = 1
```
 и
```1c
    Массив = 0
```
заставляют задуматься.
---
Нафига такие задания дают, оторванные от реальности.
---
Математику обычно преподают перельманы, оторванные от реальности.
Любят абстрактные задачи для тренировки мозгов.
---
Не задание, а забава. Решение в три строчки. А можно и в одну - в экран влезет )
---
Для j = 0 по 10 цикл
Конеццикла;

Это вообще что ? просто так ? )))
---
```1c
    Н = 1;
    Пока Н <= 10 Цикл

    Ст = ";

    П = 1;
    Пока П <=10 Цикл

    Если П = Н Тогда
    Ст = Ст + "1";
    Иначе
    Ст = Ст + "0";
    КонецЕсли;

    П = П + 1;
    КонецЦикла;

    Сообщить(Ст);

    Н =Н + 1;
    КонецЦикла;
```
---
а где добавить условие, чтобы до диагонали были 1, а после 0?
и наоборот
---
10х10 по диагонали единички, остальные нолики:

```1c
    Для сч = 0 по 9 Цикл
    Сообщить(Формат(pow(10,9-сч),"ЧЦ=10; ЧВН=; ЧГ=0"));
    КонецЦикла
```
---
Оригинально.
---
а где добавить условие, чтобы до диагонали были 1, а после 0?
и наоборот?
---
Ну сам додумай, тебе дали готовые решения. Их нужно только слегка модифицировать. В моем примере один знак добавить.
Коллеги, подскажите:
конфигурация БП3, на поддержке,
штатная печатная форма "Ведомость учета выдачи (МБ-7)" из документа "Передача материалов в эксплуатацию" - выходит частично заполнена (организация, дата заполнения документа). Остальные ячейки пустые.
Так бывает?
---
Разобрался. Эта ПФ используется при только при передачи спецодежды. При формировании ПФ есть запрос только по табличной части - Спецодежда. Нашел документ с передачей спецодежды - вся ПФ заполняется.
Надо писать ВПФ.
---
Возможно, документ, из которого вы пытаетесь печатать, не предназначен для вывода этой формы? Откуда печатаете?
---
из документа "Передача материалов в эксплуатацию". Команда на печать есть.
---
Спецодежду передаете?
---
инвентарь. Третья закладка на форме - "Инвентарь и хозяйственные принадлежности".
---
В документе все поля заполнены корректно, может на остатках нет?
---
А давно перестала работать форма, или не работала вообще ?
---
всё есть в наличии. Кроме того ведь даже ФИО не выводит на печать
---
ранее не использовали. Даже и не помнят - работала или нет.
Но ведь часть инфы выводится на печать...
---
Зайдите в макет печатной формы и проверьте реквизиты в полях. Если там все в порядке - попробуйте скинуть кэш.
---
в макете, в ячейках параметры все на месте.
Часть параметров ведь выходит на печать - наименование организации, дата документа....
---
Удалите базу из списка, а затем опять добавьте.
---
Разобрался. Эта ПФ используется при только при передачи спецодежды. При формировании ПФ есть запрос только по табличной части - Спецодежда. Нашел документ с передачей спецодежды - вся ПФ заполняется.
Надо писать ВПФ.
На форме есть реквизит, видимость включена, в коде нет отключения видимости, но фактически реквизит не отображается. Предполагаю, что это регулируется какой-то функциональной опцией... Как определить ?
---
Еще вариант через пункт контекстного меню "Поиск ссылок на объект"
---
в конфигураторе, на этом реквизите, правой кнопкой мышки, доп меню, там где Свойства, выше - Дополнительно
открывается панель, где на одной из закладок Функциональные опции с чекбоксами
крутите и ищите отмеченный,
если нашли, смотрите с чем связан, как правило с константой (другие варианты справочник, регистр сведений)
если не нашли, значит реквизит не рулится функциональной опцией, т.е. всегда используется
---
доп меню, там где Свойства, выше - Дополнительно - а можно скрин? я у себя такого не вижу.........
---
это может от платформы зависит... у меня 8.3.14
---
Еще вариант через пункт контекстного меню "Поиск ссылок на объект"
Как создать файл xml с помощью 1с8.3 не создавая пустой файл перед созданием объекта "ЗаписьXML", а именно инициировать запись, после чего заполнить (возможно) некий поток данными, а уже только лишь в результате записать эти данные на диск?
---
получите сначала строку ХМЛ, потом сохраните в файл

вот пример функции, возвращает ХМЛ строку

```1c
    Функция Сериализовать(ОбъектСериализации)
    ДеревоВОбъектеXDTO = СериализаторXDTO.ЗаписатьXDTO(ОбъектСериализации);
    МойXML = Новый ЗаписьXML;
    МойXML.УстановитьСтроку();
    ФабрикаXDTO.ЗаписатьXML(МойXML, ДеревоВОбъектеXDTO);
    Возврат МойXML.Закрыть();
    КонецФункции
```
---
получите сначала строку ХМЛ, потом сохраните в файл

вот пример функции, возвращает ХМЛ строку

```1c
    Функция Сериализовать(ОбъектСериализации)
    ДеревоВОбъектеXDTO = СериализаторXDTO.ЗаписатьXDTO(ОбъектСериализации);
    МойXML = Новый ЗаписьXML;
    МойXML.УстановитьСтроку();
    ФабрикаXDTO.ЗаписатьXML(МойXML, ДеревоВОбъектеXDTO);
    Возврат МойXML.Закрыть();
    КонецФункции
```
---
Немного усложнённый пример, долго не мог понять как применить , но потом понял что мне с него нужно уцепить "МойXML.УстановитьСтроку();". Получилось так: с клиента перехожу на сервер - на сервере создаю ЗаписьXML и выполняю метод УстановитьСтроку() для данной записи, после чего произвожу формирование xml при окончании которого закрываю запись (метод Закрыть()). В результате закрытия получаю строку xml, которую возвращаю на клиент на котором уже создаю текстовый файл в который записываю полученную строку, после чего сохраняю текстовый файл в формате .xml.