Имя: Пароль:
1C
1С v8
Web-сервисы получение ответа и очистка
0 skupidom
 
25.05.18
13:48
Коллеги,
требуется создать web-сервис,через который получать ответ по загрузке данных и очистке файла выгрузки.
Что написать в процедурах в модуле web-сервиса:
GetData и ClearData.

Это выгрузка:
Функция GetData(Unit)
                ВозвращаемаяСтруктура = Новый Структура("ВыгружаемыеДанные,НомерОтправленного","",0);
                
                Если ПустаяСтрока(Unit) Тогда
                               ДанныеДляОтправки = ПодготовитьДанныеДляОтправки(ВозвращаемаяСтруктура);
                               Возврат ДанныеДляОтправки;
                КонецЕсли;
                
                УзелОбмена = ПланыОбмена.п_ВнешниеСистемы.НайтиПоНаименованию(Unit,Истина);
                
                Если Не ЗначениеЗаполнено(УзелОбмена) Тогда
                               ДанныеДляОтправки = ПодготовитьДанныеДляОтправки(ВозвращаемаяСтруктура);
                               Возврат ДанныеДляОтправки;
                КонецЕсли;
                
                ЗаписьXML = Новый ЗаписьXML;
                ЗаписьXML.УстановитьСтроку();
                ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
                ЗаписьСообщения.НачатьЗапись(ЗаписьXML, УзелОбмена);
                
                Попытка
                               ИмяВременногоКаталога = КаталогВременныхФайлов() + "ВыгрузкаЗУП\";
                               СоздатьКаталог(ИмяВременногоКаталога);
                              
                               ИмяФайлаВыгрузки     = ИмяВременногоКаталога + "ВыгрузкаЗП.xml";
                              
                               ИмяВременногоФайлаПравилОбмена = ИмяВременногоКаталога + "ПравилаОбмена.xml";
                               //ДвоичныеПравила = Справочники.ПравилаОбменаСПрограммамиБухгалтерскогоУчета.БухгалтерияПредприятия16.Правила.Получить();
                               //ДвоичныеПравила = Справочники.ПравилаОбменаСПрограммамиБухгалтерскогоУчета.п_УправлениеПроизводственнымПредприятием.Правила.Получить();
                               ДвоичныеПравила = УзелОбмена.ПравилаОбмена.Правила.Получить();
                               ДвоичныеПравила.Записать(ИмяВременногоФайлаПравилОбмена);
                              
                               // Получим Универсальную обработку обмена данными XML
                               ОбработкаВыгрузки    = Обработки.УниверсальныйОбменДаннымиXML.Создать();
                               ОбработкаВыгрузки.РежимОбмена = "Выгрузка";
                               ОбработкаВыгрузки.ИмяФайлаОбмена = ИмяФайлаВыгрузки;
                               ОбработкаВыгрузки.ИмяФайлаПравилОбмена = ИмяВременногоФайлаПравилОбмена;
                               ОбработкаВыгрузки.ЗагрузитьПравилаОбмена();
                               //УстановитьУзелПланаОбмена(ОбработкаВыгрузки.ТаблицаПравилВыгрузки.Строки, УзелОбмена);
                               ОбработкаВыгрузки.ВыполнитьВыгрузку();
                              
                               ФайлВыгрузки = Новый Файл(ИмяФайлаВыгрузки);
                               Если Не ФайлВыгрузки.Существует() Тогда
                                               ВозвращаемаяСтрока = "";
                               Иначе
                                               ТекстовыйФайл = Новый ТекстовыйДокумент;
                                               ТекстовыйФайл.Прочитать(ИмяФайлаВыгрузки);
                                               ЗаписьЖурналаРегистрации("Данные выгружены в "+УзелОбмена.Код, УровеньЖурналаРегистрации.Информация, Метаданные.WebСервисы.ZupExchange);
                                               ВозвращаемаяСтрока = ТекстовыйФайл.ПолучитьТекст();
                                КонецЕсли;
                Исключение
                               ЗаписьЖурналаРегистрации("Данные не выгружены в "+УзелОбмена.Код, УровеньЖурналаРегистрации.Ошибка, Метаданные.WebСервисы.ZupExchange);
                КонецПопытки;
                
                ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(УзелОбмена, ЗаписьСообщения.НомерСообщения);
                Пока ВыборкаИзменений.Следующий() Цикл КонецЦикла;
                ЗаписьСообщения.ЗакончитьЗапись();
                
                УдалитьФайлы(ИмяВременногоКаталога);
                ВозвращаемаяСтруктура.ВыгружаемыеДанные = ВозвращаемаяСтрока;
                ВозвращаемаяСтруктура.НомерОтправленного= УзелОбмена.НомерОтправленного;
                ДанныеДляОтправки = ПодготовитьДанныеДляОтправки(ВозвращаемаяСтруктура);
                Возврат ДанныеДляОтправки;
КонецФункции

Функция ПодготовитьДанныеДляОтправки(СтруктураДанных)
                ЗаписьXML = Новый ЗаписьXML;
                ЗаписьXML.УстановитьСтроку();
                СериализаторXDTO.ЗаписатьXML(ЗаписьXML, СтруктураДанных);
                Возврат ЗаписьXML.Закрыть();
КонецФункции
1 DrShad
 
25.05.18
13:50
хвастаешься?
2 skupidom
 
25.05.18
15:03
получить ответ о загруженных изменениях с очисткой как написать ?
3 stix2010
 
25.05.18
15:15
Передать строку, структуру, ТЗ не?
4 skupidom
 
25.05.18
15:27
ClearData в модуле Web-сервиса что должно быть?
5 stix2010
 
25.05.18
15:57
(4) Это ты нас спрашиваешь? Удаляй то, что тебе надо, пиши информацию в возвращаемую структуру.
6 skupidom
 
26.05.18
00:13
можно пример кода с текстом и сообщениями
7 Cyberhawk
 
26.05.18
00:48
Студенты со своими заданиями заполонили мисту!
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн