Имя: Пароль:
1C
1С v8
Выгрузка,подтверждение,очистка УзлаОбмена с использованием Web-сервиса
0 skupidom
 
29.05.18
17:01
Как реализовать выгрузку с использованием Web-сервиса?
Что в модуле Web-сервиса должно быть?
Выгрузка:
Функция GetData(Unit)
    
    ВозвращаемаяСтруктура = Новый Структура("ВыгружаемыеДанные,НомерОтправленного","",0);
    
    Если ПустаяСтрока(Unit) Тогда
        ДанныеДляОтправки = ПодготовитьДанныеДляОтправки(ВозвращаемаяСтруктура);
        Возврат ДанныеДляОтправки;
    КонецЕсли;
    
    УзелОбмена = ПланыОбмена.п_ВнешниеСистемы.НайтиПоНаименованию(Unit,Истина);
    
    Если Не ЗначениеЗаполнено(УзелОбмена) Тогда
        ДанныеДляОтправки = ПодготовитьДанныеДляОтправки(ВозвращаемаяСтруктура);
        Возврат ДанныеДляОтправки;
    КонецЕсли;
    
    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку();
    ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
    ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелОбмена);
    
    Попытка
        ИмяВременногоКаталога = КаталогВременныхФайлов() + "ВыгрузкаЗУП\";
        СоздатьКаталог(ИмяВременногоКаталога);
        
        ИмяФайлаВыгрузки     = ИмяВременногоКаталога + "ВыгрузкаЗП.xml";
        
        ИмяВременногоФайлаПравилОбмена = ИмяВременногоКаталога + "ПравилаОбмена.xml";
        //ДвоичныеПравила = Справочники.ПравилаОбменаСПрограммамиБухгалтерскогоУчета.БухгалтерияПредприятия16.Правила.Получить();
        //ДвоичныеПравила = Справочники.ПравилаОбменаСПрограммамиБухгалтерскогоУчета.п_УправлениеПроизводственнымПредприятием.Правила.Получить();
        ДвоичныеПравила = УзелОбмена.ПравилаОбмена.Правила.Получить();
        ДвоичныеПравила.Записать(ИмяВременногоФайлаПравилОбмена);
        
        // Получим Универсальную обработку обмена данными XML
        ОбработкаВыгрузки    = Обработки.УниверсальныйОбменДаннымиXML.Создать();
        ОбработкаВыгрузки.РежимОбмена = "Выгрузка";
        ОбработкаВыгрузки.ИмяФайлаОбмена = ИмяФайлаВыгрузки;
        ОбработкаВыгрузки.ИмяФайлаПравилОбмена = ИмяВременногоФайлаПравилОбмена;
        ОбработкаВыгрузки.ЗагрузитьПравилаОбмена();
        //УстановитьУзелПланаОбмена(ОбработкаВыгрузки.ТаблицаПравилВыгрузки.Строки, УзелОбмена);
        ОбработкаВыгрузки.ВыполнитьВыгрузку();
        
        ФайлВыгрузки = Новый Файл(ИмяФайлаВыгрузки);
        Если Не ФайлВыгрузки.Существует() Тогда
            ВозвращаемаяСтрока = "";
        Иначе
            ТекстовыйФайл = Новый ТекстовыйДокумент;
            ТекстовыйФайл.Прочитать(ИмяФайлаВыгрузки);
            ЗаписьЖурналаРегистрации("Данные выгружены в "+УзелОбмена.Код, УровеньЖурналаРегистрации.Информация, Метаданные.WebСервисы.ZupExchange);
            ВозвращаемаяСтрока = ТекстовыйФайл.ПолучитьТекст();
        КонецЕсли;
    Исключение
        ЗаписьЖурналаРегистрации("Данные не выгружены в "+УзелОбмена.Код, УровеньЖурналаРегистрации.Ошибка, Метаданные.WebСервисы.ZupExchange);
    КонецПопытки;
    
    ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелОбмена, ЗаписьСообщения.НомерСообщения);
    Пока ВыборкаИзменений.Следующий() Цикл КонецЦикла;
    ЗаписьСообщения.ЗакончитьЗапись();
    
    УдалитьФайлы(ИмяВременногоКаталога);
    ВозвращаемаяСтруктура.ВыгружаемыеДанные = ВозвращаемаяСтрока;
    ВозвращаемаяСтруктура.НомерОтправленного= УзелОбмена.НомерОтправленного;
    ДанныеДляОтправки = ПодготовитьДанныеДляОтправки(ВозвращаемаяСтруктура);
    
    Возврат ДанныеДляОтправки;
    
КонецФункции
1 DrShad
 
29.05.18
17:14
ты уверен что хочешь все это тягать через веб сервант?
2 skupidom
 
29.05.18
17:21
можно просто помочь?
3 DrShad
 
29.05.18
17:25
не стоит, поверь
4 FIXXXL
 
29.05.18
17:30
(0) в ДанныеДляОтправки сунь НомерОтправленного и сделай еще одну операцию веб-сервиса, которая в обратку примет номер и зачистит изменения
5 hhhh
 
29.05.18
17:55
(2) в web-сервисе это всё делается точно так же, как и не в web-сервисе. Чего вы прикалываетесь?