Консультация № 55508
15.09.2006, 07:31
0.00 руб.
0 2 2
Вопрос №54852
У меня не вопрос, а дополнение к ответам.
Цитирую:
---------
1с: Предприятие 8.0
Вопрос такой:
Я пишу выгрузку произвольного документа в txt - файл (чтобы его можно было, при необходимости, потом загрузить).
Допустим, СсылкаНаДокумент - это ссылка на выгружаемый документ.

Как мне сохранить в файл какой-нибудь реквизит документа, например Дата, Комментарий?
Какие операции для этого нужно использовать ?
Спасибо.
-----------

Приложение:
Вопрос №54852Текстовый файл ~~~~~~~~~~~ i Как выгрузить данные из справочника в текстовый файл? ---------------------------------------------------- Текст = Новый ТекстовыйДокумент; Выборка = Справочники.Номенклатура.Выбрать(); Пока Выборка.Следующий() Цикл Стр = СтрЗаменить(Выборка.Наименование, Символ(34), "%квч%"); Код = Строка(Выборка.Код) + Символ(34); Текст.ДобавитьСтроку(Код + Стр); КонецЦикла; Текст.Записать("c: emp ext.txt"); =============================== i Как загрузить данные из текстового файла? -------------------------------- Текст = Новый ТекстовыйДокумент; Текст.Прочитать("c: emp ext.txt"); Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл Стр = Текст.ПолучитьСтроку(НомерСтроки); Позиция = Найти(Стр, Символ(34; Код = Сред(Стр, 1, Позиция-1); прНаименование = Сред(Стр, Позиция + 1); Наименование = СтрЗаменить(прНаименование, "%квч%", Символ(34; Сообщить(Код + "-" + Наименование); КонецЦикла; Работа с текстом. Модель последовательного доступа Путь = "c: emp ext.txt"; Текст = Новый ЗаписьТекста(Путь, КодировкаТекста.UTF8); Выборка = Справочники.Номенклатура.Выбрать(); Пока Выборка.Следующий() Цикл Текст.ЗаписатьСтроку(Выборка.Наименование); КонецЦикла; Текст.Закрыть(); Путь = "c: emp ext.txt"; Текст = Новый ЧтениеТекста(Путь, КодировкаТекста.UTF8); Стр = Текст.ПрочитатьСтроку(); Пока Стр <> Неопределено Цикл Стр = Текст.ПрочитатьСтроку(); Сообщить(Стр); КонецЦикла; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ XML i Как из одной базы перенести документ в другую базу? ------------------------------------- // Выгрузить в файл xml. ЗаписьXML=Новый ЗаписьXML(); ЗаписьXML.ОткрытьФайл("c:doc.xml"); ЗаписьXML.ЗаписатьНачалоЭлемента("Root"); // Получить объект по ссылке. ВыгружаемыйОбъект=Документ.ПолучитьОбъект(); // С помощью средств сериализации записать объект в файл. ЗаписатьXML(ЗаписьXML,ВыгружаемыйОбъект); ЗаписьXML.ЗаписатьКонецЭлемента(); ЗаписьXML.Закрыть(); ЧтениеXML=Новый ЧтениеXML(); ЧтениеXML.ОткрытьФайл("c:doc.xml"); // Текущим становится элемент Root. ЧтениеXML.Прочитать(); // Текущим становится элемент с документом. ЧтениеXML.Прочитать(); // Проверить сможет ли с данным значением "справиться" // система сериализации в данной базе. Если ВозможностьЧтенияXML(ЧтениеXML) Тогда // Получить ДокументОбъект.РеализацияТоваровУслуг ЗагружаемыйОбъект=ПрочитатьXML(ЧтениеXML); ЗагружаемыйОбъект.Записать(); КонецЕсли; ЧтениеXML.Закрыть(); ================================ Как можно сформировать XML-документ произвольной структуры? ------------------------------------------------ Запись = Новый ЗаписьXML; Запись.ОткрытьФайл(ПутьКФайлу); Запись.ЗаписатьОбъявлениеXML(); Запись.ЗаписатьНачалоЭлемента("Корневой"); Запись.ЗаписатьАтрибут("Справочник", "Номенклатура"); Запись.ЗаписатьКомментарий("Краткая информация о номенклатуре"); Выборка = Справочники.Номенклатура.ВыбратьИерархически(); Пока Выборка.Следующий() Цикл Если Выборка.ЭтоГруппа Тогда Продолжить; КонецЕсли; Запись.ЗаписатьНачалоЭлемента("Элемент"); Запись.ЗаписатьАтрибут("Код", Строка(Выборка.Код; Запись.ЗаписатьАтрибут("Артикул", Строка(Выборка.Артикул; Запись.ЗаписатьТекст(Выборка.Наименование); Запись.ЗаписатьКонецЭлемента(); КонецЦикла; Запись.ЗаписатьКонецЭлемента(); Запись.Закрыть(); ================================ Как сформировать XML-документ в строку? --------------------------------------- Запись = Новый ЗаписьXML(); Запись.УстановитьСтроку(); Запись.ЗаписатьОбъявлениеXML(); Запись.ЗаписатьНачалоЭлемента("Корневой"); Запись.ЗаписатьАтрибут("Справочник", "Номенклатура"); Запись.ЗаписатьКомментарий("Краткая информация о номенклатуре"); Выборка = Справочники.Номенклатура.ВыбратьИерархически(); Пока Выборка.Следующий() Цикл Если Выборка.ЭтоГруппа Тогда Продолжить; КонецЕсли; Запись.ЗаписатьНачалоЭлемента("Элемент"); Запись.ЗаписатьАтрибут("Код", Строка(Выборка.Код; Запись.ЗаписатьАтрибут("Артикул", Строка(Выборка.Артикул; Запись.ЗаписатьТекст(Выборка.Наименование); Запись.ЗаписатьКонецЭлемента(); КонецЦикла; Запись.ЗаписатьКонецЭлемента(); Стр = Запись.Закрыть(); Сообщить(Стр); ========================================= Как можно обмениваться данными, используя XML-сериализацию через файлы других форматов? ---------------------------------------- ЗаписьXML = Новый ЗаписьXML(); ЗаписьXML.УстановитьСтроку(); Данные = СсылкаНаДокумент.ПолучитьОбъект(); ЗаписатьXML(ЗаписьXML, Данные); ТекстСообщения = ЗаписьXML.Закрыть(); Текст = Новый ТекстовыйДокумент; Текст.УстановитьТекст(ТекстСообщения); Текст.Записать(ПутьКФайлу); Текст = Новый ТекстовыйДокумент; Текст.Прочитать(ПутьКФайлу); ЧтениеXML = Новый ЧтениеXML(); ЧтениеXML.УстановитьСтроку(Текст.ПолучитьТекст(; Если ВозможностьЧтенияXML(ЧтениеXML) Тогда Данные = ПрочитатьXML(ЧтениеXML); Данные.Записать(); КонецЕсли; Как можно загрузить XML документ произвольной структуры? Чтение = Новый ЧтениеXML; Чтение.ОткрытьФайл(ПутьКФайлу); Пока Чтение.Прочитать() Цикл // Прочитать "структурные части" элементов. // Проверить, какая часть элемента - текущая. Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда ИмяУзла = Чтение.Имя; Сообщить("--" + ИмяУзла); // Атрибуты элементов можно читать только если текущая часть - // начало элемента Пока Чтение.ПрочитатьАтрибут() Цикл // Прочитать данные узла атрибута. ТипУзла = Чтение.ТипУзла; Имя = Чтение.Имя; Значение = Чтение.Значение; // Обработать полученные значения. КонецЦикла; ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда // В примере просто выводим текст в окно сообщений. Сообщить("Текст:" + Чтение.Значение); ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда // В примере просто выводим признак конца элемента // в окно сообщений Сообщить("--Конец:" + Чтение.Имя); КонецЕсли; КонецЦикла; DBF-файлы i Как можно построить выгрузку-загрузку посредством файлов DBF? БД = Новый XBase; БД.Поля.Добавить("CODE", "S", 5); БД.Поля.Добавить("NAME", "S", 40); БД.СоздатьФайл(Путь + "start.dbf", Путь + "index.cdx"); БД.Индексы.Добавить("IDXCODE", "CODE"); ФлИБД = БД.СоздатьИндексныйФайл(Путь + "index.cdx"); БД.АвтоСохранение = Истина; Выборка = Справочники.Номенклатура.ВыбратьИерархически(); Пока Выборка.Следующий() Цикл БД.Добавить(); БД.CODE = Выборка.Код; БД.NAME = Выборка.Наименование; КонецЦикла; БД.ЗакрытьФайл(); БД = Новый XBase; БД.ОткрытьФайл(Путь + "start.dbf", Путь + "index.cdx"); БД.ТекущийИндекс = БД.Индексы.IDXCODE; Пока БД.Следующая() Цикл Сообщить(БД.CODE); Сообщить(БД.NAME); КонецЦикла; БД.ЗакрытьФайл();

Обсуждение

Неизвестный
15.09.2006, 08:12
общий
это ответ
Здравствуйте, Лазурко Владимир!
Спасибо за вопрос:))
Неизвестный
15.09.2006, 08:35
общий
это ответ
Здравствуйте, Лазурко Владимир!

В следующий раз, пожалуйста, оставляйте дополнение в мини-форуме вопроса (когда достигнете 5-го класса) либо отправляйте его лично автору вопроса.
Форма ответа