Написании Выгрузки и Загрузки Данных используя Универсальный обмен данными в формате XML Написании обработок для выгрузки и загрузки данных используя методы обработки "Универсальный обмен данными в формате xml"
Принцип работы:
При изменении даты в форме, табличное поле заполняется документами за
выбранную дату.
Сами правила обмена были вставлены в обработку как макет с типом "Двоичные данные".
При ВЫГРУЗКЕ используется код:
Код 1C v 8.х Процедура ДействияФормыВыгрузка(Кнопка)
ДиалогФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
ДиалогФайла.Фильтр = "Файл данных (*.xml)|*.xml";
ДиалогФайла.ПолноеИмяФайла = "Retail_"+СтрЗаменить(Формат(Дата,"ДФ=dd.MM.yyyy"),".","-");
Если ДиалогФайла.Выбрать() Тогда
ИмяФайла = ДиалогФайла.ПолноеИмяФайла;
Попытка
ВыгрузитьДанные(ИмяФайла);
ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайла);
ДвоичныеДанные.Записать(ИмяФайла);
Исключение
Предупреждение("Внешний файл не сохранен
|"+ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецПроцедуры
// процедура выгрузки
Процедура ВыгрузитьДанные(ИмяФайлаОбмена)
Обработка=Обработки.УниверсальныйОбменДаннымиXML.Создать();
Обработка.РежимОбмена="Выгрузка";
ВремФайл = ПолучитьИмяВременногоФайла("xml");
МакетПравилОбмена = ПолучитьМакет("ПравилаВыгрузки");
МакетПравилОбмена.Записать(ВремФайл);
Обработка.ИмяФайлаПравилОбмена = ВремФайл;//ФайлПравилОбмена;
Обработка.ЗагружатьДанныеВРежимеОбмена = Истина;
Обработка.ЗаписыватьРегистрыНаборамиЗаписей = Истина;
Обработка.ЗапоминатьЗагруженныеОбъекты = Истина;
Обработка.ИспользоватьОтборПоДатеДляВсехОбъектов = Истина;
СписокДок = Новый Массив;
Для каждого Стр Из Документы Цикл
Если НЕ Стр.Флаг Тогда
Продолжить;
КонецЕсли;
СписокДок.Добавить(Стр.Реализация);
КонецЦикла;
Обработка.ДатаНачала = Дата;
Обработка.ДатаОкончания = КонецДня(Дата);
Обработка.ВыгружатьТолькоРазрешенные = Истина;
Обработка.ИмяФайлаОбмена = ИмяФайлаОбмена;
Обработка.ТипУдаленияРегистрацииИзмененийДляУзловОбменаПослеВыгрузки = 0; // 0 - не снимать регистрацию, 1 - снимать регистрацию
Обработка.ЗагрузитьПравилаОбмена();
Обработка.Параметры.Вставить("Документы",СписокДок);
Обработка.ВыполнитьВыгрузку();
КонецПроцедуры
Отбор по документам осуществляется с помощью параметра "Документы", описанного в правилах обмена.
При ЗАГРУЗКЕ используем следующий код:
Код 1C v 8.х ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
ОбработкаОбмена.ИмяФайлаОбмена = ФайлЗагрузки;
ОбработкаОбмена.РежимОбмена = "Загрузка";
ОбработкаОбмена.ОткрытьФайлЗагрузки(Истина);
ОбработкаОбмена.АрхивироватьФайл = Ложь;;
ОбработкаОбмена.ВыполнитьЗагрузку();
ОбработкаОбмена = Неопределено;
Посмотрите по этой теме:
Обработка - Универсальный обмен данными в формате XML
Автоматическая выгрузка / загрузка данных используя Универсальный обмен данными в формате XML и Регламентное Задание
Автоматизация обмена данных используя обработку "Универсальный обмен данными в формате XML" Категория:
Обработки Процедура заполняет WORD шаблон из СпискаЗначений Заполняет Вордовский шаблон из СпискаЗначений
Вставляется в виде обрабтки. При открытии передается СЗ первым значением идет WORD, в строковом представлеии наименование файла шаблона. Затем идентификаторы закладок (поля) в тексте шаблона - в представлении что подставить.
Сперва хотел сделать что-то универсальное Ворд-Ексель, а потом передумал. Отого такой первый параметр в списке значений
Код 1C v 7.x Процедура ПриОткрытии()
Перем Закладка, ТектВывода, сз;
СтатусВозврата(0);
сз = Форма.Параметр;
ФайлШаблон = ""; ОЛЕ_Объект = "";
Если ТипЗначенияСтр(сз)<>"СписокЗначений" Тогда
Сообщить("Для формирования документа передайте подготовленный список значений", "!!!"); Возврат;
ИначеЕсли сз.РазмерСписка()=0 Тогда
Сообщить("Для формирования документа передайте подготовленный список значений", "!!!"); Возврат;
Иначе
ФайлШаблон = сз.ПолучитьЗначение(1, ОЛЕ_Объект);
Если ВРег(ОЛЕ_Объект) <> "WORD" Тогда
Сообщить("OLE объект "+ОЛЕ_Объект+" не поддерживается", "!!!"); Возврат;
КонецЕсли;
Если ФС.СуществуетФайл(КаталогИБ()+"Шаблоны" + ФайлШаблон) = 0 Тогда
Сообщить("Нет файла - шаблона " + ФайлШаблон, "!!!"); Возврат;
КонецЕсли
КонецЕсли;
OLE = СоздатьОбъект(ОЛЕ_Объект+".Application");
OLE.Documents.Add(""""+КаталогИБ()+"Шаблоны" + ФайлШаблон + """");
Для Индекс = 2 по сз.РазмерСписка() цикл
ТекстВывода = сз.ПолучитьЗначение(Индекс, Закладка);
//Если OLE.ActiveDocument.Bookmarks(СокрЛП(Закладка)).Exists()=0 Тогда // Проверяем - существует ли закладка
// Сообщить("Не найдена закладка "+Закладка,"!!!" ); Продолжить;
//КонецЕсли;
Попытка
OLE.ActiveDocument.Bookmarks(СокрЛП(Закладка)).Select(); //выделим выбранную закладку
OLE.Selection.TypeText(СокрЛП(ТекстВывода)); // выведем на место выделения текст
Исключение
Сообщить("Не найдена закладка "+Закладка,"!!!" );
КонецПопытки;
КонецЦикла;
OLE.Visible=1; /// видимость - True
OLE.ActiveDocument.Activate(); /// активизировать!!!
OLE=""; /// ссылочку прибить
КонецПроцедуры
Автор:
GrayT Категория:
Работа с Microsoft Office и OpenOffice